Signal-Based State Management
Utilizes a signal-based approach to state management. This eliminates the need for asynchronous observables in components and templates for the most part.
Event Driven
Supports event handling, enabling decoupled communication and interaction between different stores as well as providing the possibility to react synchronously to events.
Open Architecture
Offers an open architecture: You can stay completely imperative or make use of declerative decoupling features; you can use plain repository-based stores or mimicking Redux-like behavior depending on your needs and preferences.
Flexible Side Effect Execution
Apart from embedded store methods and companion services, side effects can be managed using encapsulated effect objects, ensuring modular, cleaner and more testable code.
Automatic Persistence
Provides automatic persistence of store state to local storage. Any changes made to the store are automatically synchronized with local storage, ensuring that the state is preserved across page reloads.
State History
You can activate store history to trace state changes over time and execute undo and redo operations. Keep your backend informed about the sequence of events in the case of an error.
Support for Redux devtools
Dive deep into the history of state changes, visualize the flow of actions, and effortlessly debug your application using the Redux Devtools
Immutability
In contrast to native signals, immutability becomes a choice, safeguarding your state against accidental mutations and offering more predictability and simplified debugging.
Tree shakeable
Leveraging a plugin architecture, optional features are only then part of your bundle if you choose to use them. Custom plugins are a few lines of code away.