mobx
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.
2.6.1
89K downloads/mo
#1172 most downloaded on pub.dev
mobxjs/mobx.dart
What this package is like to depend on
Last release 3 days ago
20 Aug 2026
Release timing varies
gaps range from 1 weeks to 13 months
Some releases are documented
notes for 55 of 119 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
132 releases · first in 2018
2 releases in the last 12 months
see the full history below
Release timeline
132 releases · Dec 2018 to Aug 2026Releases
latest 60 of 132-
2.6.120 Aug 2026Release notes
Open source →- FIX: use super parameters in spy event constructors to satisfy the
use_super_parameterslint on the beta analyzer.
- FIX: use super parameters in spy event constructors to satisfy the
-
2.6.003 Jan 2026Release notes
Open source →-
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
useEquatablefor creating observables (#971). -
FEAT: Adds custom
equalsfor creating observables. (#907). -
FEAT: Adds support for annotations (#904).
-
FEAT: Allow a custom equals parameter for ObservableStream (#771).
-
FEAT: Allow use custom context (#770).
2024-12-16
Changes
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
Release notes
Open source →-
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
useEquatablefor creating observables (#971). -
FEAT: Adds custom
equalsfor creating observables. (#907). -
FEAT: Adds support for annotations (#904).
-
FEAT: Allow a custom equals parameter for ObservableStream (#771).
-
FEAT: Allow use custom context (#770).
-
-
2.5.016 Dec 2024Release notes
Open source →- 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
useEquatablefor creating observables (#971). - FEAT: Adds custom
equalsfor creating observables. (#907). - FEAT: Adds support for annotations (#904).
- FEAT: Allow a custom equals parameter for ObservableStream (#771).
- FEAT: Allow use custom context (#770).
-
2.4.031 Oct 2024Release notes
Open source →- Add
schedulertoreactionandautorunto allow customizing the scheduler used to schedule the reaction. By [@amondnet]((https://github.com/amondnet).
- Add
-
2.3.328 Mar 2024 -
2.3.3+128 Mar 2024 -
2.3.3+203 Apr 2024Nothing published for this version
-
2.3.228 Mar 2024Release notes
Open source →- Fix Observable.value setter when class with operator ==(covariant) is used as a value
-
2.3.123 Mar 2024Release notes
Open source →- Fix preserving stacktrace in Computed and Reaction when exception thrown inside argument function
-
2.3.027 Dec 2023Release notes
Open source →- REFACTOR: export
MultiReactionBuilderfromflutter_mobx.dart(#946). - FIX: package upgrades, analysis issue fixes.
- FIX: stacktrace in computed (#988).
- FIX: If builder of Observer errors, further error LateInitializationError: Local 'built' has not been initialized. will happen in addition to the actual error, reducing developer experience #780.
- FIX: Disable button Remove Completed, when the completed task is occult on screen. (#73).
- FEAT: add
MultiReactionBuilderwidget (#917).
Release notes
Open source →- Add
keepAlivetoComputedto avoid suspending computed values when they are not being observed by anything.
- REFACTOR: export
-
2.3.0+104 Jan 2024 -
2.2.306 Dec 2023 -
2.2.3+121 Dec 2023Release notes
Open source →Make the change in
2.2.3optional. If you want the use this behavior , modify@observableto@MakeObservable(useDeepEquality: true).- Adds
useDeepEqualityfor creating observables by @amondnet
- Adds
-
2.2.118 Oct 2023Release notes
Open source →- Reduces unnecessary iterations while using
IterableswithaddAll,insertAll,replaceRange,setAllandsetRangemethods. #942.
- Reduces unnecessary iterations while using
-
2.2.005 May 2023Release notes
Open source →Observeris updated with the newObserver.withBuiltChildconstructor, so you can exclude child branch from the re-rendering. - @subzero911
In case if you useObserver.withBuiltChild, you should provide two parameters:builderWithChildandchild:Observer.withBuiltChild( builderWithChild: (context, child) => FooWidget(foo: foo, bar: child), child: BarWidget(), // won't rebuild ),
-
2.1.416 Feb 2023Release notes
Open source →-
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
-
-
2.1.318 Nov 2022Nothing published for this version
-
2.1.3+103 Feb 2023Nothing published for this version
-
2.1.213 Nov 2022 -
2.1.112 Oct 2022Release notes
Open source →- refactor: export
MultiReactionBuilderfromflutter_mobx.dartby @amondnet
- refactor: export
-
2.1.018 Sep 2022Release notes
Open source →ObservableSetnow usesSetto maintain order of iterationObservableSet.linkedHashSetFrom()removed. UseObservableSet()orObservableSet.of()instead.
-
2.0.721 Apr 2022Release notes
Open source →- Type aliases for primitive types.
So instead ofObservable<int>you can now writeObservableInt. .asObservable()extension for primitive types.
Now you can easily convert literals to observables like:var name = ''.asObservable(); // infers ObservableString var counter = 0.asObservable(); // infers ObservableInttoggle()method forObservableBool. Lets you toggle the internal value ofObservableBool
Changes made by @subzero911var lights = true.asObservable(); lights.toggle(); // now it has a value of false- Allow use custom context(#770) - @amondnet
- Type aliases for primitive types.
-
2.0.7+214 May 2022Nothing published for this version
-
2.0.7+311 Jun 2022 -
2.0.7+425 Jun 2022Release notes
Open source →fixes:
- shortened
1.asObservable()to1.obs()(same for boolean, double, String) - @subzero911 - removed experimental typedefs from
2.0.7
- shortened
-
2.0.7+522 Jul 2022 -
2.0.7+618 Sep 2022 -
2.0.7+718 Sep 2022Release notes
Open source →- Moved the version into its own file (
version.dart) and exported from the main library file
- Moved the version into its own file (
-
2.0.623 Dec 2021Release notes
Open source →- Improved performance when spying is disabled. Thanks to @Ascenio.
- Package upgrades
- Adopting the recommended linting for Dart
-
2.0.6+124 Dec 2021Nothing published for this version
-
2.0.507 Oct 2021Release notes
Open source →- Fix for
ObservableStream.listen()should also keep observable values updated (#708) - @brianrobles204 - Added missing parameter to
asyncWhen- @easeccy
Release notes
Open source →- Improve
debugFindConstructingStackFrameto let the message be less confusing to the reader - Allow disabling
No observables detected in the build method of Observer - The
analyzer: ^3.0.0in master branch is incompatible with Flutter stable - If
builderofObservererrors, further errorLateInitializationError: Local 'built' has not been initialized.will happen in addition to the actual error, reducing developer experience
- Fix for
-
2.0.407 Aug 2021Release notes
Open source →- Moved
analyzerpackage to2.0.0- @davidmartos96 - Fixed a bug in
Computedthat was not propagating values after an exception - @brianrobles204 - Several documentations typo fixes - @sno2, @Ascenio
Release notes
Open source →- Introducing a ReactionBuilder widget that helps you create an inline reaction and eliminates the need
to have a wrapper-
StatefulWidgetthat uses theinitStateto do the same. You can read more in the docs for ReactionBuilder.
- Moved
-
2.0.325 Jul 2021Release notes
Open source →- Package upgrades
- Minor cleanups
- Adopting the recommended linting for Dart
-
2.0.104 Apr 2021 -
2.0.001 Apr 2021 -
2.0.0-nullsafety.629 Mar 2021 pre-release -
2.0.0-nullsafety.521 Mar 2021 pre-releaseNothing published for this version
-
2.0.0-nullsafety.421 Mar 2021 pre-releaseNothing published for this version
-
2.0.0-nullsafety.308 Mar 2021 pre-releaseNothing published for this version
-
2.0.0-nullsafety.228 Nov 2020 pre-releaseNothing published for this version
-
2.0.0-nullsafety.128 Nov 2020 pre-releaseNothing published for this version
-
2.0.0-nullsafety.028 Nov 2020 pre-release -
1.2.120 May 2020Release notes
Open source →- Improved
observe()API forObservableList. We now get better change events with accurate details about what has changed. Thanks to @darkstarx for the PR (#490) - API docs update for reaction. Rewording the debouncing to throttle, since the behavior is more like throttling.
- Syncing versions with pubspec.yaml
- Improved
-
1.2.1+120 Jun 2020Nothing published for this version
-
1.2.1+207 Aug 2020Release notes
Open source →- Reformatting for improving the pub.dev score
- Regenerated the example files
-
1.2.1+309 Oct 2020Nothing published for this version
-
1.2.1+427 Oct 2020Nothing published for this version
-
1.2.013 May 2020Release notes
Open source →- 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. - Simplified the handling of tests and coverage. We are no longer dependent on the
test_coveragepackage, which was causing issues on CI. - A custom
EqualityComparer<T>can now be specified forComputed<T>. This can be passed in with theequalsparameter in the constructor. - Several documentation updates from various contributors.
- Added the ability to spy on changes happening inside MobX. You can now setup a
-
1.1.124 Mar 2020Nothing published for this version
-
1.1.023 Mar 2020Release notes
Open source →- All exceptions caught inside MobX reactions are now reported as
MobXCaughtException. Previously they were reported as-is and that caused issues influtter_mobx, where the stack traces were not visible. The stack trace is now being captured as part of the exception, soflutter_mobxcan show the complete trace. This helps a lot during debugging. MobXExceptionnow extends fromErrorto capture the stack trace. This is done because Dart only captures stack traces automatically forErrorinstances.- Bringing test coverage back to 98% in
1.1.1
Release notes
Open source →- Exceptions are reported more reliably with
FlutterError.reportError. This also includes the stack trace, as all caught exceptions are now wrapped insideMobXCaughtException. - Syncing versions with pubspec.yaml
- All exceptions caught inside MobX reactions are now reported as
-
1.0.212 Feb 2020Release notes
Open source →- Added
@StoreConfigannotation (@hawkbee1) - Fixed to link to pt-BR translation on github
- Fixed anchor link inside README.md
- Added
-
1.0.2+103 Mar 2020Nothing published for this version
-
1.0.2+210 Mar 2020Nothing published for this version
-
1.0.130 Jan 2020 -
1.0.028 Jan 2020 -
0.4.029 Dec 2019Release notes
Open source →- Removing the deprecated
authorsfield frompubspec.yaml - Added extension methods to create an Observable{List,Set,Map,Future,Stream} from a regular List, Set, Map, Future, Stream. Thanks to the work done by Jacob Moura
README.mdtranslated to Portuguese, thanks to Jacob Moura
- Removing the deprecated
-
0.4.0+130 Dec 2019Nothing published for this version
-
0.4.0+223 Jan 2020Release notes
Open source →- README updates
- Switching to Github Actions for all builds and publishing
-
0.4.0+324 Jan 2020 -
0.4.0+425 Jan 2020Nothing published for this version