- Uma coleção curada de textos críticos sobre React e ferramentas da família React, organizada em formato de citações de vários desenvolvedores e blogueiros
- Inclui muitos textos que apontam limitações estruturais do React, como queda de desempenho, aumento de complexidade e problemas de hidratação
- A escolha de tecnologias centrada em React teria se consolidado mais por inércia e efeito de rede do que por adequação técnica, recebendo críticas de que a premissa de que “todo mundo conhece React” vem antes das decisões de arquitetura
- Cresceram as preocupações com segurança e governança em torno de React Server Components e Next.js, e a CVE-2025-55182 foi divulgada como uma vulnerabilidade de execução remota de código sem autenticação com nota CVSS 10.0
- A confusão no design de APIs, a crise de qualidade e a complexidade do ecossistema React dificultam a manutenção de longo prazo e o aprendizado, levando a debates sobre a direção do React, dos Hooks, dos recursos modernos de UI e até do fluxo de releases
Visão geral do site
- Um site de curadoria que levanta a pergunta provocativa "Does anybody actually like React?"
- Uma coleção cherry-picked de textos críticos sobre React e ferramentas influenciadas por React
- Oferece assinatura via RSS
Críticas fundamentais ao próprio React
-
The End
- React quase sempre é a solução errada e acabou virando um martelo que faz tudo parecer prego
- É possível usar React bem, mas isso quase nunca acontece na prática
-
JS-heavy approaches are not compatible with long-term performance goals
- Projetos centrados em JS a partir de certo porte são mais lentos do que o anunciado e ficam ainda mais lentos com o tempo
- Exigem mais esforço de desenvolvimento e manutenção, e têm tantos bugs quanto outras abordagens
-
React Still Feels Insane And No One Is Talking About It
- É fácil concluir que React é "simplesmente insano", mas é preciso tentar entendê-lo de forma racional
-
Stop Using and Recommending React
- Com base em uma longa experiência usando React, não há motivos para adotá-lo e há muitos para se opor
-
Please don't use React
- Defende que se deve parar de usar React e que ele nem deveria ter sido adotado desde o início
-
Tech Founder? Entrepreneur? This is why you should avoid React.js in your app
- React não é apenas lento, mas um ecossistema inchado com dívida técnica inscrita no DNA
- Ainda assim, questiona-se por que ele continua sendo escolhido
Problemas de segurança e governança
-
Critical Security Vulnerability in React Server Components
- Em 29 de novembro, Lachlan Davidson reportou uma vulnerabilidade de execução remota de código (RCE) sem autenticação
- Divulgada como CVE-2025-55182, com nota CVSS 10.0
-
You should know this before choosing Next.js
- A Vercel divulgou uma vulnerabilidade grave de segurança no Next.js
- O problema em si seria algo normal, mas a forma como a Vercel respondeu foi fraca e irresponsável
- Isso aprofundou as preocupações sobre a governança do projeto
-
Next.js 15.1+ is unusable outside of Vercel
- O Next.js teria se tornado uma forma de vendor lock-in da Vercel, disfarçada de framework open source
Problemas de design de API e curva de aprendizado
-
Is it Time to Regulate React?
- O principal fracasso do React é agravado por um design de API confuso
- A documentação é indecisa, e as discussões sobre a forma correta de usar a ferramenta nunca acabam
-
I don't have time to learn React
- Ao contrário da alegação de que React ensina UI moderna, na prática ele quase não lida com UI moderna
- O autofocus é quebrado, e custom elements não funcionam fora de versões experimentais
- Para usar recursos modernos como dialog e popover, é preciso recorrer a
useEffect - Por causa do sistema de synthetic events, quase não se aprende o comportamento real do DOM
- Não é UI moderna, mas uma UI no nível de 2013
-
The React Blog Post: Reflections and Reactions
- É estranho tratar todos os problemas como "skill issue" e dizer que eles se resolvem com bibliotecas externas
- Uma tecnologia deveria permitir voltar a um projeto depois de 3 anos e ainda conseguir trabalhar nele, mas no frontend, especialmente com React, isso não acontece
-
React, where are you going?
- Dois problemas que hoje tornam React menos prazeroso: ownership e complexity
- Há preocupação de que novos desenvolvedores possam se sentir intimidados pelo React
Problemas de desempenho e experiência do usuário
-
Why use React?
- Acaba-se preso por padrão ao notório padrão de hidratação
- A estrutura faz todos os cálculos no servidor com JS, envia o HTML imediatamente e depois manda o mesmo JS de novo para o cliente
-
How React 19 (Almost) Made the Internet Slower
- Depois de reação pública negativa e debate acalorado, a equipe do React adiou a mudança
-
An even faster Microsoft Edge
- Houve migração de React para Web Components modernos + arquitetura HTML-first
- Isso trouxe grandes benefícios especialmente para usuários com hardware mais modesto
-
Switching costs
- Gostaria que houvesse mais reclamações sobre a experiência de usuário terrível imposta pelo React no client-side
- Mas, na prática, quase todas as reclamações se concentram na experiência do desenvolvedor
-
Pivoting From React to Native DOM APIs: A Real World Example
- Uma equipe de desenvolvimento migrou do "VDOM avassalador" do React para APIs modernas do DOM
- A melhora em velocidade e interações foi sentida imediatamente
Problemas em mobile e plataforma
-
I Built the Same App 10 Times: Evaluating Frameworks for Mobile Performance
- A estratégia mobile do React essencialmente empurra as equipes para a dependência de plataforma (platform capture)
- A web oferece uma alternativa com implantação direta, sem gatekeepers nem taxas de plataforma
Problemas de ecossistema e comunidade
-
React Won by Default – And It's Killing Frontend Innovation
- Quando surge a necessidade de um novo frontend, o ponto de partida não é "quais são as restrições e qual ferramenta se encaixa melhor", mas sim "vamos de React, todo mundo conhece"
- Um ciclo de auto-reforço em que efeitos de rede, e não adequação técnica, determinam a arquitetura
-
Conferences, Clarity, and Smokescreens
- No trabalho de consultoria e nos dados do setor, a comunidade React está em uma crise de qualidade profunda e mensurável
- Os participantes do React Summit não ficam sabendo disso
-
Why Silicon Valley CTOs Are Secretly Moving Away from React
- Há muitos desenvolvedores React, mas os verdadeiros especialistas que entendem padrões profundos estão cada vez mais raros e caros
- Os engenheiros mais experientes estão se cansando da complexidade e migrando para outras stacks
-
Increasingly miffed about the state of React releases
- Já se passou um ano e meio desde o último lançamento do React, o maior intervalo de qualquer ciclo de releases anterior
Críticas ao React Server Components
-
React Server Components: the Good, the Bad, and the Ugly
- O React praticamente deixou de investir em melhorias no lado do cliente (desde o fim dos experimentos em 2019)
- Um framework legado criado para resolver problemas da escala do Facebook com recursos da escala do Facebook, inadequado para a maioria dos casos de uso
-
React Server Components are a bad choice (for shipping)
- Se a meta é lançar rápido, não se deve usar React Server Components
- Pode ser usado para fins de aprendizado, experimentação e criação de conteúdo
Retorno aos fundamentos e ênfase em alternativas
-
HTML is better than React!?
- Vantagens da melhoria progressiva (progressive enhancement) baseada em HTML
- Entrega uma experiência utilizável mais rapidamente ao usuário
- O site não parece ruim nem mesmo em conexões lentas
- Mesmo quando há problemas, o usuário ainda consegue continuar usando o site
- Vantagens da melhoria progressiva (progressive enhancement) baseada em HTML
-
How to build a counter component using the HTML Framework in just 1 line of code
- Recomendação satírica: "encontre a pasta
node_modulese arraste-a para a lixeira"
- Recomendação satírica: "encontre a pasta
-
Liskov's Gun: The parallel evolution of React and Web Components
- O React se tornou um amontoado inchado de promessas falsas, alegações enganosas e camadas intermináveis de retrocompatibilidade
- Mesmo em atualizações, com frequência acaba quebrando código
-
Removing React is just weakness leaving your codebase
- Ao sair de frameworks pesados como React e focar nos fundamentos da web, você protege o futuro da carreira e da base de código
-
Concatenating text
- Por que, quando é preciso atualizar a tela, todo mundo pensa primeiro em React?
- Questionamento sobre a tendência de misturar preocupações de frontend e backend
Casos de migração e transição
-
We Rewrote our React App in Svelte in Three Weeks
- Ignorava as manchetes de que Svelte seria o framework "mais amado", mas agora aderiu ao lado do Svelte
-
Moving on from React
- Depois de um começo equivocado com React em 2023, migrou para uma stack mais adequada ao domínio do cliente
-
Moving on from React, a Year Later
- O frontend pesado em JS da era do "fat client" está desaparecendo
- O hype em torno de aplicações de edge é desnecessário para construir muitos tipos de negócio
-
Replacing React: How Liveview solved our performance problems
- Passou a explorar o LiveView por causa de problemas de desempenho em uma SPA em React
- Depois de 2 dias de exploração, se convenceu; em poucas semanas, substituiu a SPA em React por LiveView
Fluxo geral e perspectivas futuras
-
The Neverending Story
- Um fluxo que vai de Applets, ActiveX, Flash, Flex e Silverlight até Angular e React
- Falhas repetidas de empresas que não conseguiram enxergar o quadro maior
-
If Not React, Then What?
- O Frameworkism prega a adoção de mais ferramentas de framework (ou ferramentas diferentes) como solução para melhorar a experiência do usuário
- Isso leva à imersão em atividades que parecem engenharia, mas na prática não são
-
Reckoning: Part 4 — The Way Out
- Não concorde com planos para construir mais um YAJSD (Yet Another JavaScript Disaster)
- Quando surgir uma proposta de reescrever tudo em React, engenheiros seniores não devem ficar em silêncio
-
After a Decade of React, Is Frontend a Post-React World Now?
- Desenvolvedores web iniciantes podem considerar seriamente a opção de evitar React por completo
- A empregabilidade no curto prazo pode diminuir, mas existe a possibilidade de combinar com empregadores pioneiros
-
React, Electron, and LLMs have a common purpose: the labour arbitrage theory of dev tool popularity
- Na maioria das organizações que criam software para a web, o React é objetivamente inferior a muitas alternativas
-
It feels like React is getting a bit of a kicking recently
- Mudança de atitude da comunidade em relação ao React e recomendações para a tomada de decisão em projetos
-
Kind of annoyed at React
- Ao criar coisas complexas, ainda escolhe React, mas lamenta que gostaria de ficar mais feliz com essa escolha
-
Am I the only one that thinks that the direction of React is wrong?
- A impressão de que o React joga seu próprio jogo com suas próprias regras
-
Client-side JavaScript and React criticism: What comes next?
- Discussão sobre melhorar o uso de JavaScript, ensinar progressive enhancement e formas de reconciliação da comunidade
-
A Historical Reference of React Criticism
- Organização histórica das críticas levantadas contra projetos em React ao longo dos anos
- Algumas foram resolvidas e outras continuam sem solução
Hooks e paradigmas alternativos
-
Why Signals Are Better Than React Hooks
- Os Hooks do React são difíceis até de usar corretamente, e usá-los com bom desempenho é ainda mais difícil
- Causa de queda na qualidade do código e no desempenho em muitos aplicativos
Críticas metafóricas
-
What Is React.js?
- Vídeo que compara ao cristianismo a estranheza dos apoiadores, a excessiva seriedade consigo mesmos e a documentação interminável
3 comentários
React é basicamente uma religião (seita).
É tipo Ant Mill //
Comentários do Hacker News
Há várias coisas de que não gosto no React. React é um framework para renderizar HTML interativo na tela, não algo feito para programação extremamente complexa
Primeiro, ele depende demais de conceitos e terminologia complicados. Comparando com Vue,
useEffectcorresponde awatch, euseMemoacomputedSegundo, esse jeito “inteligente” desnecessário foi além da terminologia e contaminou o ecossistema. Antigamente, no Redux, até para incrementar um único número era preciso escrever muito código em vários arquivos, e parecia que isso acontecia porque o autor gostava de conceitos espertinhos de ciência da computação. Na mesma época, no VueX, bastava simplesmente incrementar esse número. Felizmente, hoje o ecossistema React tem vários gerenciadores de estado mais sensatos
Terceiro, o React não oferece uma ferramenta de trabalho com CSS por padrão
Quarto, o React não faz otimização automaticamente. É preciso saber quando e como usar ou não usar
useEffecteuseMemo, e também existe muito folclore sobre otimização em React. O problema é que isso acontece apesar de rerenderização ser justamente o objetivo central. No Vue, o framework leva você a usar as próprias ferramentas dele e faz a maior parte das otimizações ali dentro, então nunca pensei que precisaria otimizar manualmente um app em VueQuinto, esse próprio folclore é um problema. A API do React e a “forma correta de escrever React” mudaram grande e repetidamente tantas vezes que ainda hoje é muito difícil separar o que continua válido do que não é mais
No fim, dá para resumir dizendo que o React foca demais em ideias, ciência da computação e abstrações de alto nível, e menos em facilitar de fato renderizar HTML interativo na tela
Uso bastante React, Vue e Svelte, mas quando uso React fico tendo que me preocupar o tempo todo com coisas que Vue ou Svelte já teriam resolvido. Em termos de desempenho, os três são parecidos
Já escrevi sobre isso antes: https://www.brachkow.com/notes/what-i-like-in-vue/
Tendo passado por praticamente todas as grandes fases do JavaScript nos últimos 16 anos, em certo sentido eu gosto de React
React é o pior framework JavaScript, excluindo todos os outros que já tentamos
Eu escolheria React qualquer dia em vez da era do Angular 1. Preferiria o MVC pesado do Angular 1 a algo como Backbone, em que você montava tudo manualmente do zero toda vez, e a estrutura MVC mínima do Backbone era melhor do que a sopa clássica de JQuery. Naquela época, eu também teria escolhido na hora a manipulação de DOM e a biblioteca padrão ampliada do JQuery em vez das APIs nativas
React também tem seus trade-offs, mas chegamos até aqui depois de passar muito tempo tentando inúmeras alternativas que simplesmente não funcionavam
Claro que existem pessoas que gostam de React. Não é algo que, como JavaScript, você seja praticamente obrigado a usar, e ninguém é forçado a usar React ou outro framework web, mas o React venceu. Dá para ver isso como evidência de que, pelo menos, as pessoas gostam dele o suficiente em comparação com a maioria dos outros frameworks
Até o fim dos anos 2010, uma reclamação comum sobre desenvolvimento web era que tudo mudava rápido demais e sempre surgiam coisas novas para aprender, e essa reclamação era válida. Mas, quando a monocultura do React chegou ao topo, agora todo mundo reclama disso também. Não dá para vencer nunca
O React venceu porque virou a opção padrão e porque as pessoas gostam daquilo com que já estão acostumadas
Se você quiser usar outra coisa, precisa implementar as integrações por conta própria, encontrar algum projeto open source que já tenha feito isso ou perguntar para uma IA
Em projetos paralelos até dá, mas no ambiente de trabalho isso é difícil de imaginar
Gosto de React. Também já usei com seriedade o ecossistema HTMX/Hotwire
Quando a navegação viesse da caixa de entrada, eu queria um botão de voltar que usasse a API do navegador para voltar; caso contrário, queria mandar para um link da caixa de entrada para preservar o scroll. Para isso, eu precisava ligar o comportamento no HTML para chamar a função de voltar e, no controller, determinar a página anterior e então entregar um botão de voltar com JavaScript habilitado ou um link fixo. A lógica ficou espalhada em 3 arquivos
No React, o JavaScript dentro do componente pode determinar se a página anterior era a caixa de entrada e, com base nisso, mostrar o JSX do botão de voltar ou um link. Tudo termina em um arquivo só. Para mim, basta modelar uma única entidade conceitual, enquanto nas outras abordagens eu precisava enfiar a funcionalidade à força em 3 entidades
É mais lento? Com certeza. Ainda assim, me deixa feliz. Se você sofre com o codebase bagunçado de React da empresa, tem que culpar seus colegas. Sem React, certamente teria sido pior
Tirando um aprimoramento ocasional de formulários, eu sempre preferiria htmx/renderização no servidor e comportamento nativo
No estilo recomendado do htmx, bastaria conectar um botão
onclicka um JavaScript inline ou, se você não gostar disso, chamar uma função comogoBackOrInboxfunction goBackOrInbox() { if (document.referrer) { const path = new URL(document.referrer).pathname; if (path.startsWith('/inbox')) { history.back(); return; } } window.location.href = '/inbox'; }Se você usa muito esse padrão, dá para parametrizar passando como argumento o caminho para onde deve ir
Usei código React por muito tempo e agora estou trabalhando em um grande projeto Vue na empresa. Antes, todo mundo dizia que Vue era a escolha mais fácil e acessível entre os dois, mas agora comecei a ver diferente
React é elegante porque, no fim das contas, componentes são basicamente só funções, e fora isso não tem muita coisa. Deixando o ecossistema Next.js de lado, é a coisa mais elegante que já vi em desenvolvimento frontend
Já Vue me parece uma mistura confusa. Dá para ver os traços de desenvolvedores backend que não queriam aprender JavaScript direito, adotaram e exaltaram a ferramenta, e o resultado parece uma mistura estranha que não se encaixa de forma limpa
Já usei todos os principais frameworks e hoje estou criando uma grande aplicação web em Angular. No Angular, componentes são expressos como classes, templates e estilos. Event listeners em geral chamam métodos da classe, e o estado pode ser tão simples quanto propriedades da classe. Parece muito mais natural e tem bem menos armadilhas. Claro, não zero
A experiência de uso é um pouco diferente. Há coisas mais fáceis no React e outras mais fáceis no Vue, mas o fato de o Vue usar signals é uma grande vantagem para mim
Mais do que o React em si, tenho mais interesse, de forma geral, na pergunta qual é a melhor maneira de escrever UI em código
Sou fã de React e uso React em quase todas as aplicações web que crio, mas o maior e mais claro problema é que escrever UI com React não parece tão natural quanto escrever ferramentas de linha de comando em Go ou apps em tempo real em Elixir
Algumas linguagens são surpreendentemente naturais e sem atrito para certos tipos de tarefa. Mas UI ainda é algo que ninguém conseguiu dominar de verdade. Swift, JSX/HTML, Svelte, ou qualquer framework popular dessa linha, todos passam a sensação de estar contornando o problema até certo ponto. Parece que, em algum momento, os designers da linguagem/framework acabaram colocando uma sintaxe improvisada, estranha ou dolorosa para acomodar os requisitos
A interface natural da UI é visual, então ferramentas como o Figma podem ser uma parte importante da solução. Ainda assim, parece que falta alguma coisa. Deve existir uma forma mais intuitiva de expressar em código algo visual. As soluções atuais são difíceis de definir com precisão, mas sempre parecem ficar por um triz aquém do ideal
Ainda hoje prefiro React a quase tudo, incluindo Svelte, Vue e Solid. Mas recentemente comecei a usar Crank(https://crank.js.org/) e ele parece um passo mais perto da direção para a qual eu quero ir. Ainda assim, até agora só usei em projetos de brincadeira, então é difícil dizer o quanto escala bem tanto em performance quanto em experiência de desenvolvedor
A melhor análise que já vi até agora está em “Programs = Data + Algorithms + Architecture: consequences for interactive software engineering”, de Chatty[2]. É um pouco difícil de ler, mas vale muito a pena
Resumindo rapidamente, o problema é a arquitetura e, mais especificamente, o desalinhamento entre linguagem e arquitetura. O estilo arquitetural de chamada/retorno induzido por linguagens de programação “de propósito geral” não combina com a arquitetura necessária para interfaces de usuário; na verdade, entra em conflito com ela
Também escrevi sobre esse tema em “Can Programmers Escape the Gentle Tyranny of call/return?”
A abordagem atual é primeiro criar Objective-Smalltalk[4], uma linguagem de programação que permite expressar facilmente estilos arquiteturais alternativos
Com isso, agora estou criando um framework de UI chamado interscript, que também inclui HTMXNative e vários elementos adicionais
Parece estar funcionando muito bem
[1] Ex.: Myers et al., “Languages for developing user interfaces” https://api.taylorfrancis.com/content/books/mono/download?id...
[2] https://opendl.ifip-tc6.org/db/conf/ehci/ehci2007/Chatty07.p...
[3] https://2020.programming-conference.org/details/salon-2020-p...
[4] https://objective.st
Mas, com o tempo, passei a aceitar respostas menos idealistas. Talvez essa solução nem exista. O espaço do problema pode ser complexo demais, e talvez não exista uma solução geral humanamente viável que cubra todas as formas possíveis. Se existe uma área em que isso provavelmente é verdade, é UI
Sim. O React é, de longe, a interface mais intuitiva, combinando com sucesso estilos declarativos e imperativos. Entre todos os frameworks de UI em todas as linguagens, não vejo nada que chegue perto de JSX
Gosto muito de Svelte e uso SvelteKit para apps mais complexos
Senti que foi uma melhoria muito melhor em muitos casos em que antes eu teria usado React
O Svelte parece muito mais fácil de aprender para quem conhece os fundamentos de desenvolvimento web, HTML, CSS e JavaScript. Mas hoje em dia vejo muita gente começando desenvolvimento web por React, e isso parece meio invertido
Pessoalmente, estou criando apps mobile com SvelteKit + Capacitor, e escrevi a configuração aqui: https://bryanhogan.com/blog/web-to-app-sveltekit-capacitor
Para landing pages simples, prefiro Astro
Concordo que hoje em dia as pessoas começarem desenvolvimento web por React parece invertido. O Svelte evita bem esse problema ao tratar HTML como língua materna. Se você começar desenvolvimento web com Svelte(Kit), é bem provável que aprenda mais fundamentos do que começando com React
Tenho viés porque fui uma das pessoas que ajudaram a tornar o React possível, mas eu realmente adoro React. Antes dele, eu tentava de tudo para consertar os problemas que enfrentávamos no frontend. Mas, depois que o React apareceu, essa necessidade desapareceu, e eu pude simplesmente focar em construir
Uma das apresentações de que realmente gostei foi https://www.youtube.com/watch?v=h9SDuTSy7ps. Pela minha experiência, a arquitetura do React é realmente muito boa e combina bastante com a criação de aplicações grandes
Infelizmente, o maior problema do React é que ele te força a entrar no ecossistema JS/TS. Para mim, JavaScript/TypeScript está sem dúvida mais para alvo de compilação do que para um sistema com o qual eu queira lidar diretamente
Estou satisfeito com Elm. A comunidade é realmente pequena e, às vezes, você precisa criar suas próprias bibliotecas. O TEA às vezes parece pouco natural para quem vem de React, mas eu sempre fico animado ao trabalhar com Elm porque não preciso me preocupar com estados implícitos e inesperados como
useEffectAlém disso, o Claude parece aguentar melhor Elm do que React, pelo menos dentro de codebases grandes e assustadoras
Como estado parece ser um grande tabu, isso também parece um pouco conflitante. Também fico me perguntando se isso significa que todo app em Elm acaba virando um app com Redux global + React sem efeitos. Queria entender melhor o que é divertido no Elm e como vocês trabalham com ele. Links também são bem-vindos