NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #3957 most downloaded on pub.dev
A reactive primitive and simple state managerment solution for dart and flutter
Last release 1 months ago
26 Aug 2026
Ships unpredictably
gaps range from 8 days to 1.4 years
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
142 releases · first in 2023
Nothing published for this version
[Feat] Add BeaconGroup that allows you to group beacons together and dispose/reset them all at once.
[Feat] Add BeaconGroup that allows you to group beacons together and dispose/reset them all at once.
final myGroup = BeaconGroup();
final name = myGroup.writable('Bob');
final age = myGroup.writable(20);
age.value = 21;
name.value = 'Alice';
myGroup.resetAll();
print(name.value); // Bob
print(age.value); // 20
myGroup.disposeAll();
print(name.isDisposed); // true
print(age.isDisposed); // true
[Fix] resetting an uninitialized lazybeacon no longer throws an error.
[Feat] Add ability to do optimistic update when using AsyncValue.tryCatch()
One column per month.
Internal refactor that enables deeply nested untracked withing nested effects. This is just covers a rare edge case and should not affect any existing
[Refactor] Internal refactor to improve performance
[Breaking] toStream() now has a broadcast option that defaults to false. This is a breaking change because it changes the default behavior of toStream…
toStream() now has a broadcast option that defaults to false. This is a breaking change because it changes the default behavior of toStream(). If you want to keep the old behavior, set broadcast to true.- Internal refactor
[Breaking] rename debugLabel to name
debugLabel to nameNothing published for this version
[Breaking] beacons NO longer implements ValueListenable. Use mybeacon.toListenable() as a replacement. This was done because implementing ValueListena
mybeacon.toListenable() as a replacement. This was done because implementing ValueListenable necessitated importing the flutter package which isn't usable in pure dart projects.The core of state_beacon was extracted into a separate package to make it usuable in pure dart projects.
[Deprecation] Beacon.createEffect. Use Beacon.effect instead.
Beacon.createEffect. Use Beacon.effect instead.Beacon.doBatchUpdate. Use Beacon.batch instead.reset for list,set and map beacons.isEmpty getter that returns true if a lazy beacon is uninitialized.[Breaking] Convenience wrapping methods: .buffer(), .bufferTime(), .throttle() and .filter() etc no longer needs an initial value. It fetches its init
.buffer(), .bufferTime(), .throttle() and .filter() etc no longer needs an initial value. It fetches its initial value from the target beacon if startNow is true (which is the default).[Breaking] beacon.wrap() no longer returns the wrapper instance. This is redundant as it retuned the same instance that the method was called on. Chan
beacon..wrap()..wrap()Add disposeTogether option for beacon wrapping. This will dispose all wrapped beacons when the wrapping beacon is disposed and vice versa. It's set th
disposeTogether option for beacon wrapping. This will dispose all wrapped beacons when the wrapping beacon is disposed and vice versa. It's set the false for manual wrapping and true when using extension methods like mybeacon.buffer(10)[Breaking] initialValue is now a named argument for all beacon _classes_. This doesn't affect any existing public api provided by Beacon.writable() et
Beacon.writable() etc. This only affects you if you are using the Beacon class directly.[Breaking] Separate idle and loading states for the isLoading getter in AsyncValue. Use isIdleOrLoading for the old behavior.
idle and loading states for the isLoading getter in AsyncValue. Use isIdleOrLoading for the old behavior.Stacktrace is now optional in AsyncError contructor. StackTrace.current is used if it is not provided.
[Feat] Add effect actions to Observer and debuglabel for effects.
isNullable is no longer exposedreset from stream and readable beacons.start from derived beacon. Use late initialization instead.- [Chore] Update documentation
[Feat] Add .next() to all beacons that exposes the next value as a future
.next() to all beacons that exposes the next value as a future.buffer() that returns a [BufferedCountBeacon] that wraps this Beacon..bufferTime() that returns a [BufferedTimeBeacon] that wraps this Beacon..throttle() that returns a [ThrottledBeacon] that wraps this Beacon..filter() that returns a [FilteredBeacon] that wraps this Beacon.[Breaking] FamilyBeacon are cached by default
[Fix] Cached family beacons are removed from cache when they are disposed
StreamBeacon.reset() now sets loading state and resubscribes to the stream
[Fix] batch opperations that threw errors would leave the beacon in an inconsistent state.
[Feature] Make beacons callable(beacon()) as an alternative to beacon.value
beacon()) as an alternative to beacon.valueMake conditional listening configurable for Beacon.createEffect ,Beacon.derived and Beacon.derivedFuture
Beacon.createEffect ,Beacon.derived and Beacon.derivedFutureAdd BeaconObserver and LoggingObserver classes
AsyncValue.isData and AsyncValue.isError gettersFutureBeacon.isData and FutureBeacon.isError and FutureBeacon.unwrapValue()AsyncValue.unwrapValue() is now AsyncValue.unwrap()filter a named argument for FilteredBeaconinitialValue required for ListBeaconFutureBeacon.previousValue is no longer customized to return the previous AsyncData, use FutureBeacon.lastData insteadbeacon.toStream() now returns a broadcast stream
Beacon.untracked() now only hide the update/access from encompassing effects.
Add tryCatch method to AsyncValue class that executes a future and returns an AsyncData or AsyncError
tryCatch method to AsyncValue class that executes a future and returns an AsyncData or AsyncError- Internal improvements
Add WriteableBeacon.freeze() that converts it to a ReadableBeacon
WriteableBeacon.freeze() that converts it to a ReadableBeacon- Internal refactor
Add myBeacon.onDispose to listen to when a beacon is disposed
onCancel to toSteam() extension method- internal improvements
undeRedo: expose canUndo,canRedo and history
add WritableBeacon.clearWrapped()` method to dispose all currently wrapped beacons
- Revert change in 0.13.7
Expose the internal completer on FutureBeacon. ie: myFutureBeacon.completer
myFutureBeacon.completer- Minor internal refactor
- Minor internal improvements
- Minor internal refactor
- Internal improvements
- Internal improvements
- Internal improvements
watch and observe are now methods on Beacon instead of extensions
watch and observe are now methods on Beacon instead of extensionsAdd FilteredBeacon.hasFilter getter
- Add Beacon.untracked
- Internal improvements
Fix null assertion bug in Beacon.observe
Beacon.observeAdd beacon.observe(context, callback) for performing side effects in a widget
TimestampBeacon now extend ReadableBeacon
- Internal code refactor
- Internal improvements
- Internal fixes
Add myStreamBeacon.toFuture() that exposes a StreamBeacon as a Future
- Internal fixes
Beacon.asFuture is now FutureBeacon.toFuture()
Add Beacon.asFuture that exposes a FutureBeacon as a Future
Mark internal methods as @protected
Your coding agent can read these notes before it upgrades. Set up the MCP server →