NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #4512 most downloaded on npm
Simple, scalable state management.
Last release 1 months ago
19 Aug 2026
Release timing varies
gaps range from 1 weeks to 7 months
Nearly every release is documented
notes for 59 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
11 years old
264 releases · first in 2016
Fixed #186: Log a warning instead of an error if an exception is thrown in a derivation. Fixes issue where React Native would produce unusable error s
Reflect / InversifyJS decorators. @andykog@observable class properties are now owned by their instance again, meaning they will show up in Object.keys() and .hasOwnProperty @andykogFixed #328: Fixed exception when inspecting observable in onBecomeObserved
onBecomeObservedarray.find now returns undefined instead of null when nothing was found, behavior now matches the docs. (By @hellectronic)One column per quarter.
Fixed #327: spy not working with runInAction
Improved compatibility with JSON.stringify, removed incorrect deprecation message
whyRun:Usage:
whyRun()whyRun(Reaction object / ComputedValue object / disposer function)whyRun(object, "computed property name")whyRun is a small utility that can be used inside computed value or reaction (autorun, reaction or the render method of an observer React component)
and prints why the derivation is currently running, and under which circumstances it will run again.
This should help to get a deeper understanding when and why MobX runs stuff, and prevent some beginner mistakes.
This feature can probably be improved based on your feedback, so feel free to file issues with suggestions!
@observable is now always defined on the class prototypes and not in the instances. This means that @observable properties are enumerable, but won't appear if Object.keys or hasOwnProperty is used on a class instance.reaction as discussed in #278. The expression now needs to return a value and the side effect won't be triggered if the result didn't change. asStructure is supported in these cases. In contrast to MobX 2.2, effects will no longer be run if the output of the expression didn't change.isAction(fn) #290observable / extendObservable, it will not be converted into a computed property.toJS. Also members defined on prototypes which are enumerable are converted.when, autorun and autorunAsync now accept custom debug names (see #293, by @jamiewinder)runInAction, can be used to create on the fly actions (especially useful in combination with async/await, see #299useStrict(true) was invoked in combination with @observable attributes when using BabelJSON.stringify, removed incorrect deprecation message@action without params on a field@action on a fieldSee the release announcement for the full details of this release:
Introduced:
action / @actioninterceptspyreactionuseStricttoJSON was renamed to toJSobservable(asMap()) is the new idiomatic way to create mapswhen is now untracked, similar to `reaction.extras.trackTransations is deprecated, use spy insteaduntracked has been undeprecatedgetAtom, getDebugName, isSpyEnabled, spyReport, spyReportStart, spyReportEndextras.SimpleEventEmitteradded collection and removedCountobserve callback of computed properties in untracked mode.lib/mobx.umd.min.js for minified cdn builds, see #85autoruns created inside autoruns were not always kicked off. (mobx-react's observer was not affected). Please upgrade if you often use autorun.mobx.map, a list of entries is also acceptable.resetGlobalState is now part of the mobx.extras namespace, as it is useful for test setup, to restore inconsistent state after test failures.resetGlobalState now also resets the caches of createTransformer, see #163.$transformId property on transformed objects should be non-enumerable. Fixes #170.autorunAsync.observable(scalar) (see 143)expr no longer prints incorrect deprecated messages (see 143)mobx twice no longer fails.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →