What problem does it solve? In Solid, a createEffect re-runs whenever any signal it reads updates, even if the value is unchanged. When a parent list rebuilds its entries, every child receives new prop objects with identical values, and effects that read those props directly re-run wastefully — restarting fetches, playheads, timers, and subscriptions dozens of times for nothing. ## Core Features & Use Cases - Prop memoization rule: Route every prop an effect reads through a createMemo first, so the effect only wakes when the value actually changes (memos propagate on ===). - One memo per primitive: Keep separate memos per value rather than one memo over an object, since object memos produce new references and propagate as freely as the raw prop. - Scope guidance: Distinguishes stateful effects (fetches, playheads, canvases, timers, subscriptions) where memoization matters from cheap signal-writing effects and JSX reads where reading props directly is fine. - Use Case: A box of thirty creature squares rebuilds when one is picked; without memoized props, every square's effect reloads its sprite sheet thirty times, making the whole box visibly flinch. ## Quick Start Review this component's createEffect calls and wrap any props they read in createMemo so the effects only re-run when the underlying values actually change.