MobX release notes, breaking changes, and upgrade notes.
Simple, scalable state management through reactive programming StackPulse turns upstream changelogs into scannable summaries with risky changes, deprecations, migration notes, and source links.
This patch release focuses on memory optimization for large, mostly unobserved state. It reduces memory usage through several targeted improvements in observer management and annotation handling.
affected
Users with large, mostly unobserved state may see reduced memory usage.
release_signals
+Memory optimizations for large, mostly unobserved state: exact-sized handler arrays, observer Set cleanup, shared default annotations, and skipped unobservation passes when nothing is pending.
This release focuses on improving cleanup of reactions from uncommitted observer renders, ensuring subscriptions are released while maintaining reactivity on retry. It also optimizes cleanup registration in environments with native finalization.
affected
Developers using mobx-react-lite in environments with suspended renders or native finalization may benefit from improved cleanup and performance.
release_signals
+Clean up reactions from uncommitted observer renders using timed fallback
+Defer cleanup registration to a shared microtask in environments with native finalization
This patch release includes TypeScript improvements and fixes for reaction disposers and computed observable behavior. The most notable change is extending the IReactionDisposer interface with Disposable.
affected
Developers using MobX's reaction disposers or computed observables may be affected by fixes.
action
Update to mobx@7.0.4 to benefit from fixes and improvements.
release_signals
+Extended `IReactionDisposer` with `Disposable` interface for better compatibility
This release introduces TypeScript types for `configs.recommended` and `flatConfigs.recommended`, enabling better type support when used in TypeScript `eslint.config.ts` files.
affected
Developers using TypeScript with `eslint-plugin-mobx` will benefit from improved type support.
action
Update to version 0.1.0 to take advantage of the new TypeScript types.
release_signals
+Added TypeScript types for `configs.recommended` and `flatConfigs.recommended`
This patch release introduces performance optimizations for Node.js and Bun environments by adding a `node` export condition, reducing unnecessary `NODE_ENV` checks during imports.
affected
Node.js and Bun users importing MobX may see performance improvements.
action
Update to mobx@7.0.3 to benefit from the performance improvements in Node.js and Bun environments.
release_signals
+Added a `node` export condition to optimize module resolution for Node.js and Bun environments, improving performance by reducing per-call `NODE_ENV` checks.
This release introduces performance optimizations for Node and Bun environments by adding a `node` export condition, reducing unnecessary `NODE_ENV` checks and ensuring a single mobx instance when mixing `import` and `require`.
affected
Developers using mobx-react in Node or Bun environments may see performance improvements.
action
Update to mobx-react@10.0.2 for improved performance in Node/Bun environments.
release_signals
+Added a `node` export condition to optimize module resolution for Node and Bun environments, reducing per-call `NODE_ENV` checks.
This release focuses on performance improvements and bug fixes. It optimizes `NODE_ENV` evaluation in ESM bundles for faster observable writes in dev mode and fixes `ObservableSet.replace` to avoid spurious events and preserve iteration order.
affected
Developers using `ObservableSet.replace` may be affected by changes in iteration order.
action
Review usage of `ObservableSet.replace` if your code relies on specific iteration order.
release_signals
-`ObservableSet.replace` no longer reorders the set to match its argument. Surviving values retain their original position, and new values are appended.
+Optimized `NODE_ENV` evaluation in ESM bundles for faster observable writes in dev mode.
This release focuses on performance optimizations for the ESM bundles, specifically improving observable write speeds in development mode for Node ESM, vitest, and SSR environments.
affected
Developers using mobx-react in Node ESM, vitest, or SSR environments will see performance improvements in development mode.
action
Update to mobx-react@10.0.1 to benefit from performance improvements in development mode.
release_signals
+Performance optimization: `NODE_ENV` is evaluated once at module scope in ESM bundles, leading to ~10x faster observable writes in dev mode for certain environments.
This release focuses on performance optimizations and bug fixes, including improvements to `onBecomeObserved` behavior, faster primitive handling in `deepEnhancer`, and reduced memory usage for unobserved atoms.
affected
Developers using MobX for state management, especially those with large stores or performance-sensitive applications, will benefit from these optimizations and fixes.
action
Upgrade to version 7.0.1 to benefit from performance improvements and bug fixes.
release_signals
+Improved `onBecomeObserved` behavior for computed values
This major release introduces MobX 7, mobx-react-lite 5, and mobx-react 10, focusing on modern runtime and decorator model cleanup. It removes deprecated APIs, reduces bundle sizes, and requires MobX 7 and React 18 or later.
affected
Developers using MobX, mobx-react-lite, or mobx-react with older versions of MobX or React are affected.
action
Upgrade to MobX 7, mobx-react-lite 5, and mobx-react 10, and ensure React 18 or later is used.
MobX 7 is a cleanup release focused on modern runtime and decorator model, removing legacy APIs and reducing bundle sizes. It requires React 18+ and drops support for non-Proxy fallbacks and legacy decorators.
affected
Users of MobX 6 or earlier, especially those using legacy decorators, non-Proxy fallbacks, or removed React binding APIs, are affected.
action
Upgrade to MobX 7 and update your code to use the new named exports and modern React binding APIs.
release_signals
-Removed ES5/non-proxy fallback; MobX now always uses Proxy-backed observable objects and arrays.
This release introduces MobX 7, mobx-react-lite 5, and mobx-react 10, focusing on modern runtime and decorator model cleanup. It removes deprecated compatibility paths, reduces bundle sizes, and requires MobX 7 and React 18 or later.
affected
Users of MobX, mobx-react-lite, and mobx-react who rely on deprecated APIs, ES5/non-proxy fallback, or legacy decorators are affected.
action
Update your code to use the new named exports and APIs, and ensure compatibility with MobX 7 and React 18 or later.
release_signals
-Removed ES5/non-proxy fallback; `configure({ useProxies: ... })` and `{ proxy: false }` options are no longer supported.
-
mobx@6.16.1mediumdeprecationfeatureJun 8, 2026
mobx@6.16.1
This patch release fixes a Stage 3 `@computed` override issue and removes outdated Flow typechecker support artifacts.
affected
Developers using `@computed` overrides with `super` delegation or relying on Flow typechecker artifacts are affected.
action
Update to version 6.16.1 to resolve the `@computed` override issue and clean up outdated artifacts.
This release introduces lazy initialization for `@computed` and `@observable accessor` decorators, significantly reducing memory usage and construction time for unused properties. It also fixes a regression with `isComputedProp` and adds `getOrInsert` methods to `ObservableMap` for better compatibility with ESNext `Map` typings.
affected
Developers using `@computed` or `@observable accessor` decorators in large-scale applications will benefit from reduced memory usage and faster construction times.
action
Upgrade to version 6.16.0 to take advantage of the performance improvements and compatibility enhancements.
release_signals
+Lazy initialization for `@computed` decorator, reducing memory and construction time
+Lazy initialization for `@observable accessor` decorator, further optimizing memory and construction time
+
mobx-react@9.2.2lowfeatureMay 25, 2026
mobx-react@9.2.2
This release addresses a minor issue related to Babel-generated React version parsing output to avoid Rolldown invalid PURE annotation warnings.
affected
Developers using Babel with Rolldown may encounter fewer warnings related to PURE annotations.
action
Update to version 9.2.2 to resolve Rolldown PURE annotation warnings.
+Recommended public React binding surface includes `observer`, `Observer`, `useLocalObservable`, `enableStaticRendering`, and `isUsingStaticRendering`.
migration_steps5 steps
01Use `React.createContext` directly instead of `Provider`, `inject`, and `MobXProviderContext`.
02Dispose reactions in `componentWillUnmount` or return cleanup functions from `useEffect` instead of using `disposeOnUnmount`.
03Use `useLocalObservable` instead of `useLocalStore`.
04Synchronize values from props into local observable state explicitly instead of using `useAsObservableSource`.
05Use `enableStaticRendering` instead of `useStaticRendering`.