signals
Reactivity made simple. Do more by doing less. Supports Flutter and any Dart project including HTML/JS, CLI, Shelf Server, VM and more.
7.1.0
19K downloads/mo
#2257 most downloaded on pub.dev
rodydavis/signals.dart
What this package is like to depend on
Last release 2 months ago
29 May 2026
Ships unpredictably
gaps range from 8 days to 10 months
Most releases are documented
notes for 73 of 84 stable releases
Nothing withdrawn
no release was ever pulled
14 years old
104 releases · first in 2012
6 releases in the last 12 months
see the full history below
Release timeline
104 releases · Dec 2012 to May 2026Releases
latest 60 of 104-
7.1.029 May 2026Release notes
Open source →What's Changed
- chore(deps): bump actions/deploy-pages from 4 to 5 by @dependabot[bot] in #468
- chore(deps): bump codecov/codecov-action from 3 to 6 by @dependabot[bot] in #471
- chore(deps): bump actions/checkout from 3 to 6 by @dependabot[bot] in #470
- chore(deps): bump dart-lang/setup-dart from 1.5.0 to 1.7.2 by @dependabot[bot] in #472
- feat(signals): Add toString() to SignalEffectException by @achtsamkeitundmeer in #445
New Contributors
- @dependabot[bot] made their first contribution in #468
- @achtsamkeitundmeer made their first contribution in #445
Full Changelog: v7.0.0...v7.1.0
-
7.0.026 May 2026Release notes
Open source →What's Changed
- Update event-sink.md by @Koichi5 in #367
- Fix docs by @hyshu in #368
- add signals_hooks by @rodydavis in #370
- bump flutter_hooks version by @rodydavis in #371
- MVI example by @devfelipereis in #369
- docs: Fix computedFrom example in async computed documentation by @dorklein in #375
- Add llms.txt file by @jaydanurwin in #392
- Add
debugLabelto hooks by @dickermoshe in #412 - docs(website): add documentation for signals_hooks by @rodydavis in #414
- docs(website): add documentation for signals_hooks by @rodydavis in #415
- fix: use identityHashCode for context by @zupat in #424
- feat(signals_flutter): return FlutterSignal/-Computed from SignalsMixin.createSignal/-Computed by @Yegair in #422
- Fix
ValueListenable.toSignal()not removing listener on dispose by @google-labs-jules[bot] in #425 - Fix Signal Container Loop by @google-labs-jules[bot] in #427
- fix: only notify when the collection was modified. by @zupat in #435
- Refactor: Rename persisted signal classes to correct typo by @halifox in #432
- fix(flutter): prevent ConcurrentModificationError in SignalsMixin by @DavidPluxia in #436
- Fix: call super.dispose in SignalHookState by @zupat in #437
- Signals Version 7 by @rodydavis in #467
New Contributors
- @Koichi5 made their first contribution in #367
- @hyshu made their first contribution in #368
- @devfelipereis made their first contribution in #369
- @dorklein made their first contribution in #375
- @jaydanurwin made their first contribution in #392
- @dickermoshe made their first contribution in #412
- @Yegair made their first contribution in #422
- @google-labs-jules[bot] made their first contribution in #425
- @halifox made their first contribution in #432
- @DavidPluxia made their first contribution in #436
Full Changelog: v6.0.1...v7.0.0
Release notes
Open source →⚠️ BREAKING CHANGES
- FutureSignal Direct AsyncSignal Base:
FutureSignalnow inherits directly fromAsyncSignalinstead ofStreamSignal, optimizing performance and removing stream-backed event-sink/listener overhead. - Signal Options Encapsulation: Removed individual configuration named parameters (e.g.
autoDispose,debugLabel/name) from all constructor signatures and global creator helper functions acrosssignals_core. Options must be passed inside strongly-typed options configuration objects. - SignalBuilder Constructor: Updated
SignalBuilderconstructor signature to accept a required named parameterbuilder:instead of a positional function argument, aligning it with Flutter's nativeBuilderwidget.
🚀 New Features
- Writable Computed Signals (
linkedSignal/linkedSignalOptions): Implementation of Angular-style writable computed signals. - New Flutter Rendering & Lifecycle Widgets: Added stateless/stateful
SignalWidget, static-cache optimizedSignalAnimatedBuilder, inline side-effectsSignalEffect/SignalListener, and GPU-accelerated drawing targetingSignalCustomPaint. - Memory-Safe
.watch(context)Extension: BuiltExpando/WeakReference/Finalizer-based.watch(context)preventing lapsed-listener memory leaks. - Value Semantics Options: Integrated
copyWith,operator ==, andhashCodeacross all option variants. - Issue #433 Resolution: Awaiting future signals no longer causes double callback execution when transitioning to a completed state.
-
6.3.125 May 2026 -
6.3.030 Nov 2025Release notes
Open source →- Fix accessing cached SignalContainer in Effect causing loop
- Bump signals_flutter to 6.3.0
- Bump signals_core to 6.2.1
-
6.2.030 Sep 2025Release notes
Open source →- Adding SignalsAutoDisposeMixin
- Computed/Signal now use SignalsAutoDisposeMixin but ReadonlySignalMixin no longer has dispose methods
- Tests now check for SignalEffectException and not error
- Exposing SignalEffectException from preact_signals
- Bump preact_signals to 1.9.3
- Computed not also can throw SignalEffectException instead of generic error
- Bump signals_core to 6.2.0
- Bump signals_flutter to 6.2.0
-
6.1.030 Sep 2025Release notes
Open source →- Bump signals_core to 6.1.0
- Fix error in effect not showing StackTrace
- Add extensions for List, Map, Set, Iterable, bool, String, int, double, num, Comparable, Pattern, Enum
- Add persisted signals for bool, double, Enum, int, num, String and Json (including nullable for each)
- Add SignalsKeyValueStore and SignalsInMemoryKeyValueStore for storage
- Add $ extension method for common types to create signal and function for computed
Signal<int> count = 0.$; Computed<double> doubleValue => (() => count() * 2).$; Signal<String> name = 'Flutter'.$; Signal<bool> isTrue = true.$; Signal<Brightness> brightness = Brightness.light.$; Signal<double> progress = 0.5.$;- Add SignalEffectException for getting the error and StackTrace for a failed effect callback
-
6.0.202 Dec 2024Release notes
Open source →What's Changed
- chore: Add update all pubspec script by @mcmah309 in #353
- Updates related to 6 0 0 by @mcmah309 in #354
- Improve AsyncState by @mcmah309 in #355
- fix computed signal cycle by @NabilaWorks in #352
Full Changelog: v6.0.0...v6.0.1
Release notes
Open source →- Fix cycle error with TrackedSignalMixin and Computed
- Add
AsyncErrorReloading,AsyncErrorRefreshing,AsyncDataReloading,AsyncDataRefreshing
-
6.0.129 Nov 2024 -
6.0.028 Nov 2024Release notes
Open source →- Remove SignalStream controller
- Upgrade SignalsProvider to default import
- Add FlutterSignal to extends ValueNotifier
- Add FlutterComputed/FlutterReadonlySignal to extends ValueListenable
- Removing deprecated methods
- Add more methods to SignalsMixin
- Switching to preact_signals package for core implementation
- Removing old deprecated methods
- Add new mixins: EventSinkSignalMixin, SinkSignalMixin, StreamSignalMixin, SetSignalMixin, ListSignalMixin, MapSignalMixin, QueueSignalMixin, ChangeStackSignalMixin, IterableSignalMixin
- Update AsyncSignal to implement EventSink
- Removing previous/initial value from Signal and Computed in favor of TrackedSignal, TrackedSignalMixin and trackedSignal()
- Update SignalsObserver to include value for signal created (instead of peek())
- Updated examples
- Remove callback to signal
- Remove toSignal extension method (causing unintended casts) in favor of .$ for Object/Object?
- Add WatchBuilder to include a child callback for caching a widget between rebuilds
- Removing ComputedProvider/ReadonlySignalProvider
-
6.0.0-rc.528 Nov 2024 pre-releaseNothing published for this version
-
6.0.0-rc.428 Nov 2024 pre-releaseNothing published for this version
-
6.0.0-rc.322 Nov 2024 pre-releaseNothing published for this version
-
6.0.0-rc.221 Nov 2024 pre-releaseNothing published for this version
-
6.0.0-rc.120 Nov 2024 pre-releaseNothing published for this version
-
6.0.0-rc.026 Oct 2024 pre-releaseNothing published for this version
-
5.5.002 Sep 2024 -
5.4.017 Aug 2024Release notes
Open source →- Add SignalsMixin to replace .watch, createComputed/createSignal, SignalsAutoDisposeMixin and implementation for Watch
- Signals now render with fewer rebuilds
- Adding new deprecated warnings
- Fix: https://github.com/rodydavis/signals.dart/issues/292
- Update to
signals_core5.4.0 - Update to
signals_flutter5.4.0
-
5.3.030 Jul 2024Release notes
Open source →- Add Signal.lazy and lazySignal
- Add signal.isLazy and computed.isLazy
- Add await future to refresh/reload for FutureSignal
- Update to
signals_core5.3.0 - FIX: https://github.com/rodydavis/signals.dart/issues/279
- Fixing signal/computed not disposing in SignalsAutoDisposeMixin
- createSignal/createComputed now are autoDispose=true by default
- Update to
signals_flutter5.3.0
-
5.2.330 Jul 2024Release notes
Open source →- FIX: https://github.com/rodydavis/signals.dart/issues/283
- Changing toJson from T to dynamic
- Update to
signals_core5.2.3 - Update to
signals_flutter5.2.3
-
5.2.204 Jun 2024Release notes
Open source →- FIX: https://github.com/rodydavis/signals.dart/issues/265
- Update to
signals_core5.2.2 - FIX: https://github.com/rodydavis/signals.dart/issues/266
- Update to
signals_flutter5.2.2
-
5.2.108 May 2024Release notes
Open source →- FIX: https://github.com/rodydavis/signals.dart/issues/258
- FIX: https://github.com/rodydavis/signals.dart/issues/262
- Update to
signals_core5.2.0 - Update to
signals_flutter5.2.1
-
5.2.022 Apr 2024Release notes
Open source →- Update to
signals_flutter5.2.0 - Update to
signals_core5.1.0 - Sync core implementation with
@preactjs/signalspackage - Allow mutations in computed
- Share peek implementation for signal/computed
- Inline various methods for performance
- Update to
-
5.1.020 Apr 2024Release notes
Open source →- Update to
signals_flutter5.1.0 - Fix #247 - element watcher causing effect cycle error
- Fix #245 - unmounted widget causing error on context read
- Adding
InheritedSignalProviderandReadonlySignalProviderfor Flutter - Update to
signals_core5.0.1 - Switching
SignalsObserverto useloginstead ofprint - Only setting
SignalsObserverto useDevToolsSignalsObserverinkDebugMode - Changing
SignalProviderdefault constructor to usecreate
- Update to
-
5.0.013 Apr 2024Release notes
Open source →- Adding
previousValue/initialValuetoSignal - Removing
SignalEquality - Deprecating
ValueSignalin favor ofSignal - Deprecating
.forceUpdatein favor of.set(..., force: true) - Removing old deprecated methods
- Adding more inline code documentation
- ListSignal/SetSignal now extends IterableSignal
- Fixing ChangeStackSignal getters for history/redos to return an iterable list
- Fixing async signal isCompleted race condition
- Adding
createSignal/createComputed/createEffectfor Flutter - Adding
SignalsAutoDisposeMixinfor Flutter - Update to
signals_core5.0.0 - Update to
signals_flutter5.0.0
- Adding
-
5.0.0-beta.1713 Apr 2024 pre-releaseNothing published for this version
-
5.0.0-beta.1612 Apr 2024 pre-releaseNothing published for this version
-
5.0.0-beta.1511 Apr 2024 pre-releaseNothing published for this version
-
5.0.0-beta.1311 Apr 2024 pre-releaseNothing published for this version
-
5.0.0-beta.1206 Apr 2024 pre-releaseNothing published for this version
-
5.0.0-beta.1106 Apr 2024 pre-releaseNothing published for this version
-
5.0.0-beta.1006 Apr 2024 pre-releaseNothing published for this version
-
5.0.0-beta.906 Apr 2024 pre-releaseNothing published for this version
-
5.0.0-beta.806 Apr 2024 pre-releaseNothing published for this version
-
5.0.0-beta.706 Apr 2024 pre-releaseNothing published for this version
-
5.0.0-beta.606 Apr 2024 pre-releaseNothing published for this version
-
5.0.0-beta.506 Apr 2024 pre-releaseNothing published for this version
-
5.0.0-beta.406 Apr 2024 pre-releaseNothing published for this version
-
5.0.0-beta.305 Apr 2024 pre-releaseNothing published for this version
-
4.5.101 Mar 2024Release notes
Open source →- Fixing Watch in hot reload with auto dispose signals
- Update to
signals_flutter4.5.1
-
4.5.029 Feb 2024Release notes
Open source →- Updating documentation comments
- Fixing signals observer bug on effect
- Removing previousValue from value signal
- Add ability to remove an onDispose callback
- Update to
signals_core4.5.0 - Update to
signals_flutter4.5.0
-
4.4.021 Feb 2024Release notes
Open source →- adding overrideWith
- fix autoDispose not passed in for some signals
- fix equality not being passed in for some signals
- fix for completed not being reset on async signal
- Update to
signals_core4.4.0 - Update to
signals_flutter4.4.0
-
4.3.019 Feb 2024Release notes
Open source →- Add valueNotifierToSignal, valueListenableToSignal
- Update to
signals_flutter4.3.0
-
4.2.315 Feb 2024Release notes
Open source →- FIX: https://github.com/rodydavis/signals.dart/issues/171
- Update to
signals_core4.2.1 - Update to
signals_flutterto 4.2.3
-
4.2.211 Feb 2024Release notes
Open source →- Updating
signals_corepackage to 4.2.0 - Update to
signals_flutterto 4.2.2
- Updating
-
4.2.111 Feb 2024 -
4.1.006 Feb 2024Release notes
Open source →- Fix bug in auto dispose where signal dispose causes cycle
- Dispose does not reset to initial value and will read the last value with a warning
-
4.0.305 Feb 2024 -
4.0.205 Feb 2024Release notes
Open source →- Adding SignalsWriteAfterDisposeError/SignalsReadAfterDisposeError for better error handling
-
4.0.105 Feb 2024 -
4.0.005 Feb 2024Release notes
Open source →- StreamSignal now will rebuild with signals are read in the callback to create the stream
- Stream/Future signal both can take an optional list of dependencies to rebuild on
- FutureSignal now extends StreamSignal
- StreamSignal can now rebuild/refresh
- StreamSignal can now pause/resume
- Adding computedAsync/computedFrom for similar API to angular
- Adding
.set(..., force: true)to Signal/Computed to force a rebuild - Adding
.recompute()for Computed to recall the callback - Adding autoDispose for Signal/Computed
- Adding some helper signals not included in the default export
- Signals for WidgetsBinding and SchedulerBinding
- Signals for Theme/MediaQuery
- TickerSignal for Flutter animations
-
3.0.017 Jan 2024Release notes
Open source →- adding readonlySignalContainer to be existing signalContainer API
- updating signalContainer to allow for mutable signals
- adding SignalEquality to allow override of ==
- adding
selectfor signals to return a computed value - fix memory leak on signal container
- adding ChangeStackSignal
-
2.1.1020 Dec 2023Release notes
Open source →- Updating
signals_flutterpackage to 1.0.8 - Updating
signals_corepackage to 1.0.6
- Updating
-
2.1.920 Dec 2023 -
2.1.819 Dec 2023 -
2.1.719 Dec 2023 -
2.1.618 Dec 2023 -
2.1.518 Dec 2023Release notes
Open source →- Updating
signals_flutterpackage to 1.0.5 - Updating
signals_corepackage to 1.0.3
- Updating
-
2.1.418 Dec 2023Release notes
Open source →- Updating
signals_flutterpackage to 1.0.4 - Updating
signals_corepackage to 1.0.2
- Updating
-
2.1.315 Dec 2023 -
2.1.215 Dec 2023