mobx@7.0.6
-
4b1c8d3ea2b3de1a2ae852fd5631e33d28a82b15#4721 Thanks @giaBaoJS! - fix: assigninglengthon an observable array now respectsintercept. A cancelled or modified splice used to be overridden by a direct write to the backing array, which truncated it without notifying observers and made the next mutation throw "Modification exception". A non-integerlengthnow throws "Out of range" before touching the array. -
60be47cab0926d12f22449ec6c809fb5ec6601c4#4716 Thanks @AcEKaycgR! - fix:observable.box(array)no longer warns underobservableRequiresReactionwhen a spy is active. Thecreatespy event now reportsnewValueas the value itself rather than a string, matching the declaredIBoxDidChangetype. Previously the constructor stringified the value, and stringifying an observable array reads itslength, which counted as an observable read outside a reactive context. Spy listeners that relied onnewValuebeing a string forcreateevents will now receive the raw value. -
3551aeb051ff922717b03c4fbc04a6b98f7f3b3e#4717 Thanks @breken-ai! - Remove thesignalabort listener when a reaction disposes itself (r.dispose()or a resolvedwhen), so long-livedAbortSignals no longer accumulate listeners that keep disposed reactions in memory -
7e4e27dbfbf0b56770a11e9cba913e5d49c0c6f8#4718 Thanks @breken-ai! -observe/spyaddevents of an observable Set now report the value that was actually stored (e.g. the observable copy of a plain object), matching ObservableMap and observable arrays, soset.has(change.newValue)holds
mobx@7.0.5
105d66d73529812a8eddc0847891e7f0c574e129#4713 Thanks @xaviergonz! - perf: reduce memory used by large, mostly unobserved state.intercept/observehandler arrays are allocated at their exact size, an observable's internal observersSetis released once its last observer leaves, observable objects created with the samedeep/autoBindoptions share one default annotation instead of allocating their own, andendBatch()skips the unobservation pass when nothing is pending.
mobx-react-lite@5.1.0
-
f78cb1607283e26ddae508b457eabcde295212a2#4709 Thanks @kubk! - Clean up reactions from uncommitted observer renders using the existing timed fallback even when native finalization is available. This releases subscriptions retained by suspended renders while preserving reactivity on retry.In environments with native finalization, defer cleanup registration to a shared microtask so synchronous subscriptions avoid native registrations and timers.
mobx@7.0.4
-
7d85a68fb7e449650535aba22e47ce4d21bfbc10#4592 Thanks @VimHax! - Extend IReactionDisposer with Disposable -
01211a698b64ea94de8e5f276ff8235fcf8ddf96#4700 Thanks @kubk! - FixonBecomeObservednot firing for dependencies gained when an observed computed is recomputed inside an action. -
6e0a03ef74750b3040c76d3ecc14c4adf202b95a#4710 Thanks @kubk! - Use TypeScript's built-inNoInferutility instead of a local compatibility alias.
eslint-plugin-mobx@0.1.0
f7af259df425280aebeb0ccdb13350ba6d24270a#4699 Thanks @rakleed! - Add TypeScript types forconfigs.recommendedandflatConfigs.recommended, so they're typed when used from a TypeScripteslint.config.ts.
mobx@7.0.3
6f002b8e543ca39d3ee23681e28848d7f1724fae#4696 Thanks @gesposito! - perf: add anodeexport condition that routes Node and Bun to the existingdist/index.jsentry, which picks the prebaked development or production CJS build once at require time.importing mobx in Node no longer executes the env-agnosticdist/mobx.mjswith per-callNODE_ENVchecks, and mixingimportandrequirein one Node app now yields a single mobx instance.
mobx-react@10.0.2
-
6f002b8e543ca39d3ee23681e28848d7f1724fae#4696 Thanks @gesposito! - perf: add anodeexport condition that routes Node and Bun to the existingdist/index.jsentry, which picks the prebaked development or production CJS build once at require time.importing mobx in Node no longer executes the env-agnosticdist/mobx.mjswith per-callNODE_ENVchecks, and mixingimportandrequirein one Node app now yields a single mobx instance. -
Updated dependencies [
6f002b8e543ca39d3ee23681e28848d7f1724fae]:- mobx-react-lite@5.0.3
mobx-react-lite@5.0.3
6f002b8e543ca39d3ee23681e28848d7f1724fae#4696 Thanks @gesposito! - perf: add anodeexport condition that routes Node and Bun to the existingdist/index.jsentry, which picks the prebaked development or production CJS build once at require time.importing mobx in Node no longer executes the env-agnosticdist/mobx.mjswith per-callNODE_ENVchecks, and mixingimportandrequirein one Node app now yields a single mobx instance.
mobx@7.0.2
-
ec1b708026c1578e1c1f6c7bd90be18b26f7ce85#4695 Thanks @gesposito! - perf: evaluateNODE_ENVonce at module scope in the env-agnostic esm bundles (dist/<pkg>.esm.jsanddist/<pkg>.mjs) instead of at every__DEV__call site.process.envis an exotic object in Node, so each check performed a real environment lookup on hot paths; consumers that execute these files as-is (Node ESM, vitest, SSR) see roughly 10x faster observable writes in dev mode. All env-set artifacts and bundler output are unchanged. -
6d8b5fa6c7596d7e5b16e55e3121d81c0c5bb21a#4672 Thanks @chatman-media! - FixObservableSet.replaceemitting spuriousdelete/addevents (and triggering reactions) for values that are unchanged. It now only firesdeletefor removed values andaddfor newly added ones, mirroringObservableMap.replace.Note: because
replaceno longer clears and re-adds every value, the iteration order afterreplacechanges in a (subtle but observable) way. Surviving values now keep their original relative position and newly added values are appended, instead of the whole set being reordered to match the argument. For example,set(["a", "b", "c"]).replace(["d", "b", "a"])previously iterated asd, b, a, and now iterates asa, b, d. This is arguably the more correct behavior (unchanged values are genuinely unchanged), but if you relied onreplacereordering the set to match its argument, you may need to adjust.
mobx-react@10.0.1
-
ec1b708026c1578e1c1f6c7bd90be18b26f7ce85#4695 Thanks @gesposito! - perf: evaluateNODE_ENVonce at module scope in the env-agnostic esm bundles (dist/<pkg>.esm.jsanddist/<pkg>.mjs) instead of at every__DEV__call site.process.envis an exotic object in Node, so each check performed a real environment lookup on hot paths; consumers that execute these files as-is (Node ESM, vitest, SSR) see roughly 10x faster observable writes in dev mode. All env-set artifacts and bundler output are unchanged. -
Updated dependencies [
ec1b708026c1578e1c1f6c7bd90be18b26f7ce85]:- mobx-react-lite@5.0.2