# What changed in @preact/signals-core

> 11 changes in @preact/signals-core 1 from its official release notes, upgrade guides and advisories: 1 breaking, 2 new APIs and options. Each one cited. Sources checked 2026-10-27. HTML: https://unstale.sh/npm/@preact/signals-core/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## @preact/signals-core 1

### Breaking changes

- 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. (1.14.4) — [release notes](https://github.com/preactjs/signals/releases/tag/%40preact/signals-core%401.14.4)

### New APIs and options

- Wraps a function to run batched and untracked, so updates are batched into a single notification. (1.13.0) — [release notes](https://github.com/preactjs/signals/releases/tag/%40preact/signals-core%401.13.0)
- Creates reactive model classes that encapsulate signals, computed values, and actions; methods are batched and untracked, and captured effects are disposed via Symbol.dispose. (1.13.0) — [release notes](https://github.com/preactjs/signals/releases/tag/%40preact/signals-core%401.13.0)

### Performance

- Optimizes bundle size, reducing the size of applications that include the package. (1.14.3) — [release notes](https://github.com/preactjs/signals/releases/tag/%40preact/signals-core%401.14.3)

### Fixes and other changes

- The batch ends when a self-disposing effect's cleanup throws. (1.14.5) — [release notes](https://github.com/preactjs/signals/releases/tag/%40preact/signals-core%401.14.5)
- Captured effects are disposed when a createModel factory throws, preventing them from being left undisposed. (1.14.5) — [release notes](https://github.com/preactjs/signals/releases/tag/%40preact/signals-core%401.14.5)
- Class prototype methods, including toString and toJSON, are wrapped as actions; those actions are not auto-bound. (1.14.5) — [release notes](https://github.com/preactjs/signals/releases/tag/%40preact/signals-core%401.14.5)
- Computed values no longer stay stale after a batch reverts a signal to its original value; subscriber versions are fast-forwarded instead of reused. (1.14.4) — [release notes](https://github.com/preactjs/signals/releases/tag/%40preact/signals-core%401.14.4)
- Nested object methods returned from createModel are wrapped so composed models keep action batching semantics without manual action wrappers. (1.14.1) — [release notes](https://github.com/preactjs/signals/releases/tag/%40preact/signals-core%401.14.1)
- Model and effect() types no longer hard-require ESNext.Disposable in consumer tsconfigs. (1.14.1) — [release notes](https://github.com/preactjs/signals/releases/tag/%40preact/signals-core%401.14.1)
- 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. (1.14.0) — [release notes](https://github.com/preactjs/signals/releases/tag/%40preact/signals-core%401.14.0)
