Framework7 572,986 's Store borrows the vocabulary of Vuex 5,482 (state, getters, actions) and the single-store idea of Redux 3,824 , but it is far smaller and works with or without a UI framework. Versions are npm 2,036 's latest tags on 24 September 2026; all five are MIT licensed:
| Library | Version | Changes state by | Notes |
|---|---|---|---|
| Framework7 Store | in framework7 9.1.3 | Assigning a new top-level value in an action | No devtools; any framework or none |
| Vuex | 4.1.0 | Synchronous mutations, called from actions | Maintained, no new features |
| Pinia 5,482 | 4.0.3 | Direct assignment inside store actions | Vue 5,482 's official store; devtools, TypeScript |
| Redux Toolkit 3,824 | 2.12.0 | Reducers in createSlice, drafts via Immer 28,983 | Time-travel devtools, middleware, RTK Query |
| Svelte 36,701 stores | in svelte 5.57.1 | set() / update() on writable | Svelte 5 prefers $state runes |
The Vuex site now says "Pinia is now the new default" for Vue, and Svelte's docs keep stores for "complex asynchronous data streams", recommending runes for shared state. Redux Toolkit is the interesting contrast: Immer records "mutations" such as push() on a draft and produces a new object, which is exactly the rule that Framework7 leaves to you (createStore).
Use the Framework7 Store for a Core app like BookNest and for small apps in any binding: it adds no dependency and feeds router components directly. A large Vue or React 7,897 app can keep Pinia or Redux Toolkit instead, for their devtools, typing and middleware; Framework7 does not care where data comes from.