npm / @preact/signals-core
@preact/signals-core
What changed in @preact/signals-core 1, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-27.
1 breaking2 new APIs and options1 performance7 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli init@preact/signals-core 111 changes
Breaking changes 1
Effects created inside untracked() or action() callbacks within a createModel() factory are no longer disposed with the model; use the returned disposer to clean them up manually.
New APIs and options 2
Wraps a function to run batched and untracked, so updates are batched into a single notification.
Creates reactive model classes that encapsulate signals, computed values, and actions; methods are batched and untracked, and captured effects are disposed via Symbol.dispose.
Performance 1
Optimizes bundle size, reducing the size of applications that include the package.
Fixes and other changes 7
The batch ends when a self-disposing effect's cleanup throws.
Captured effects are disposed when a createModel factory throws, preventing them from being left undisposed.
Class prototype methods, including toString and toJSON, are wrapped as actions; those actions are not auto-bound.
Computed values no longer stay stale after a batch reverts a signal to its original value; subscriber versions are fast-forwarded instead of reused.
Nested object methods returned from createModel are wrapped so composed models keep action batching semantics without manual action wrappers.
Model and effect() types no longer hard-require ESNext.Disposable in consumer tsconfigs.
When a signal changes from A to B to A in a batch, dependent updates are not triggered if the batched dependencies end at an equal value.