amethystate
A state manager for Rust applications.
amethystate is a state manager for Rust applications: state is declared as an ordinary struct, its fields are
reactive, and they outlive the program.
Features
- Struct-defined state — one attribute turns a struct's fields into persisted reactive ones, with defaults, subscriptions, and interceptors that can refuse a write
- Runtime-defined keys — a map entry or a
Kvpath gets the same subscriptions, interceptors and durability as a declared field - Read and write every frame — writes are buffered and batched, reads answer from memory
- Durable when it matters —
durable()on a field, a map or aKvpath returns only once the value is on disk, for the writes that must not sit in a buffer - Behaviour you choose — which engine holds the state, when a write reaches the disk, what a field does with a value that will not read, what a new version does to an old file
- Migrations — explicit versions, run at startup; drift is logged
- Engines —
redb,sqlite, and text asjson/toml/ronon disk; text files reload on external edits - In a browser —
localStorage, no Tauri needed; a page hears the writes another tab makes - Integrations — Tauri (+TS bindings), Leptos, Dioxus, Yew, GPUI, egui/iced/ratatui
- Tracing — structured events, each write tagged with its source struct
[!WARNING] The framework adapters and about half of the engines are not used in any real application. They run in CI and were smoke-tested, and they were built as a proof of concept for the architecture of the store: that one store can sit behind very different engines and GUI models. Nobody depends on them day to day, so expect rough edges there, and report what you hit.
use ;
See the book for full documentation — concepts, migrations, and per-framework integration guides.
Compatibility
The minimum supported Rust version (MSRV) for amethystate is 1.90.