Do more by doing less. A highly optimized, native Dart reactive programming framework based on the Preact Signals model.
Ready to get started? Check out the Installation Guide or try it directly in your browser using the DartPad below.
Why Signals?#
- 📖 Fine-Grained Reactivity: Automatically tracks read dependencies and surgically updates only the exact parts of the application that changed.
- ⚡️ 100% Native Dart: Compatible with VM, CLI, Server (Shelf), Web (JS), and Flutter (Mobile, Desktop, Web). Use signals in any Dart project!
- 📐 Lazy & Memoized: Values are computed lazily only when requested, and derived computations (computeds) cache their results until upstream dependencies mutate.
- 🧩 Small & Composable API: Minimal surface area that is incredibly easy to learn, integrate, and scale.
- 🚀 Surgical Rebuilds: Integrates with Flutter to allow surgical UI rebuilds, only marking the exact mounted widgets as dirty.
Interactive Playground#
Take a look at signals in action with this interactive DartPad:
Packages & Reference#
We offer specialized packages for all layers of your stack:
-
preact_signals: The raw, low-level reactivity engine. -
signals_core: Pure Dart reactive collections, mixins, and async primitives. -
signals_flutter: Surgical UI bindings and GPU-optimized rendering. -
signals_hooks: Hooks integration for standard Flutter Hook projects. -
signals_lint: Static analysis rules and IDE assists. -
signals_devtools_extension: Visual inspector in DevTools. signals: The unified umbrella package for most apps.