React Labs: O que Temos Estudado – Fevereiro de 2024
O roteiro mais recente do React, incluindo um compilador otimizador e recursos como auto-memoization e server actions, está provocando reações mistas entre desenvolvedores frontend. Muitos veem os avanços como poderosos, mas se preocupam com o fato de o React ter ficado excessivamente complexo e “mágico”, especialmente com hooks, React Server Components e a crescente influência do Next.js e da Vercel, tornando o código mais difícil de raciocinar e os pipelines de build mais frágeis. Outros argumentam que o ecossistema do React, a compatibilidade com versões anteriores e a adequação para apps grandes e de longa duração ainda justificam escolhê-lo, mesmo com alternativas como Vue, Svelte, Preact, MobX, htmx e frameworks server-side ganhando interesse por sua simplicidade.
Create React App e Ferramentas
- CRA é visto como, na prática, abandonado e nunca foi fortemente priorizado; ele foi pensado como um ponto de partida, não como a ferramenta de produção “melhor”.
- Comentadores observam que ferramentas modernas (especialmente Vite) são mais simples, mais rápidas e mais fáceis de depurar do que a configuração opaca de Webpack do CRA.
- Alguns ainda usam CRA para apps pequenos, mas reconhecem problemas futuros devido à má manutenção.
Hooks, Complexidade e “Magia”
- Muitos sentem que React ficou complexo demais, especialmente com hooks, hydration e diretivas de servidor/cliente.
- Hooks são descritos como uma linguagem incorporada, com suas próprias regras que se afastam da intuição normal de JS; casos simples ficam mais fáceis, mas depurar código complexo é mais difícil.
- Outros argumentam que hooks aumentam a explicitude, combinam melhor com a arquitetura concorrente do React e não são inerentemente confusos depois que o modelo mental é aprendido.
- Há frustração com o fato de as explicações e orientações do React sobre hooks (por exemplo,
useEffect) terem mudado ao longo do tempo, causando confusão.
Compilador Otimizador / Auto-memoization
- O novo compilador (React Forget) pretende fazer auto-memoization e remover muitos padrões manuais de
useMemo/useCallback. - Alguns ficam impressionados, mas desconfortáveis com a “magia” de mudar o comportamento com base na análise de valores semânticos em tempo de compilação, especialmente quando isso altera a semântica percebida da linguagem.
- Há preocupações sobre mais uma camada de compilador em pipelines de build já complexos.
Debates sobre Gerenciamento de Estado
- Debate sobre se
useReducer+useContextpode substituir Redux; um lado afirma que sim, o outro ressalta diferenças de desempenho e de subscrição. - Redux Toolkit é citado por ter reduzido o boilerplate, mas alguns ainda veem Redux/RTK como verboso.
- MobX recebe elogios por sua reatividade direta e pela separação entre domínio e UI, mas críticos dizem que a reatividade por push no estilo observer leva a código espaguete e recomputações surpreendentes.
React vs Alternativas
- Vários comentaristas defendem Vue, Svelte, Preact, htmx, Rails/Hotwire ou renderização tradicional no servidor como mais simples e intuitivos.
- Outros contra-argumentam que o modelo de modo imediato do React, seu enorme ecossistema, o mercado de contratação e a forte compatibilidade com versões anteriores ainda o tornam a escolha pragmática, especialmente para apps web complexos e React Native.
- Alguns veem o React moderno como, na prática, um sistema novo e mais complicado montado sobre a popularidade da biblioteca original.