Signals / Fine-Grained Reactivity
Reactive values that track who reads them, so a change updates the exact computations and DOM bindings that depend on it.
See it
What it is
A signal is a value with dependency tracking. When reactive code reads it, the runtime records that dependency; when the signal changes, only the computations and DOM bindings that read it are scheduled again. The idea goes back to KnockoutJS observables in 2010. Solid made the fine-grained model central, while Vue refs and Preact Signals use closely related ideas.
Reach for signals when updates are frequent or the component tree is a poor map of which tiny outputs depend on which values. Computed values build on signals, and effects handle the small amount of work that must leave the reactive graph for an external system.
Gotcha: tracking happens when and where a value is read. Copying a signal's current value into a plain variable outside a reactive scope can sever the connection, and mutating nested data without using the framework's setter may notify nobody. Keep reads inside tracked computations and update through the provided API.
Ask AI for it
Build this live price board in Solid using createSignal for prices, createMemo for each derived percentage change, and createEffect only for document.title synchronization. Read each accessor inside the JSX binding that depends on it, update through the signal setter, and show with counters that changing one price does not rerun unrelated row computations.