NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #4568 most downloaded on npm
A tiny (351 bytes) state manager for React/Preact/Vue/Svelte with many atomic tree-shakable stores
Last release 9 days ago
25 Sep 2026
Release timing varies
gaps range from 8 days to 7 months
Nearly every release is documented
notes for 55 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
65 releases · first in 2021
One column per quarter.
Fixed listenKeys for deepMap (by @tiagovilasboas ).
listenKeys for deepMap (by @tiagovilasboas).batch() (by @psd-coder).listenKeys with non-string map keys (by @lprnmns).listenKeys to use Object.is (by @lprnmns).effect() on an error during subscription (by @lprnmns).Fixed using Store#eq in computed (by @lprnmns ).
Fixed types (by @edloidas ).
Fixed listenKeys when old value is not available (by @edloidas ).
Added eq and eqKey for custom value comparison (by @psd-coder ).
eq and eqKey for custom value comparison (by @psd-coder).listenKeys deep paths on whole store set (by @ankit1324).Fixed batch() conflict with builder (by @psd-coder ).
batch() conflict with builder (by @psd-coder).Fixed task() for synchronous callbacks (by @rajanpanth ).
task() for synchronous callbacks (by @rajanpanth).Added batch to run one re-render on many stores changes (by @psd-coder ).
batch to run one re-render on many stores changes (by @psd-coder).listenKeys (by @ifo123).getPath throwing on null intermediate values (by @chatman-media).listenKeys on the whole set changes (by @LeSingh1).computed cache on cleanStores (by @ATOM00blue).Added globalThis.nanostoresGlobal to sync stores in JS bundles (by @afurm ).
globalThis.nanostoresGlobal to sync stores in JS bundles (by @afurm).Deprecated async computed in favor of @nanostores/async (by @Fryuni ).
Fixed types by projects without DOM types (by @YevheniiKotyrlo ).
DOM types (by @YevheniiKotyrlo).Deprecated deepmap() in favor of @nanostores/deepmap (by @Lifo123 ).
deepmap() in favor of @nanostores/deepmap (by @Lifo123).- Fixed types.
Added effect() (by @psd-coder).
effect() (by @psd-coder).getKey() (by @gismya).Record (by @gismya).Fixed subscribeKeys types (by @gismya).
subscribeKeys types (by @gismya).Fixed types of computed() with task() inside.
computed() with task() inside.* Fixed map types (by @gismya).
- Fixed types.
Mutate only change paths in deepMap() (by @russelldavis).
deepMap() (by @russelldavis).Store#notify() back to public API (by @gismya).subscribeKeys() (by @gismya).setByKey() export (by @yhdgms1).computed() performance (by @russelldavis).Fixed incorrect previous value when listening deep store (by @euaaaio).
Fixed old value when listening for deep deepMap (by @euaaaio).
deepMap (by @euaaaio).Fixed passing old value to onNotify callback (by @euaaaio).
onNotify callback (by @euaaaio).Removed action(). It was useful only for logger which is not very popular. But action() API is complicated, and it makes state manager more complicate
action(). It was useful only for logger which is not very popular. But action() API is complicated, and it makes state manager more complicated.mapCreator().oldValue to subscribe/listen (by @gismya).computed support with task (by @btakita).computed (by @dkzlv).StoreValues and Task types to exports.Fixed nested arrays support in deepMap (by Mikita Taukachou).
deepMap (by Mikita Taukachou).Fixed deepMap and computed (by Eduard Aksamitov).
deepMap and computed (by Eduard Aksamitov).Fixed support for synchronous action for onAction (by Eduard Aksamitov).
onAction (by Eduard Aksamitov).actionId export (by Eduard Aksamitov).Fixed getPath and setPath exports (by Dan Kozlov).
getPath and setPath exports (by Dan Kozlov).Fixed computed() with undefined input (by Bogdan Chadkin).
computed() with undefined input (by Bogdan Chadkin).Nothing published for this version
Marked deprecated types by TSDoc.
Nothing published for this version
Fixed onStop() and onMount() conflict.
onStop() and onMount() conflict.Fixed infinite loop on some diamond dependencies (by Roman Gorev).
Fixed diamond dependency problem (by Roman Gorev).
Fixed calling get() in onMount() and onStart().
get() in onMount() and onStart().Nothing published for this version
Nothing published for this version
Fixed types for atom initial value (by @itsMapleLeaf).
Fixed computed regression (by Brian Takita).
computed regression (by Brian Takita).Fixed wrong listeners order after store.off() (by Brian Takita).
store.off() (by Brian Takita).Fixed multiple onMount listeners support.
onMount listeners support.Fixed onMount support in computed stores.
onMount support in computed stores.Fixed AnySyncTemplate type (by Eduard Aksamitov).
AnySyncTemplate type (by Eduard Aksamitov).Fixed Atom#notify() types (by Aleksandr Slepchenkov).
Atom#notify() types (by Aleksandr Slepchenkov).- Fixed deprecate types.
- Fixed deprecate types.
- Fixed docs.
- Fixed action() types.
action() types.Fixed docs (by Eduard Aksamitov).
- Reduced package size.
Nothing published for this version
Fixed Vue re-render (by Eduard Aksamitov).
Fixed optional keys in map store.
- Fixed package size.
Fixed map store default type (by Alexey Berezin).
Fixed key type in map store methods (by Alexey Berezin).
Fixed changedKey type in map store (by Aleksandr Slepchenkov).
changedKey type in map store (by Aleksandr Slepchenkov).Fixed cleaning effects in tests.
- Fixed ending effect on error. - Fixed docs (by @droganov).
- Fixed React batch types.
batch types.Your coding agent can read these notes before it upgrades. Set up the MCP server →