⚛️ Quando usar React, NextJS ou outra biblioteca / framework
Fazendo alguns comentários em posts aqui no TabNews sobre frameworks, resolvi sintetizar um pouco do que eu penso sobre a utilização (ou não) de dadas bibliotecas ou frameworks.
Falando sobre soluções construídas em cima de outras, como o caso do NextJS, que é construído em cima do React, muitos podem achar que é desnecessário construir um projeto React Puro, visto que acreditam que o NextJS é um "React com mais coisas". Ao meu ver, neste caso, por exemplo, o uso ou não de NextJS pode variar do contexto, principalmente no contexto de micro-frontend, um React puro pode ser mais interessante.
Exemplo de um projeto que eu trabalho:
Posuímos uma plataforma com modelo de assinatura e diversos produtos que compartilham essa mesma assinatura. São diversos frontends construídos em React, React-Native, Electron, NextJS e afins.
Eventualmente, queríamos que o usuário pudesse editar a sua assinatura a partir de qualquer um dos frontends. Para não replicar a mesma interface várias vezes, a solução foi: construir um micro-fontend para a assinatura, de forma que ele pudesse ser embutido em qualquer outro frontend, seja com uso de iframe, webview ou simplesmente jogando ele pro navegador no subdomínio desse micro-frontend.
Como era um simples micro-fronend de uma única página, com poucas interações, optamos por utilizar React puro, pois a arquitetura do código ficaria mais enxuta e não precisaria de toda uma estruturação de rotas e afins.
Esse projeto de micro-frontend foi feito em um repositório separado e sofre manutenções de forma desacoplada aos outros projetos. Os projetos compartilham o estado de login por meio de cookies ou injeção de javascript (com todo o cuidado de segurança).
Considerações aos iniciantes
Existe uma construção de conhecimento aí:
Lógica de programação / Algorítmos / afins > Javascript > React > NextJS
Foque no crescimento dessa massa de conhecimento da base para o avançado, assim, você poderá utilizar qualquer uma das etapas isoladamente. Pode ser que em alguns pedaços de soluções, um simples Javascript Vanilla (sem nenhum framework) já pode ser o suficiente.
Foque também em Arquitetura de Software, principalmente em Arquitetura de Soluções, para entender que construir um produto de software vai muito além de escrever código em um frameowork X, ou usando uma linguagem Y, mas sim, definir um ou mais componentes ("pedaços de software", seja frontends, backends, outros serviços( que interagem entre si, utilizando a ferramenta que for mais interessante para o contexto desse componente.