Do you actually need a global state library, or is the problem smaller than that?
Most state is either server data or props you can lift. A global store is the last tool you reach for.
Server data is not your state
Most "state" in a React app is either data your server owns (let a fetching library handle it) or values a parent could pass down as props. Only real shared client state, like a user preference or a sidebar toggle three unrelated components care about, belongs in a store.
Think of the state I want to share: does it come from the server, and could I pass it as a prop or lift it to a common parent instead of reaching for a global store?
When you do need a store
Zustand fits most cases with almost no setup, Jotai suits fine-grained reactivity on individual atoms, and Redux Toolkit fits teams that need an audit trail and structured conventions.
I have [describe your state]. Would Zustand, Jotai, or Redux Toolkit be overkill here, and how do they compare on setup complexity and bundle size for a small-team Next.js App Router project?
A global store is the last tool you reach for, not the first. Most state is server data or props in disguise.
Additional Resources
Explore these carefully curated resources to deepen your understanding and practice the concepts covered in this lesson.
Zustand
DocumentationMinimal global state with a tiny API, no boilerplate, no provider required.
https://zustand.docs.pmnd.rs
Jotai
DocumentationAtom-based state that scales from a single value to complex derived graphs.
https://jotai.org
Redux Toolkit
DocumentationOpinionated Redux for larger apps that need predictable, auditable state.
https://redux-toolkit.js.org
TanStack Query
DocumentationAsync state management for server data, caching, and synchronisation.
https://tanstack.com/query/latest

