# Jotai changelog > Primitive, atom-based state management for React. - Vendor: Poimandres - Category: Frameworks & Libraries - Official site: https://jotai.org - Tracked by: What's New (https://whatsnew.fyi/product/jotai) - Harvested from: GitHub (pmndrs/jotai) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## Releases ### v3.0.0-alpha.0 - Date: 2026-07-20 - Version: v3.0.0-alpha.0 - Original notes: https://github.com/pmndrs/jotai/releases/tag/v3.0.0-alpha.0 - Permalink: https://whatsnew.fyi/product/jotai/releases/v3.0.0-alpha.0 - Labels: Pre-release - **removed** — Drop support for old TypeScript versions - **removed** — Drop UMD and SystemJS builds - **removed** — Drop support for old Node versions - **removed** — Drop CommonJS build, package is now ES modules only - **removed** — Drop support for old React versions - **removed** — Drop atomFamily API - **removed** — Drop loadable API - **removed** — Drop jotai/babel module - **removed** — Drop setSelf function - **changed** — Switch to module-first package structure - **changed** — Use NODE_ENV directly instead of build-time replacement - **changed** — Drop Rollup bundler in favor of alternative build tooling - **changed** — Target ES2020 in TypeScript compilation - **added** — Add useAtomValueRaw and useAtomValueRawSync hooks - **changed** — Redesign building blocks API https://github.com/pmndrs/jotai/blob/v3/docs/guides/migrating-to-v3.mdx ##### What's Changed * [v3] drop old TS by @dai-shi in https://github.com/pmndrs/jotai/pull/3336 * [v3] drop UMD and SystemJS builds by @dai-shi in https://github.com/pmndrs/jotai/pull/3338 * [v3] drop old node by @dai-shi in https://github.com/pmndrs/jotai/pull/3339 * [v3] module-first package by @dai-shi in https://github.com/pmndrs/jotai/pull/3340 * [v3] drop CJS by @dai-shi in https://github.com/pmndrs/jotai/pull/3341 * [v3] use NODE_ENV directly by @dai-shi in https://github.com/pmndrs/jotai/pull/3342 * [v3] drop rollup by @dai-shi in https://github.com/pmndrs/jotai/pull/3344 * [v3] drop old React by @dai-shi in https://github.com/pmndrs/jotai/pull/3345 * [v3] es2020 target by @dai-shi in https://github.com/pmndrs/jotai/pull/3346 * [v3] drop atomFamily by @dai-shi in https://github.com/pmndrs/jotai/pull/3347 * [v3] drop loadable by @dai-shi in https://github.com/pmndrs/jotai/pull/3348 * [v3] drop jotai/babel by @dai-shi in https://github.com/pmndrs/jotai/pull/3349 * [v3] drop setSelf by @dai-shi in https://github.com/pmndrs/jotai/pull/3350 * [v3] useAtomValueRaw & useAtomValueRawSync by @dai-shi in https://github.com/pmndrs/jotai/pull/3351 * [v3] redesign buildingBlocks by @dai-shi in https://github.com/pmndrs/jotai/pull/3358 * [v3] migration guide by @dai-shi in https://github.com/pmndrs/jotai/pull/3359 **Full Changelog**: https://github.com/pmndrs/jotai/compare/v2.20.2...v3.0.0-alpha.0 ### v2.20.2 - Date: 2026-07-14 - Version: v2.20.2 - Original notes: https://github.com/pmndrs/jotai/releases/tag/v2.20.2 - Permalink: https://whatsnew.fyi/product/jotai/releases/v2.20.2 - **fixed** — Subscriber not notified after nested store.set and sub/unsub inside a write This release fixes a regression in some edge case introduced in v2.18.1. ##### What's Changed * fix(vanilla): subscriber not notified after nested store.set and sub/unsub inside a write by @dai-shi in https://github.com/pmndrs/jotai/pull/3354 **Full Changelog**: https://github.com/pmndrs/jotai/compare/v2.20.1...v2.20.2 ### v2.20.1 - Date: 2026-06-11 - Version: v2.20.1 - Original notes: https://github.com/pmndrs/jotai/releases/tag/v2.20.1 - Permalink: https://whatsnew.fyi/product/jotai/releases/v2.20.1 - **fixed** — Apply reviver when parsing subscription updates in atomWithStorage - **fixed** — Throw stackoverflow errors synchronously in internals This release includes a few small fixes. ##### What's Changed * fix(vanilla/utils/atomWithStorage): apply reviver when parsing subscription updates by @chatman-media in https://github.com/pmndrs/jotai/pull/3326 * fix(internals): throw stackoverflow errors synchronously by @dai-shi in https://github.com/pmndrs/jotai/pull/3330 ##### New Contributors * @15MariamS made their first contribution in https://github.com/pmndrs/jotai/pull/3321 * @sapphi-red made their first contribution in https://github.com/pmndrs/jotai/pull/3327 * @DucMinhNe made their first contribution in https://github.com/pmndrs/jotai/pull/3331 * @chatman-media made their first contribution in https://github.com/pmndrs/jotai/pull/3326 **Full Changelog**: https://github.com/pmndrs/jotai/compare/v2.20.0...v2.20.1 ### v2.20.0 - Date: 2026-05-06 - Version: v2.20.0 - Original notes: https://github.com/pmndrs/jotai/releases/tag/v2.20.0 - Permalink: https://whatsnew.fyi/product/jotai/releases/v2.20.0 - **changed** — Avoid getInternalBuildingBlock function in internals - **changed** — Refactor Rev3 type narrowing for onMount hooks - **fixed** — Guard atomOnInit hook with hasOnInit - **changed** — Use lazy hooks in ensureAtomState for new atom state This release improves performance in high-throughput scenarios. Huge kudos to @dmaskasky! ##### What's Changed * breaking(internals): avoid getInternalBuildingBlock function by @dai-shi in https://github.com/pmndrs/jotai/pull/3293 * refactor(internals): Rev3 type narrowing for onMount hooks by @dmaskasky in https://github.com/pmndrs/jotai/pull/3311 * fix(internals): guard atomOnInit hook with hasOnInit by @dmaskasky in https://github.com/pmndrs/jotai/pull/3312 * refactor(internals): lazy hooks in ensureAtomState for new atom state by @dmaskasky in https://github.com/pmndrs/jotai/pull/3313 **Full Changelog**: https://github.com/pmndrs/jotai/compare/v2.19.1...v2.20.0 ### v2.19.1 - Date: 2026-04-07 - Version: v2.19.1 - Original notes: https://github.com/pmndrs/jotai/releases/tag/v2.19.1 - Permalink: https://whatsnew.fyi/product/jotai/releases/v2.19.1 - **fixed** — Use symbol index signature in atomWithObservable to avoid Symbol.observable type reference - **changed** — Replace nextDeps with prevDeps in internals - **changed** — Reduce recomputeInvalidatedAtoms overhead for better performance - **changed** — Reduce flushPending overhead for better performance - **fixed** — Check if atom has dependencies before doing mountDependencies work for better performance - **fixed** — Check if atom has onMount property before queueing processOnMount callback for better performance - **changed** — Prefer no-any in types This release includes several small refactors to improve performance. ##### What's Changed * fix(vanilla/utils/atomWithObservable): use symbol index signature to avoid 'Symbol.observable' type reference by @sukvvon in https://github.com/pmndrs/jotai/pull/3274 * refactor(internals): replace nextDeps with prevDeps by @dmaskasky in https://github.com/pmndrs/jotai/pull/3278 * refactor(internals): reduce recomputeInvalidatedAtoms overhead (performance) by @dmaskasky in https://github.com/pmndrs/jotai/pull/3284 * refactor(internals): reduce flushPending overhead (performance) by @dmaskasky in https://github.com/pmndrs/jotai/pull/3285 * fix(internals): check if atom has dependencies before doing mountDependencies work (performance) by @dmaskasky in https://github.com/pmndrs/jotai/pull/3290 * fix(internals): check if atom has onMount property before queueing processOnMount callback (performance) by @dmaskasky in https://github.com/pmndrs/jotai/pull/3291 * refactor(types): prefer no-any by @dai-shi in https://github.com/pmndrs/jotai/pull/3304 ##### New Contributors * @aio39 made their first contribution in https://github.com/pmndrs/jotai/pull/3277 **Full Changelog**: https://github.com/pmndrs/jotai/compare/v2.19.0...v2.19.1 ### v2.19.0 - Date: 2026-03-24 - Version: v2.19.0 - Original notes: https://github.com/pmndrs/jotai/releases/tag/v2.19.0 - Permalink: https://whatsnew.fyi/product/jotai/releases/v2.19.0 - **deprecated** — Deprecate delay option in react - **changed** — Improve store.get performance when atoms are not mutated We improved the core to enable atom caching for performance for some cases. ##### What's Changed * fix(react): deprecate delay option by @dai-shi in https://github.com/pmndrs/jotai/pull/3264 * feat: improve store.get performance when atoms are not mutated by @dmaskasky in https://github.com/pmndrs/jotai/pull/3265 thanks to @edkimmel ##### New Contributors * @composite made their first contribution in https://github.com/pmndrs/jotai/pull/3268 **Full Changelog**: https://github.com/pmndrs/jotai/compare/v2.18.1...v2.19.0 ### v2.18.1 - Date: 2026-03-09 - Version: v2.18.1 - Original notes: https://github.com/pmndrs/jotai/releases/tag/v2.18.1 - Permalink: https://whatsnew.fyi/product/jotai/releases/v2.18.1 - **fixed** — Subscriber not notified when derived read calls store.set - **fixed** — Add Symbol.observable type support to ObservableLike - **changed** — Use optional chaining for storage.subscribe in atomWithStorage This release fixes a regression introduced in v2.12.1, which affects an uncommon edge case. ##### What's Changed * fix(vanilla): subscriber not notified when derived read calls store.set by @dmaskasky in https://github.com/pmndrs/jotai/pull/3245 * fix(vanilla/utils/atomWithObservable): add 'Symbol.observable' type support to 'ObservableLike' by @sukvvon in https://github.com/pmndrs/jotai/pull/3253 * refactor(vanilla/utils/atomWithStorage): use optional chaining for 'storage.subscribe' by @sukvvon in https://github.com/pmndrs/jotai/pull/3260 **Full Changelog**: https://github.com/pmndrs/jotai/compare/v2.18.0...v2.18.1 ### v2.18.0 - Date: 2026-02-19 - Version: v2.18.0 - Original notes: https://github.com/pmndrs/jotai/releases/tag/v2.18.0 - Permalink: https://whatsnew.fyi/product/jotai/releases/v2.18.0 - **deprecated** — Deprecate jotai/babel in favor of jotai-babel - **fixed** — Keep reactivity if get is called in a different atom - **changed** — Simplify promise handling We moved `jotai/babel` to `jotai-babel`. ##### Migration Guide If you use the preset: ```diff { - "presets": ["jotai/babel/preset"] + "presets": ["jotai-babel/preset"] } ``` If you use a plugin: ```diff { - "plugins": ["jotai/babel/plugin-debug-label"] + "plugins": ["jotai-babel/plugin-debug-label"] } ``` ##### What's Changed * refactor(internals): simplify promise handing by @dai-shi in https://github.com/pmndrs/jotai/pull/3232 * feat: deprecate jotai/babel in favor of jotai-babel by @dai-shi in https://github.com/pmndrs/jotai/pull/3236 * fix: keep reactivity if get is called in a different atom by @dai-shi in https://github.com/pmndrs/jotai/pull/3241 ##### New Contributors * @pavan-sh made their first contribution in https://github.com/pmndrs/jotai/pull/3238 **Full Changelog**: https://github.com/pmndrs/jotai/compare/v2.17.1...v2.18.0 ### v2.17.1 - Date: 2026-02-04 - Version: v2.17.1 - Original notes: https://github.com/pmndrs/jotai/releases/tag/v2.17.1 - Permalink: https://whatsnew.fyi/product/jotai/releases/v2.17.1 - **fixed** — Fix wrong variance on the WritableAtom Result type parameter Small typing improvements. If you are using v2.16 or earlier, we recommend upgrading to the latest version. ##### What's Changed * fix(core/types): Wrong variance on the WritableAtom Result type parameter by @atomanyih in https://github.com/pmndrs/jotai/pull/3135 * chore: leftover with #3219 by @dai-shi in https://github.com/pmndrs/jotai/pull/3231 ##### New Contributors * @atomanyih made their first contribution in https://github.com/pmndrs/jotai/pull/3135 **Full Changelog**: https://github.com/pmndrs/jotai/compare/v2.17.0...v2.17.1 ### v2.17.0 - Date: 2026-01-28 - Version: v2.17.0 - Original notes: https://github.com/pmndrs/jotai/releases/tag/v2.17.0 - Permalink: https://whatsnew.fyi/product/jotai/releases/v2.17.0 - **deprecated** — loadable util is deprecated and will be removed in v3 - **removed** — remove unstable_onInit - **deprecated** — setSelf in the atom read function is deprecated and will be removed in v3 This release deprecates some features, which will be dropped in v3. ##### What's Changed * deprecate loadable util by @dai-shi in https://github.com/pmndrs/jotai/pull/3217 * breaking: remove unstable_onInit by @dai-shi in https://github.com/pmndrs/jotai/pull/3219 * deprecate setSelf in the atom read function by @dai-shi in https://github.com/pmndrs/jotai/pull/3220 **Full Changelog**: https://github.com/pmndrs/jotai/compare/v2.16.2...v2.17.0