Redux dominou uma década de React e hoje vive como legado na maior parte dos projetos novos. Zustand, Jotai e signals reduziram o custo de re-render a níveis que a context API nunca alcançou. Este guia compara os três modelos com benchmarks de render e critérios de escolha por tipo de aplicação.

O Redux ainda tem lugar em 2026?

Tem, em times grandes que valorizam devtools maduros com time-travel, ecossistema de middleware e padrões impostos pelo framework. O boilerplate encolheu com createSlice e RTK Query, que cobrem mutations e cache sem cerimônia extra. A disciplina segue obrigatória: subscription via selector mal escrito provoca tempestade de re-renders.

Como o Zustand funciona?

Um store único, hooks como seletores, zero providers e nenhum dispatch. Cada componente assina o pedaço de estado que usa, com funções de igualdade (shallow de zustand/shallow) controlando o re-render no nível do campo. O pacote pesa pouco mais de 1 kB minificado, e o middleware persist resolve sincronização com localStorage em duas linhas.

Quando os átomos do Jotai brilham?

Jotai monta o estado de baixo para cima: átomos derivados calculam valores a partir de outros átomos, e átomos async suspendem com React Suspense nativo. Esse modelo resolve estados dependentes complexos, como wizards de formulário multi-etapa e filtros combinatórios em tempo real. Quando a derivação domina o domínio, Jotai economiza código e bugs.

Signals resolvem o problema de re-render?

Signals trazem reatividade de granularidade fina: a atualização toca o nó exato do DOM, sem passar pelo re-render de componente. Solid.js prova o modelo em produção, Preact embarca signals na API pública, e o React resiste à integração enquanto a proposta TC39 avança. A fricção de interop com React existe hoje, então a aposta exige avaliação por projeto.

O que diz o benchmark de render?

Tabela de 10 mil linhas atualizando uma célula: estado em Context re-renderiza tudo, Zustand com seletores re-renderiza a linha, signals atualizam a célula. As diferenças chegam a ordens de magnitude em tempo de commit. Quanto maior a lista e mais frequente a escrita, maior o abismo entre os modelos.

Qual escolher para o seu projeto?

  • Estado de servidor domina? TanStack Query carrega o peso e o estado cliente encolhe a concerns de UI
  • Caso geral? Zustand como default pragmático
  • Derivações em cadeia dominam? Jotai
  • Performance de render é contratual (dashboards em tempo real, editores)? Signals onde a stack permite

Como migrar sem big bang?

Coexistência funciona: converta providers de Context em stores Zustand aos poucos, um domínio por PR. Mantenha Redux onde fluxos de devtools fazem parte do trabalho do time. Adote signals por ilha em páginas híbridas, começando pelos componentes de maior frequência de atualização.