unstale

npm / @preact/signals

@preact/signals

What changed in @preact/signals 2, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-20.

6 new APIs and options2 performance3 behavior and defaults1 tooling18 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli on npm

@preact/signals 230 changes

New APIs and options 6

  • The fallback prop can now be a function, avoiding eager evaluation when the collection has items.

    2.11.0release notes

  • The Preact and React adapters now export the ModelFactory type.

    2.10.1release notes

  • The fallback can now be a function, enabling lazy instantiation and avoiding eager evaluation, which matters when working with signals.

    2.10.0release notes

  • Adds an optional getKey prop for stable list reconciliation, fixing incorrect DOM reuse when items are removed or reordered.

    2.9.0release notes

  • Adds a hook for using Models in React and Preact components. It lazily creates the model, preserves its instance across re-renders, and disposes it when the component unmounts.

    2.7.0release notes

  • The when property of Show can be a function, so it does not have to be transformed into a boolean computed.

    2.5.0release notes

Performance 2

  • Checks whether the debug package is enabled only once, fixing a performance regression.

    2.5.1release notes

  • The changes to useComputed were reverted, favoring performance.

    2.4.0release notes

Behavior and default changes 3

  • The <For> component now accepts readonly arrays and signals containing readonly arrays.

    2.9.3release notes

  • The when of a For component can return a plain array.

    2.8.0release notes

  • useLiveSignal now accepts plain values.

    2.5.1release notes

Tooling 1

  • Signals created internally by the Preact adapter and useLiveSignal are named so debugging tools can identify them.

    2.10.0release notes

Fixes and other changes 18

  • Prevents rerunning a useSignalEffect for a component unmounted by the same update, avoiding an effect run against an unmounted component.

    2.11.3release notes

  • Component tracking now stops before Preact reconciles the returned VNode, preventing Signals read by DOM property getters from subscribing the parent component.

    2.11.2release notes

  • The auto-memoization heuristic no longer treats useContext as hook state, allowing context consumers to keep props-based render skipping.

    2.9.4release notes

  • Signal prop updaters are disposed when an element re-renders without signal props, preventing stale signals from overwriting DOM values.

    2.9.3release notes

  • Cached <For> children now reactively receive updated render-prop indexes after removals or reorders, preserving DOM and component identity.

    2.9.2release notes

  • Prop-binding effects write applied values back into rendered props so Preact's diff baseline stays in sync when it reuses a DOM node.

    2.9.2release notes

  • Fixes infinite recursion when tools such as Storybook traverse Signal props.

    2.8.2release notes

  • Re-mounting components now preserves DOM updaters correctly.

    2.8.1release notes

  • Scheduled effects no longer hijack the execution context.

    1.3.4, 2.7.1release notesrelease notes

  • Fixes an issue where unmounted vnodes could update with signals.

    1.3.3, 2.6.2release notesrelease notes

  • The For component now has a display name, making it identifiable by name in developer tools.

    2.6.1release notes

  • The Show component now has a display name, making it identifiable by name in developer tools.

    2.6.1release notes

  • Utility component types now accept ComponentChildren/ReactNodes as children and fallbacks.

    2.5.1release notes

  • The cached and non-cached shape is now the same.

    2.5.0release notes

  • The For cache is prevented from expanding infinitely.

    2.5.0release notes

  • aria/data attributes now stick around when going back to an empty string.

    2.4.0release notes

  • For now accounts for nested reactivity.

    2.4.0release notes

  • Show now accounts for nested reactivity.

    2.4.0release notes