← Back to all posts
ReactFrontend

Good-bye Redux? How React Query & Zustand Re-wired State Management in ’25

May 27, 2025 • 4 min read

Good-bye Redux? How React Query & Zustand Re-wired State Management in ’25

1. Redux: a quick look in the rear-view mirror

Redux became the de-facto way to share data across React apps circa 2016: a single store, time-travel debugging, predictable reducers. But by 2019 hooks arrived, by 2021 React Query gained traction, and by 2025 even the library’s own maintainer admits its hey-day has passed: “Redux peaked in popularity in 2017… the industry has shifted a lot since then.”

Today Redux Toolkit is still rock-solid for huge, deeply collaborative code-bases—but for most teams the boilerplate feels heavy, the mental model over-abstract, and the learning curve steep. Enter TanStack Query (née React Query) for server state and Zustand for client state.

2. Two kinds of state, two modern tools

State TypeTypical examplesPain-points with Redux2025 Solution
Server/remote stateAPI lists, user profiles, pagination cursorsManual caching, re-fetch logic, race conditionsTanStack Query v5
Client / UI stateTheme, modals, drag-drop coords, form wizardsVerbose actions/reducers, accidental re-rendersZustand v6

Split your concerns and you rarely need a giant monolithic store anymore.

3. TanStack Query v5 — the server-state powerhouse

  • Declarative caching: Create a query key and watch it stay fresh via background re-validation—no reducers, thunks or normalisation.
  • Partial Observers: Components can subscribe to a slice of cached data, cutting re-render costs.
  • Persistent & multi-tab cache: A baked-in, IndexedDB-backed cache layer keeps data across reloads/offline sessions.
  • Concurrent Suspense streaming: Full support for React 19’s granular Suspense boundaries—HTML streams while data arrives.
  • Framework-agnostic: Works in React, Solid, Vue, Svelte and Angular; one mental model across stacks. TanStack

2025 verdicts in community round-ups are clear: for 80 % of front-ends, React Query “takes the crown.” Medium

4. Zustand v6 — the tiny bear for client state

  • No boilerplate: A store is literally a single hook—useStore((s)=>s.dÏkMÏode)—no actions or reducers required.
  • Selective subscriptions: Components only re-render when the fields they read change.
  • First-class TypeScript: Generic helpers infer store shapes; no hand-written action types.
  • Middleware ecosystem: Persist, dev-tools, immer, selector-debounce, and SSR helpers—all opt-in.
  • 2 KB min-zipped: Even after adding immer and persistence, bundles remain micro.

The GitHub repo continues to trend with >40 k stars and regular commits in 2025.

5. Head-to-head snapshot (2025)

FeatureTanStack Query v5Zustand v6Redux Toolkit 2.x
Primary use-caseServer / async dataClient / UI stateBoth (one big store)
BoilerplateNone—just hooksNone—one hook storeActions, reducers, slices
Built-in cacheYes, stale-while-revalidatePersist pluginManual or RTK Query
DevToolsQuery Devtools panelRedux DevTools supportRedux DevTools
Bundle size*~9 KB~2 KB15 KB (+ your code)
Learning curveLowTinyMedium-High

*minified + gzip, 2025 builds.

6. Migration playbook

Identify server vs. client state. Anything you fetch from an API goes to TanStack Query; the rest moves to Zustand (or even local useState).

Replace useEffect fetches with useQuery / useInfiniteQuery calls—get caching “for free.”

Gradually wrap Redux selectors with a temporary shim and swap in Zustand slices one at a time.

Keep Redux Toolkit only for edge-cases: offline-first workflows needing optimistic writes across dozens of entities, or enterprise apps with complex middleware pipelines.

7. Real-world impact in 2025

  • Start-ups & indie hackers shave 20–30 % off initial page JS by dropping Redux and its boilerplate.
  • Teams adopting App Router + React Server Components love TanStack Query’s Suspense streaming—no “waterfall” spinners.
  • Complex dashboards boost FPS because Zustand’s selective subscriptions cut wasted re-renders.
  • Hiring & onboarding improves; juniors grok two tiny libraries faster than the Redux mental model.

8. Should you ever still choose Redux?

Yes—when you truly need:

  • Time-travel debugging across hundreds of actions per second (e.g., fintech trading UIs).
  • Strict immutability & serialisable actions for replayable sessions or audit logs.
  • Highly coordinated optimistic updates touching many entities in one transaction.

For almost everything else, a “Redux-less” architecture is simpler, faster, and more fun.

9. Conclusion

State management in React has matured from “one giant store” to a purpose-built, two-tool toolkit:

  • TanStack Query owns the server half—fetched data, caching, re-validation.
  • Zustand owns the client half—lightweight UI state without ceremony.

Together they give you 90 % of Redux’s super-powers at a fraction of the code, bundle size, and cognitive load. In 2025 that trade-off is compelling enough for many teams to wave a polite good-bye to Redux—or at least relegate it to the rare edge-cases where it still shines.

Happy (state-)shipping! 🚀