Pular para o conteúdo principal

Comparações

Ao escolher uma biblioteca de gerenciamento de estado, é comum ficar em dúvida entre várias opções populares como Context API, Redux, Zustand, Jotai ou Recoil. Aqui mostramos como o @bentoo/state-man se compara a elas com base em critérios práticos.

Visão geral

LibBoilerplatePerformanceAPI simplesReatividade fine-grainedPersistênciaTamanho
Context APIAltoMédiaMédiaNativo
ReduxMuito altoAlta🔄 via libs~10kb
ZustandMédioAlta~2kb
JotaiBaixoAlta~3kb
RecoilMédioAlta🔄~8kb
State-ManBaixoAlta✅✅~1.3kb gzip

Context API

A Context API é a solução nativa do React para compartilhamento de estado, mas pode causar re-renderizações globais mesmo com pequenas mudanças.

Problema comum:

<MyContext.Provider value={{ count }}>
<ComponentA />
<ComponentB />
</MyContext.Provider>

➡ Qualquer mudança em count pode re-renderizar ComponentA e ComponentB, mesmo se só um usa o valor.

Vantagens do state-man:

  • Atualizações só ocorrem onde o valor é lido.
  • Nenhuma dependência de Provider.
  • API muito mais direta e enxuta.

Redux

Poderoso e extremamente testado, mas:

  • Altamente verboso.
  • Requer configuração com reducers, actions, dispatch.
  • Usa imutabilidade manual.
  • Não é reativo por padrão.

Redux básico:

dispatch({ type: 'INCREMENT' })

State-man:

setState(prev => prev + 1)

Com state-man:

  • Você trabalha com valores diretamente.
  • Sem actions, reducers ou boilerplate.

Zustand

Zustand e state-man têm filosofias parecidas: hooks, reatividade, simplicidade.

Diferenças:

  • Zustand é mais opinativo: usa selectors, middleware, devtools.
  • state-man foca no essencial, e é mais leve (~1.3kb vs 2kb+).
  • state-man tem API ainda mais enxuta.

Zustand:

const useStore = create(set => ({ count: 0, inc: () => set(state => ({ count: state.count + 1 })) }));

State-man:

const useCount = create(0);
const { state, setState } = useCount();

Recoil

Criado pelo Facebook para React, com base em átomo/selector, muito poderoso para apps complexos.

Desvantagens:

  • API mais densa e conceitual.
  • Usa providers.
  • Pouco intuitivo para apps pequenos.

State-man: mesma simplicidade do React useState, com poder reativo escalável.

Jotai

Jotai tem foco em reatividade por "átomos", como no Recoil.

Semelhanças:

  • Uso direto de valores.
  • Reatividade local.

Diferenças:

  • Jotai depende de providers.
  • Recoil-like com conceitos mais complexos (átomos, selectors, etc).
  • state-man não depende de estrutura especial — é um hook.

Conclusão

@bentoo/state-man é ideal para quem quer:

  • Simplicidade extrema
  • Performance alta
  • Zero dependências
  • API reativa baseada em hooks

Sem deixar de ser poderoso e escalável com persistência e compartilhamento de estado.

Quando usar

Use @bentoo/state-man se você quer:

  • Gerenciamento de estado global/local simples.
  • Evitar Context e Redux.
  • Performance sem complicação.
  • Persistência automática sem plugins externos.
  • Uma API semelhante ao useState, mas compartilhável.

Quando talvez não seja o ideal

Evite se você:

  • Precisa de middleware avançado tipo redux-saga.
  • Depende de devtools específicas.
  • Precisa de integração profunda com bibliotecas de rastreamento (até o momento).