Durante anos, o Redux foi quase um padrão obrigatório para gerenciar estado global em aplicações React.
Mas, conforme os projetos cresceram — e principalmente depois que comecei a usar Next.js e React Server Components — o Redux começou a parecer mais um obstáculo do que uma solução.
Foi aí que encontrei o Zustand, e minha relação com o estado global mudou completamente.
O Redux sempre me pareceu verbo demais para pouco efeito.
Criar uma store exigia reducer, actions, types, middleware, provider... e ainda assim, cada atualização parecia burocrática.
Além disso:
isOpen: true.Isso tudo me afastava da fluidez que eu esperava no front-end moderno.
O Zustand chegou como o oposto: simples, direto e sem mágica.
Uma store pode ser criada com literalmente algumas linhas:
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 })),
}))
E pronto — sem reducers, sem dispatch, sem actions.
Além disso, o código ficou muito mais legível — e isso impacta direto na produtividade da equipe.
O Redux ainda tem espaço em apps extremamente grandes, com times de dezenas de devs e necessidade de middlewares avançados (como logs, persistência, monitoramento).
Mas para 95% dos projetos modernos de front-end, o Zustand é mais rápido, leve e natural.
Migrar para o Zustand me fez perceber que menos é mais.
Gerenciar estado não precisa ser complexo — ele só precisa ser claro, previsível e fácil de testar.
E nisso, o Zustand entrega tudo o que o Redux prometeu lá atrás.