Calma! Não é bem assim. Eu explico.

Vamos começar entendendo o que é React. React é uma  biblioteca javascript criado pelo Facebook para desenvolver as interfaces que eles precisavam para a plataforma deles. Acontece que essa biblioteca ganhou popularidade (e o coração) de muitos desenvolvedores JS pelo mundo todo. O react facilita a vida de desenvolvedores em algums aspectos:

  • Faz a atualização do DOM a partir de um DOM virtual, automáticamente.
  • Foca em criar interfaces de usuário, por meio de componentes reutilizáveis
  • O DOM é atualizado automáticamente quando há uma alteração em algum estado/modelo. Ele "reage" de acordo com as alterações. Daí surge o nome React
"Nossa! É isso mesmo que eu precisava!! Uma biblioteca que reage às minhas alterações em tempo real" ~ você, ao ler os itens acima

Mas é aí que você se engana!

"React Não é reativo" ~ Eu

Como asim, não é reativo? Lembra quando eu disse que react é uma biblioteca de javascript? Pois bem, Javascript não é reativo, e portanto, React (uma biblioteca de js) também não pode ser. Claro, existem os observables que permitem que você acompanhe as mudanças... mas para isso você precisa se "inscrever" para acompanhar aquele objeto.  E lembre-se que react não usa streams, porque os desenvolvedores de react não querem que a biblioteca seja totalmente reativa 😲 .

E porque não é 100% reativo? Ora, porque se fosse, a quantidade de updates necessários seria imensa. E manipulação do DOM é uma das operações mais pesadas que acontecem no navegador.

"A biblioteca não reativa, mas ela ainda é boa para fazer UI, certo?" ~ Você, ao ler até aqui.

Em alguns casos sim...

"Ah, eu sabia! Então o título era clickbait, né?" ~ Você

Não. Deixa eu explicar...
Acontece que React também tem seus pontos fracos, que na minha opinião, pesam mais que seus pontos positivos:

  • Pesado. A biblioteca é pesada e precisa ser carregada em sua totalidade antes de carregar a página/app que você disponibilizou. Isso acontece mesmo que você otimize a biblioteca.
  • All-in. Você não pode implementar parcialmente ou gradativamente em uma aplicação que já esteja funcionando. Ou é criado tudo de novo, ou não se implementa nada.
  • Trabalha no DOM duas vezes. Uma no DOM virtual, e depois no DOM real. Sim, trabalhar no dom virtual é mais rápido, mas ainda assim, você precisa fazer  o trabalho duas vezes (uma no DOM e outra no VDOM). Esse retrabalho não é nada bom para as aplicações.
  • Com as atualizações e novas versões, outras formas de se  trabalhar foram adicionadas, deixando mais complexo(e complicado), pesado, e em muitos casos mais lento.
"Ah, mas o Facebook usa nas aplicações deles. Não pode ser ruim." ~Você, ainda incrédulo

React resolve os problemas do facebook. Foi desenvolvido para isso. Eles não estavam pensando em criar uma biblioteca para a comunidade. Eles precisavam resolver um problema, e criaram esta biblioteca. Simples assim. Isso não quer dizer que a solução encontrada seja boa (ou ruim). Quer dizer apenas que a solução funciona para eles (até o momento). Em algum ponto, irá deixar de ser útil, e eles irão trocar novamente.


Conclusão

Não existe uma bala de prata que resolva todos os problemas de interface e/ou frontend. Não vá acreditando que  só porque está na moda, vai ser maravilhoso. Não vai, e nunca vai ser.

Tá, mas e o que eu devo escolher então? ~ Você, desesperado

Para se escolher uma biblioteca, ferramenta, tecnologia,etc... para se trabalhar, é necessário entender um pouco melhor como as coisas funcionam. Existem outras soluções no caminho que podem te ajudar muito mais que React. Analisar o tamanho do projeto, o escopo, e diversos outras coisas antes de sair executando um npm install react.

Entra um javascript puro, e um react existem muitas outras ferramentas que podem te auxiliar. Em especial, eu deixaria vue js e svelte. As duas soluções são muito boas, em minha opinião. Vuejs é mais parecido com react, mas ele não usa JSX e não te obriga a fazer a aplicação do começo. Você pode ir implementando aos poucos. Já o svelta é um compilador para javascript. Até o momento, tem sido meu favorito. Ele otimiza o código e gera um JS otimizado. como ele é um compilador, você não vai ter uma biblioteca sendo carregada junto com sua aplicação, e sim javascript puro.
Tanto vuejs como svelte são "reativos" da mesma forma que react. Recomendo analisar pelo menos estas duas opções.