Basic Concept
Easy unidirectional store and redo/undo library for state management for frontend apps on Blazor/.NET
We provides a Store that allows you to share state between components. All stores are managed by a single provider and can subscribe to state change notifications. Undirectional flow and immutable change of state provides a predictable architecture. In addition, we provide a store that easily implements Redo/Undo by managing in immutable states.
DEMO Page
https://le-nn.github.io/memento/
If you have ReduxDevTool installed, DevTool will launch automatically. You can do state history and time travel.
See ReduxDevTools Docs for details of usage.
Features
- Less boilerplate, less rule and simple usage
- Immutable state and Unidirectional flow
- Multiple stores but manged by single provider, so can observe and manage as one state tree
- Observe detailed status with command patterns and makes it easier to monitor what happened within the application

Compatibility and bindings
| Package Name | Platform | Desctiption |
|---|---|---|
| Memento.Core | .NET 8 or later | Core Package of Memento |
| Memento.Blazor | .NET 8 or later | Provides Observing state changes on Blazor Component. |
| Memento.ReduxDevTool.Remote | .NET 8 or later | Connect and Interact with applications via WebSocket. |
| Memento.ReduxDevTool.Browser | .NET 8 or later | Interact with ReduxDevTools via JavaScript interop. |
| Memento.ReduxDevTool | .NET 8 or later | Provides basic functionality to interact with ReduxDevTools. Interop is required. |
Tutorials
| Link | Summary |
|---|---|
| BasicConcept with C# | The tutorials for implemented with pure C# in simple console application. |
| Update UI with Blazor | Practical Uses of the Framework. In practice, it is mostly used with UI frameworks. Here is a tutorial on how to use it with Blazor. |
| Middleware | Middleware can be implemented to interrupt the process when updating the state. Middleware can be extended for various purposes, such as implementing your own Logger or supporting ReduxDevTools. |
| Redux Dev Tools | ReduxDevTools is a tool for debugging application's state changes. State can be time traveled and history can be viewed in ReduxDevTools. |
| Redo / Undo | Redo/Undo is a feature that allows you to undo and redo state changes. |