- Breaking Change
atoms: removecreatedAttimestamp tracking (#150) - Breaking Change
atoms,react,stores: makesignal.getreactive and addsignal.getOnce(#151)
- Breaking Change
atoms,core,machines,react,stores: implement proxies, signals, and mapped signals (#147)
immer: import namedproduceexport from immer (#146)atoms,core,immer,machines,react: remove package.json production exports (#137) (#142)
react: relax React peer dep for now - use>=18(#125)
- Breaking Change
core: remove hierarchy config (#94) - Breaking Change
atoms,immer,machines,react: implement ExternalNode class and make nodes the keys of edge maps (#120) - Breaking Change
atoms,core,immer,machines,react: make instances valid graph nodes and jobs (#114)
react: only rerunuseAtomSelectoreffect on cache id change (#110)
react: restoreuseAtomSelectormounted state when swapping inline refs (#108)
This version contains huge fixes for useAtomSelector that are only fully compatible with React 19 or with React 18 when not using StrictMode. It's recommended to wait for React 19 before upgrading to this version.
atoms,react: optimizeuseAtomSelectorfor React 19 (#106)
react: makeuseAtomSelectorwait for idle time to do failsafe cleanup (#113)
atoms: disableecosystem.find()fuzzy search if params are passed (#103)
atoms,react: useAtomSelector - subscribe to the new selector before destroying the old (#101)
core: allow store-extending classes to have array state types (#96)core: always notify effects subscribers when a hydration has metadata (#98)
This is mostly a republish of the last v1.2.0 release candidate. Looks good 👍
react: improve types for AtomProvider (#92)
react: handle unstable inline selector results inuseAtomSelector(#88)
This release featured a near-full rewrite of the useAtomInstance and useAtomSelector hooks. They should be stable, but we're releasing a release candidate version first to verify
atoms,react: remove uSES usages and support strict mode (#86)
atoms: give atom instances access to their real template type (#81)atoms: makeecosystem.find()do a fuzzy search when no exact match (#79)
Republish of v1.1.0-rc.0 with no additional changes since the release candidate looks good
atoms: addrunOnInvalidateoption toinjectPromise(#69)atoms: deprecateinjectInvalidate(preferinjectSelf) (#70)core: micro-optimize iterating and removing store subscribers (#76)
atoms: make query atoms retain data (#68)core: point core package's field to the correct file (#75)react: fix multiple renderers cross-window React warning (#72)atoms,immer,machines: prevent injectors from consuming hydrations (#71)
atoms: addrunOnInvalidateoption toinjectPromise(#69)atoms: deprecateinjectInvalidate(preferinjectSelf) (#70)core: micro-optimize iterating and removing store subscribers (#76)
atoms: make query atoms retain data (#68)core: point core package's field to the correct file (#75)react: fix multiple renderers cross-window React warning (#72)atoms,immer,machines: prevent injectors from consuming hydrations (#71)
atoms: let the WeakMap clean up selector ref keys (#66)atoms: make data retention consistent acrossinjectPromiseandapi(promise)(#65)
Zedux got a big speed boost! In practice it won't matter much, but Zedux should now perform even better on stress tests and benchmarks. Enjoy!
atoms: allow setting promise to undefined in AtomApi (#58)atoms: improve graph perf by removing unnecessaryObject.keys()calls (#52)atoms: improve non-TS.getInstance()usage by throwing helpful errors (#59)atoms,react: make atoms package fully framework agnostic (#51)
atoms: improve atom searching (#57)atoms: make it easier for TS to infer AtomApi types from chained methods (#49)react: make React imports specify file extensions in esm builds (#53)react: update React peer dep to a minimum of v16.3.0 (#54)atoms,react: improve overloads of atom-template-accepting functions for paramless atoms (#50)atoms,core,immer,machines,react: fix package.json export order (#56)
atoms: improve id generation; prevent selector with args cache reuse edge case (#46)react: useuseSyncExternalStoreshim for now (#45)
Zedux's API is officially stable. We have several additions planned, but no breaking changes for any user-facing or documented APIs in the pipeline for the near future. It's go time!
- Breaking Change
atoms:defaultTtl->atomDefaults.ttl(#38) - Breaking Change
atoms: implement AtomApiGenerics type map and all its helpers (#40) - Breaking Change
react: AtomInstanceProvider -> AtomProvider (#32) - Breaking Change
react: makeinstance.invalidate()a normal method (#29) - Breaking Change
react: move auto-batching fromapi()toinjectCallback()(#31) - Breaking Change
react: reuse names that can be shared between instances & selectors (#30) - Breaking Change
react: useAtomConsumer -> useAtomContext (#33) - Breaking Change
atoms,immer: don't exportcreateInjector- replace withinjectSelf(#35) - Breaking Change
atoms,core,machines: break out state machines into their own@zedux/machinespackage (#36) - Breaking Change
atoms,core,immer,machines,react: internalTypes -> zeduxTypes (#37) atoms,react: break the atomic model into its own @zedux/atoms package (#34)
- Breaking Change
atoms:defaultTtl->atomDefaults.ttl(#38) - Breaking Change
atoms: implement AtomApiGenerics type map and all its helpers (#40) - Breaking Change
react: AtomInstanceProvider -> AtomProvider (#32) - Breaking Change
react: makeinstance.invalidate()a normal method (#29) - Breaking Change
react: move auto-batching fromapi()toinjectCallback()(#31) - Breaking Change
react: reuse names that can be shared between instances & selectors (#30) - Breaking Change
react: useAtomConsumer -> useAtomContext (#33) - Breaking Change
atoms,immer: don't exportcreateInjector- replace withinjectSelf(#35) - Breaking Change
atoms,core,machines: break out state machines into their own@zedux/machinespackage (#36) - Breaking Change
atoms,core,immer,machines,react: internalTypes -> zeduxTypes (#37) atoms,react: break the atomic model into its own @zedux/atoms package (#34)
react: export SelectorCache class (#14)react: make selectors trigger statusChanged mod events on init and destroy (#15)react: make timestamp generation easily overridable; fix statusChanged event order (#17)react: make useAtomConsumer log instead of throw an error when instance is Destroyedreact: simplify inline selector detection (#22)react: wrap scheduler run in try...finally; add handling for destroyed instances (#21)
react: make DEV mode React component id generation work in SpiderMonkey (#20)react: preventcontroller.abort()from isolating theabortfn (#27)react: remove dehydrated state generic from ssr atom config options for now (#16)react: restore Active status when an atom instance is revived (#13)core,react: improvestate.onandObservabletypes (#12)
react: make all stores of all atoms in the evaluation stack use the ecosystem's scheduler (#10)
Republish v0.5.8 with build cache issue fixed
react: make useAtomSelector rerender components when the selector value becomes undefined (#8)
core: exposedetailedTypeofandisPlainObjectfrom core packagecore: removeaddMetaandhasMeta
react: fixapi()Exports type defaultreact: fixapi()Promise type inference when returning result immediatelyreact: make EvaluationStack restore store scheduler context in all cases