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
Lib | Boilerplate | Performance | API simples | Reatividade fine-grained | Persistência | Tamanho |
---|---|---|---|---|---|---|
Context API | Alto | Média | Média | ❌ | ❌ | Nativo |
Redux | Muito alto | Alta | ❌ | ❌ | 🔄 via libs | ~10kb |
Zustand | Médio | Alta | ✅ | ✅ | ✅ | ~2kb |
Jotai | Baixo | Alta | ✅ | ✅ | ❌ | ~3kb |
Recoil | Médio | Alta | ✅ | ✅ | 🔄 | ~8kb |
State-Man | Baixo | Alta | ✅✅ | ✅ | ✅ | ~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
eRedux
. - 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).