Gabriel França

~ or gfrnca

ui/ux & front-end engineer. i'm basically obsessed with making things look and feel great

Why I Stopped Using Redux and Moved to Zustand

For years, Redux was almost the mandatory standard for managing global state in React applications.
But as projects grew — and especially after I started using Next.js and React Server Components — Redux began to feel more like an obstacle than a solution.

That’s when I found Zustand, and my approach to global state changed completely.

The pain with Redux

Redux always felt too verbose for too little benefit.
Creating a store required reducers, actions, types, middleware, and a provider — and even then, every small change felt bureaucratic.

Also:

  • Too much ceremony for simple updates.
  • Hard to handle async state without extra libraries (Thunk, Saga).
  • Too much boilerplate, even for something as small as isOpen: true.

All that moved me away from the kind of flow I expect in a modern front-end stack.

What Zustand brought

Zustand came as the exact opposite: simple, direct, and without magic.
A store can literally be created in a few lines:

import { create } from 'zustand'

type CounterState = {
  count: number
  increment: () => void
}

export const useCounter = create<CounterState>((set) => ({
  count: 0,
  increment: () => set((s) => ({ count: s.count + 1 })),
}))

And that’s it — no reducers, no dispatch, no actions.

Why I prefer it now

  • Instant learning curve: any React dev understands it in minutes.
  • No provider: the store is available anywhere.
  • Optimized reactivity: only re-renders what changes.
  • Works beautifully with Server Components and Next.js hooks.

On top of that, the code became much more readable, which directly improves team productivity.

When I still use Redux

Redux still has its place in very large applications, with big teams and complex middleware needs (logging, persistence, monitoring).
But for 95% of modern front-end projects, Zustand is faster, lighter, and more natural.

Conclusion

Switching to Zustand made me realize that less is more.
State management doesn’t need to be complex — it just needs to be clear, predictable, and easy to test.
And in that, Zustand delivers everything Redux once promised.