signals_core
The signals library exposes four core functions which are the building blocks to model any business logic you can think of.
7.0.0
29K downloads/mo
#1874 most downloaded on pub.dev
rodydavis/signals.dart
What this package is like to depend on
Last release 3 months ago
26 May 2026
Ships unpredictably
gaps range from 8 days to 10 months
Nearly every release is documented
notes for 33 of 33 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
54 releases · first in 2023
5 releases in the last 12 months
see the full history below
Release timeline
54 releases · Dec 2023 to May 2026Releases
latest 54-
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:
FutureSignalno longer extendsStreamSignalor supports stream-specific properties/methods. It now inherits directly fromAsyncSignalto optimize future-based execution and eliminate stream event sink and subscription 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. They must now be configured inside specific Options classes (e.g.SignalOptions,ListSignalOptions,AsyncSignalOptions, etc.). - debugLabel Deprecation: The
debugLabelparameter has been deprecated across all constructors and creator methods. Use thenameparameter inside their corresponding Options configuration objects to align with Preact/JS Signals options standards.
🚀 New Features
- Issue #433 Resolution: Resolved a double-triggering issue where awaiting a future signal re-executed the future callback a second time upon completion. Done by isolating context tracking and filtering out
isLoading -> completedtransitions. - Colocated Options Classes: Introduced highly modular options classes tailored for each domain (including
ListSignalOptions,SetSignalOptions,IterableSignalOptions,ChangeSignalOptions,AsyncSignalOptions, andPersistedSignalOptions). - Readonly Options Getter: Added
toSignalOptionsonReadonlySignalOptionsto easily convert read-only signal configurations to writable signal configurations. - Writable Computed Signals (
linkedSignal/linkedSignalOptions): Implementation of Angular-style writable computed signals. - Value Semantics: Added custom
copyWith,operator ==, andhashCodeoverrides across all signals options classes for complete value semantics and immutable comparisons. - Doubly-Linked Node Traversals: Enhanced
DevToolsSignalsObserverto traverse doubly-linked list nodes.
-
6.3.125 May 2026Release notes
Open source →- REFACTOR: migrate signal mixins to mixin classes.
- REFACTOR: Rename persisted signal classes to correct typo.
- REFACTOR: Formatting.
- REFACTOR: allow setting a signal value inside computed.
- REFACTOR: inline signal subscribe.
- REFACTOR: share peek() between signal/computed.
- REFACTOR: inline cycle detection.
- REFACTOR: use untracked for signal subscribe.
- FIX: map.remove - only notify when value was removed.
- FIX(signals): accessing cached
SignalContainerinEffectcause loop. - FIX(signals): accessing cached
SignalContainerinEffectcause loop. - FIX: untracked always reset evaluation context.
- FIX: #179 and add overrideWith.
- FIX: #175 - add missing autoDispose/equality on signals.
- FIX: https://github.com/rodydavis/signals.dart/issues/156.
- FEAT: Impl loading for state reloading and refreshing classes.
- FEAT: Improve async state.
- FEAT: Changed Async{Loading,Data,Error} to be const.
- FEAT: Better type safety on Connect.
- DOCS: rename _computed => _fn.
- DOCS: rename some internal API methods.
-
6.2.130 Nov 2025Release notes
Open source →- Replace benchmark with dart-reactivity-benchmark
- Bump preact_signals to 1.9.4
-
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
-
6.1.030 Sep 2025Release notes
Open source →- 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 →- 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?
-
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.321 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 →- Adding SignalsMixin to replace SignalsAutoDisposeMixin, bindSignal, bindComputed, etc.
- Signals now render with fewer rebuilds
- Adding new deprecated warnings
- Fix: https://github.com/rodydavis/signals.dart/issues/292
-
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
-
5.2.330 Jul 2024Release notes
Open source →- FIX: https://github.com/rodydavis/signals.dart/issues/283
- Changing toJson from T to dynamic
-
5.2.204 Jun 2024 -
5.2.008 May 2024Release notes
Open source →- FIX: https://github.com/rodydavis/signals.dart/issues/258
- FIX: https://github.com/rodydavis/signals.dart/issues/262
-
5.1.022 Apr 2024Release notes
Open source →- Sync core implementation with
@preactjs/signalspackage - Allow mutations in computed
- Share peek implementation for signal/computed
- Inline various methods for performance
- Sync core implementation with
-
5.0.120 Apr 2024Release notes
Open source →- Switching
SignalsObserverto useloginstead ofprint - Only setting
SignalsObserverto useDevToolsSignalsObserverinkDebugMode
- Switching
-
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
-
5.0.0-beta.1413 Apr 2024 pre-releaseNothing published for this version
-
5.0.0-beta.1312 Apr 2024 pre-releaseNothing published for this version
-
5.0.0-beta.1211 Apr 2024 pre-releaseNothing published for this version
-
5.0.0-beta.1111 Apr 2024 pre-releaseNothing published for this version
-
5.0.0-beta.1010 Apr 2024 pre-releaseNothing published for this version
-
5.0.0-beta.909 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.306 Apr 2024 pre-releaseNothing published for this version
-
5.0.0-beta.205 Apr 2024 pre-releaseNothing published for this version
-
5.0.0-beta.105 Apr 2024 pre-releaseNothing published for this version
-
5.0.0-beta05 Apr 2024 pre-releaseNothing published for this version
-
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
-
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
-
4.2.115 Feb 2024 -
4.2.011 Feb 2024Release notes
Open source →- FIX: https://github.com/rodydavis/signals.dart/issues/156
- FIX: https://github.com/rodydavis/signals.dart/issues/162
- Add onDispose callback for effect
- Fixing computed not updating on signal forced change
-
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.105 Feb 2024Release notes
Open source →- Adding SignalsWriteAfterDisposeError/SignalsReadAfterDisposeError for better error handling
-
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
-
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
-
1.0.620 Dec 2023 -
1.0.520 Dec 2023 -
1.0.419 Dec 2023 -
1.0.318 Dec 2023 -
1.0.218 Dec 2023Release notes
Open source →- Adding
disposemethods forsignal,computedandeffect - Adding
initialValuegetter forsignalandcomputed
- Adding
-
1.0.114 Dec 2023 -
1.0.014 Dec 2023