Suggest an editImprove this articleRefine the answer for “Why is Zustand called a minimalist state manager?”. Your changes go to moderation before they’re published.Approval requiredContentWhat you’re changing🇺🇸EN🇺🇦UAPreviewTitle (EN)Short answer (EN)Zustand doesn't require **actions**, **reducers**, **dispatch**, or **context providers** - the whole state is described by a single `create()` function that returns a hook, so one line creates a full-fledged store. **Key point:** the Zustand bundle weighs only **~1 KB (gzip)**, it has no dependencies or extra utilities - just a functional core.Shown above the full answer for quick recall.Answer (EN)Image### 1. A simple core - no extra architecture - Zustand doesn't require **actions**, **reducers**, **dispatch**, or **context providers**. - The whole state is described by a single `create()` function that returns a hook. - That means **one line creates a full-fledged store**: ```javascript const useStore = create(() => ({ count: 0 })) ``` --- ### 2. No React Context and providers - Unlike Redux or the Context API, Zustand **doesn't wrap the whole app** in a `<Provider>`. - The store exists **outside React**, as a plain JavaScript object. - This simplifies the architecture and improves performance (no unnecessary re-renders when the context updates). --- ### 3. Small library size - The Zustand bundle weighs only **~1 KB (gzip)**. - It has no dependencies or extra utilities - just a functional core. --- ### 4. Minimal boilerplate code To change the state, it's enough to call `set`: ```javascript const useStore = create((set) => ({ count: 0, inc: () => set((s) => ({ count: s.count + 1 })), })) ``` Without: - actions (`type: 'INCREMENT'`); - reducers (`switch/case`); - dispatch. --- ### 5. Simple logic and access to the store outside React A Zustand store is a plain JS function, which means: - you can use it **outside React components** (for example, in utilities or services); - you can **subscribe to changes manually**, without hooks; - you can **create several stores** and import them like regular modules. --- ### 6. Extensibility through middleware Everything stays simple, but if needed, you can add: - `persist` - storing state in localStorage; - `devtools` - integration with Redux DevTools; - `immer` - immutable state updates. It's plugged in with one line: ```javascript import { devtools, persist } from 'zustand/middleware' ``` --- ### Summary | Criterion | Zustand | Redux / MobX | |---|---|---| | Boilerplate | minimal | high | | Size | ~1 KB | 10-30 KB+ | | Context Provider | not needed | often required | | Usage outside React | yes | rarely | | Imperativeness | simple `set()` | actions/reducers | | Performance | high | depends on implementation |For the reviewerNote to the moderator (optional)Visible only to the moderator. Helps review go faster.