Why I'd use zustand instead of redux for most usecases

Saad KhaleeqSaad Khaleeq
2 min read

If you’ve ever dealt with Redux in a React project, you know the pain boilerplate, action types, reducers, thunk/saga setup just to manage a bit of state. Let me talk about Zustand, a minimal, flexible, and way more enjoyable state management library.

Why Zustand is way better than Redux:

  1. Zero Boilerplate
    With Redux, you write actions, reducers, action creators, and maybe middleware to handle async logic.
    With Zustand, you just define a store — no magic strings, no switch statements.

     tsxCopyEdit// Zustand example
     const useStore = create((set) => ({
       count: 0,
       increment: () => set((state) => ({ count: state.count + 1 })),
     }));
    
  2. Hooks-Based and Intuitive
    Zustand uses React hooks out of the box. No need for connect, mapStateToProps, or context wrappers.

     tsxCopyEditconst count = useStore((state) => state.count);
    
  3. No Provider Needed
    Unlike Redux, you don't have to wrap your app in a provider. The store is global, yet isolated per hook call, which also makes it test-friendly.

  4. Async Made Easy
    Redux often requires middleware like redux-thunk or redux-saga for async.
    Zustand just lets you call async code inside your store:

     tsxCopyEditfetchData: async () => {
       const data = await fetch(...).then(res => res.json());
       set({ data });
     }
    
  5. Built-in Devtools Support
    Zustand supports Redux DevTools, so you don’t lose time-travel debugging or inspecting state changes.

  6. Smaller Bundle Size & Better Performance
    Zustand is tiny (<1kB gzipped) compared to Redux + Toolkit + DevTools + Thunk. And because it avoids unnecessary re-renders, it's very performant by default.

  7. Flexible and Scalable
    Zustand scales beautifully for small to medium-large apps. It’s perfect for local component state, shared global state, or anything in between — without the complexity Redux adds.


When Redux might still make sense:

  • You already use Redux Toolkit and have a large codebase built on it.

  • You need strict structure and patterns for a large team to follow.

  • You rely heavily on middleware and side-effect handling like sagas.


Summary

So I think that zustand brings the simplicity of useState to global state and that’s a big win.
Unless you're maintaining a legacy Redux app or need very specific middleware, Zustand is the modern way to manage state in React.

1
Subscribe to my newsletter

Read articles from Saad Khaleeq directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Saad Khaleeq
Saad Khaleeq

Creative. Fast Learner. Super Passionate. Highly Enthusiastic.