NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #1171 most downloaded on pub.dev
MobX is a library for reactively managing the state of your applications. Use the power of observables, actions, and reactions to supercharge your Dart and Flutter apps.
Last release 27 days ago
11 Sep 2026
Release timing varies
gaps range from 1 weeks to 13 months
Most releases are documented
notes for 44 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
133 releases · first in 2018
FIX(mobx): fix analyzer infos on beta channel (super parameters + collection contains) (#1081).
FIX(mobx): fix analyzer infos on beta channel (super parameters + collection contains) (#1081).
FIX: upgrade SDK to 3.7.0 and use multiple underscore wildcards for unused parametersFeature/annotations update (#1062).
FEAT: improve reactivity performance and correctness with a new documentation gallery.
Fix custom-context ownership for observable futures and reaction/when effects. Reused and overlapping async actions now inherit each caller's zone, including binary callbacks.
Cancel scheduled reaction and when-timeout timers on disposal. Complete observable streams on source cancel-on-error, preserve error stacks, and handle empty and nullable stream results correctly.
Share list change notifications across cast views with lazy value casts, validate empty/reversed list ranges, and report the committed intercepted value to listeners. Promote all audit probes into the normal regression suite.
Reuse stable dependency arrays and reaction-wave buffers; avoid reflective invocation in runInAction and disabled-spy event allocations.
Filter observable lists in linear time, preserving reverse predicate order and original-index notifications. Predicate failures no longer leave partially filtered storage. Bulk map/set operations now batch reactions.
Fix dependency cleanup after resubscription, unintended dependencies from writes and lifecycle hooks, lifecycle listener self-disposal, cycle queue recovery, computed comparer error propagation, and per-context reaction error handlers.
Organize core regressions under test/regressions/ and benchmark correctness tests under test/benchmark/. Workloads in benchmark/workloads/ return typed results and follow normal formatting/static analysis.
Add native and release-Wasm performance suites with 35 locally maintained workloads, collection benchmarks, JSON comparison tooling, and CI smoke checks. Upgrade the development test runner for Wasm support.
One column per quarter.
fix(mobx): fix analyzer infos on beta channel (super parameters + col…
fix(mobx): fix analyzer infos on beta channel (super parameters + col…
use_super_parameters lint on the beta analyzer.fix: upgrade SDK to 3.7.0 and use multiple underscore wildcards for u…
fix: upgrade SDK to 3.7.0 and use multiple underscore wildcards for u…
Upgrading sdk and Analyzer fixes
FIX: update observableAlwaysNotEqual function signature to accept nullable Object parameters.
FIX: package upgrades, analysis issue fixes.
FIX: Observable.value setter (covariant) (#993).
FIX: stacktrace in computed (#988).
FIX: observableset and observablemap notify all listeners when one is added with fireimmediately true (#962).
FIX: revert #784 (#842).
FIX: ObservableStream.listen() should also keep observable values updated (#708).
FIX: Widgets failed to call super.dispose() (#334).
FIX: issue 62 (#64).
FEAT: add scheduler option to autorun and reaction (#979).
FEAT: add keepAlive to Computed (#976).
FEAT: Adds useEquatable for creating observables (#971).
FEAT: Adds custom equals for creating observables. (#907).
FEAT: Adds support for annotations (#904).
FEAT: Allow a custom equals parameter for ObservableStream (#771).
FEAT: Allow use custom context (#770).
Packages with breaking changes:
Packages with other changes:
FIX: package upgrades, analysis issue fixes.
useEquatable for creating observables (#971).equals for creating observables. (#907).REFACTOR: simplify constructors and update analysis exclusions.
scheduler to reaction and autorun to allow customizing the scheduler used to schedule the reaction. By [@amondnet]((https://github.com/amondnet).Nothing published for this version
- Upgrading packages and sdk
- Analyzer fixes
Fix Observable.value setter when class with operator ==(covariant) is used as a value
Fix preserving stacktrace in Computed and Reaction when exception thrown inside argument function
REFACTOR: export MultiReactionBuilder from flutter_mobx.dart (#946).
MultiReactionBuilder from flutter_mobx.dart (#946).MultiReactionBuilder widget (#917).keepAlive to Computed to avoid suspending computed values when they are not being observed by anything.pubspec.yaml updated to include homepage and topics
pubspec.yaml updated to include homepage and topicsAvoid unnecessary observable notifications of @observable Iterable or Map fields of Stores by @amondnet in #951
Make the change in 2.2.3 optional. If you want the use this behavior , modify @observable to @MakeObservable(useDeepEquality: true).
Make the change in 2.2.3 optional. If you want the use this behavior , modify @observable to
@MakeObservable(useDeepEquality: true).
useDeepEquality for creating observables by @amondnetReduces unnecessary iterations while using Iterables with addAll, insertAll, replaceRange, setAll and setRange methods. #942.
Iterables with addAll, insertAll, replaceRange, setAll and setRange methods. #942.Allows a reaction to be fired even if the value hasn't changed by @amondnet in #907
Observer is updated with the new Observer.withBuiltChild constructor, so you can exclude child branch from the re-rendering. - @subzero911 Observer.withBuiltChild, you should provide two parameters: builderWithChild and child:Observer.withBuiltChild(
builderWithChild: (context, child) => FooWidget(foo: foo, bar: child),
child: BarWidget(), // won't rebuild
),
Allow users to bypass observability system for performance by @fzyzcjy in #844
Allow users to bypass observability system for performance by @fzyzcjy in #844
Fix Reaction lacks toString, so cannot see which reaction causes the error by @fzyzcjy in #844
Add StackTrace to reactions in debug mode to easily spot which reaction it is by @fzyzcjy in #844
Breaking changes:
Avoid unnecessary observable notifications of @observable fields of Stores by @fzyzcjy in #844
Nothing published for this version
Nothing published for this version
Fix tests in dart 2.19 - @amondnet
Allow a custom equals parameter for ObservableStream - @amondnet
MultiReactionBuilder from flutter_mobx.dart by @amondnetObservableSet now uses Set to maintain order of iteration
ObservableSet now uses Set to maintain order of iterationObservableSet.linkedHashSetFrom() removed. Use ObservableSet() or ObservableSet.of() instead.Type aliases for primitive types.\ So instead of Observable you can now write ObservableInt.
Observable<int> you can now write ObservableInt..asObservable() extension for primitive types.var name = ''.asObservable(); // infers ObservableString
var counter = 0.asObservable(); // infers ObservableInt
toggle() method for ObservableBool. Lets you toggle the internal value of ObservableBoolvar lights = true.asObservable();
lights.toggle(); // now it has a value of false
Changes made by @subzero911Nothing published for this version
Fixed unnecessary ActionSpyEvents being triggered for AsyncAction
shortened 1.asObservable() to 1.obs() (same for boolean, double, String) - @subzero911
fixes:
1.asObservable() to 1.obs() (same for boolean, double, String) - @subzero9112.0.7- revert #784 - @amondnet
Fixed issue in showing issue tracker link on pub.dev
Moved the version into its own file (version.dart) and exported from the main library file
version.dart) and exported from the main library fileImproved performance when spying is disabled. Thanks to @Ascenio.
Nothing published for this version
Fix for ObservableStream.listen() should also keep observable values updated (#708) - @brianrobles204
ObservableStream.listen() should also keep observable values updated (#708) - @brianrobles204asyncWhen - @easeccydebugFindConstructingStackFrame to let the message be less confusing to the readerNo observables detected in the build method of Observeranalyzer: ^3.0.0 in master branch is incompatible with Flutter stablebuilder of Observer errors, further error LateInitializationError: Local 'built' has not been initialized. will happen in addition to the actual error, reducing developer experienceMoved analyzer package to 2.0.0 - @davidmartos96
analyzer package to 2.0.0 - @davidmartos96Computed that was not propagating values after an exception - @brianrobles204StatefulWidget that uses the initState to do the same. You can read more in the docs for ReactionBuilder.Adopting the recommended linting for Dart
Adds @readonly annotation support for creating read-only observables.
@readonly annotation support for creating read-only observables.- Full support for Null Safety
Adding support for @readonly annotation, as per this issue
@readonly annotation, as per this issueNothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Formatting fixes to improve Pub Points
Nothing published for this version
Reformatting for improving the pub.dev score
Nothing published for this version
Nothing published for this version
Improved observe() API for ObservableList. We now get better change events with accurate details about what has changed. Thanks to @darkstarx for the
observe() API for ObservableList. We now get better change events with accurate details about what has changed. Thanks to
@darkstarx for the PR (#490)Added the ability to spy on changes happening inside MobX. You can now setup a spy() to see all these changes. See this for an example.
spy() to see all these changes. See this for an example.test_coverage package, which was causing issues on CI.EqualityComparer<T> can now be specified for Computed<T>. This can be passed in with the equals parameter in the constructor.Nothing published for this version
FEAT: Adds support for annotations (#904).
MobXCaughtException. Previously they were reported as-is and that caused issues in flutter_mobx, where the stack traces were not visible. The stack trace is now being captured as part of the exception, so flutter_mobx can show the complete trace. This helps a lot during debugging.MobXException now extends from Error to capture the stack trace. This is done because Dart only captures stack traces automatically for Error instances.1.1.1FlutterError.reportError. This also includes the stack trace, as all caught exceptions are now wrapped inside MobXCaughtException.Nothing published for this version
Nothing published for this version
Added @StoreConfig annotation (@hawkbee1)
@StoreConfig annotation (@hawkbee1)Fix for ObservableMap not adding null values (#417), thanks to @Vardiak
- Ready for prime time!
Nothing published for this version
Switching to Github Actions for all builds and publishing
Going back to original test_coverage package
test_coverage packageNothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →