Executando verificação de segurança...
7

Nova documentação do React "finge" que SPAs não existem.

Ontem, 17 de março de 2023, uma nova documentação oficial do React foi publicada no site https://react.dev/. Essa nova documentação traz muitas novas melhorias, porém uma parte interessante se encontra na seção "Start a new React Project", onde anteriormente era recomendado o uso do create-react-app mas que deu lugar nessa nova versão para a recomendação de Frameworks como NextJS, Remix , Gatsby e Expo para projetos nativos.

Porém, essa mudança ocasionou uma certa repercursão online, uma vez que a biblioteca foi inicialmente criada com o intuito de construir Single Page Applications (SPAs) mas agora parece estar cada vez mais se desviando desse caminho.

A própria documentação afirma várias vezes que utilizar essas frameworks é a forma recomendada de se criar uma aplicação com React, e recomenda utilizar o React puro apenas em casos especiais onde sua aplicação possui alguma limitação não-usual.

docs

A remoção da recomendação do create-react-app é algo que a maioria viu como positivo, uma vez que a maior parte da comunidade entende que o projeto era bastante problemático e já havia migrado para ferramentas mais poderosas como o Vite

Porém, alguns parecem estar descontentes com o fato de que qualquer citação à ferramentas para criação de SPAs estão escondidas dentro da seção "Can I use React without a framework?", algo que se contraria bastante aos fundamentos da biblioteca.


tweet
Evan You, Criador do Vite e VueJS
tweet
Thomas Gauvin, Product Manager na Microsoft

Tudo isso faz sentido considerando algumas mudanças recentes no React como o post feito pelo Deschamps aqui: React está querendo tornar "APIs" algo obsoleto?. Ao visto o futuro do React é menos SPAs e mais SSR e aplicações full-stack, utilizando frameworks robustas como fundação para grandes projetos.

Claro, mesmo utilizando essas frameworks ainda é possível criar SPAs. Porém apesar disso o fato é que elas não foram feitas pra isso, o que ainda é mais contraditório, pois SPAs foram toda a motivação por trás do React no começo.

Na minha opinião, consigo entender o motivo da documentação referenciar essas frameworks, porém ainda sinto que o Vite deveria ser a primeira opção mencionada, pois sinto que para quem está iniciando trabalhar com uma framework pode acabar complicando mais do que ajudando.

Mas e ai, o que vocês acham dessa mudança??

Carregando publicação patrocinada...
3
3
  1. A motivação por trás do React foi criar uma maneira mais simples de criar aplicações interativas sem manipulação da DOM. SPAs foram consequência das limitações do React, e não o motivo pelo qual o React foi construído.

  2. Fazer ou não um SPA tem que ser uma decisão tomada como qualquer outra, baseado nas limitações e requerimentos do seu projeto. Eu conheço muito mais gente que fez SPA porque era o padrão do React na época e depois sofreu para quebrar essa arquitetura e fazer coisas simples como SEO, do que eu conheço gente que ativamente mediu benefícios e prejuízos e escolheu fazer um SPA.

  3. Por que você acha que frameworks complicam mais do que ajudam para iniciantes?

2

Fazer ou não um SPA tem que ser uma decisão tomada como qualquer outra, baseado nas limitações e requerimentos do seu projeto.

Mas como uma pessoa vai saber o que é uma SPA se ele for tão pouco citada na documentação? Digo para alguém que está começando, aprender React com uma SPA é mais fácil pois a pessoa pode concentrar nos conceitos mais básicos, não se esqueça que existe pessoas que tem dificuldade de aprender o próprio React.

2
  1. Bom ponto e eu concordo, apesar que diria que não foram consequências das limitações e sim um subproduto do design do React. React sempre foi uma lib minimalista e "incompleta" (e parece que eles estão querendo mudar isso agora)
  2. SPAs ainda existem, nem toda página precisa de SEO, e pra mim não vejo problema recomendar frameworks para projetos completos contanto que uma maneira de se criar SPAs ainda fosse especificada na documentação sem estar tão escondida
  3. Apenas minha opinião, frameworks podem acabar sendo "informação demais" para um iniciante, além do mais acho interessante entender a base antes de ir pra uma camada de abstração mais alta (da mesma forma que acho interessante entender js vanilla antes de ir pra uma biblioteca como o próprio React)
2

concordo com os pontos 1 e 2, mas meu pitaco sobre o 3:
qualquer nivel a mais de abstração utilizado no codigo gera um problema para iniciantes.
Porque ?
Para quem não sabe como as abstrações existentes no projeto funcionam as coisas acontecem como magica. Isso gera duvidas quando o caminho feliz não funciona.
Alem de ter mais syntax e conceitos a se aprender.

-1

Pra deixar bem claro - não tenho opinião formada a respeito de se é melhor usar frameworks para iniciantes ou não, e realmente gostaria de ouvir opiniões a respeito.

2

Se o mercado está tendendo para este lado, para mim, faz todo o sentido a documentação também focar nessas áreas. As empresas que trabalhei e trabalho não criam mais aplicações SPA, já que agora você pode criar aplicações com todas as vantagens de um SPA sem as desvantagens dele (SEO, build, etc).

E também nunca vi alguém realmente utilizando de fato os recursos de um app SPA, como salvar a página e utilizar como uma aplicação separada de um navegador.

2

Existe uma thread no Twitter onde o Dan explica essa tomada de decisão e esse shift que está acontecendo atualmente. Inclusive em outras threads ele cita que os termos SPA, SSG, MPA, etc, devem ser deixados de serem utilizados já que frameworks como o Next são um mix dessas terminologias.

Ele inclusive cita diversas vezes que o Next não precisa de um server node para executar, ou seja, pode ser usado como SPA. Eu particularmente discordo um pouco dessa abordagem já que ao usar o Next dessa forma, muitas das principais funcionalidades deixam de funcionar. Ou seja, vc está incluindo um framework robusto na stack do seu projeto apenas para usar o sistema de rotas que não inclui tudo no arquivo index.html. Soluções como gerenciamento de estado e data-fetching ainda seriam necessárias

https://twitter.com/dan_abramov/status/1636827365677383700

2
1
2
2
2

Incrível como as coisas são cíclicas na nossa área. Em certo momento todo mundo faz algo de um jeito, até que alguém inventa um jeito diferente e este se torna o novo "certo". Aí descobrem que não serve pra todos os casos e muitas vezes é até pior, e resolvem voltar pro antigo (mas tem vezes que dão outro nome só pra parecer "moderno").

Como um amigo meu disse: "Você está no ponto A abre um caminho para o ponto B porque acha que lá é mais bonito. Você percebe que B não é exatamente o que você esperava e deseja voltar ao A. Você tem duas opções: 1) voltar pelo mesmo caminho até A ou 2) Abrir um novo caminho e parar em C achando que está em A. SSR é a segunda opção."

1
2

Até que demorou pra nova tec front end do momento começar a se achar demais e tomar decisões dúbias baseadas em achismos e desvaneios de um diretoria que só olha pro seu umbigo.
Eu não uso React, embora já usei, e sempre achei muita coisa, se voce nao precisa fazer um projeto front end muito elaborado nao precisa dele. Na maioria dos casos a triade básica resolve: html+css+js.
Sempre indico que uma empresa NUNCA fique preso em uma framework modinha, pq sempre dá nisso. Uma hora eles piram o cabeçam e começam as bizarrices.

2

concordo totalmente que assumir que o React puro não é recomendado, é um tiro no pé. Desde que comecei a desenvolver com React, 90% dos casos fui para opções como SPA, especialmente em projetos que precisamos de resultados rápidos e não podem perder tempo com infra, SSR, tipos de bundles e afins. Hoje com opções como vite, concordo que o CRA hoje é visto como não performático com as configurações padrões, mas acelera muito o start do projeto, acredito que deveriam deixar como opção escolha pro dev, sem colocar como "não recomendado", porque cada caso é um caso e cabe o Dev decidir, sem interferência de uma DOC dizer que não é recomendado. DOC tem peso, o Dev decidir por contradizendo a DOC oficial, pode ser visto como má pratica, e as vezes travar uma briga com Arquitetos/Product Managers, por não ser uma opção recomendada pela DOC...

2

Concordo com o que você falou, mas sobre a situação do CRA, muitos que pediram para ele ser removido da documentação queriam ver ferramentas como o Vite sendo mencionadas de forma mais aberta.

1

CRA ser removido sem um prévio momento de depreciamento, acredito ser uma estratégia bem agressiva, porque existem projetos com configurações esspecificas, que precisam de um tempo para se adaptarem... Sobre o Vite, ele está ganhando espaço, e eu mesmo já uso em novos projetos SPA, tendo ele como prioridade, os ganhos de performance e simplicidade são absurdos quando comparado com CRA.

2

primeiramente, ótimo conteúdo.

como sempre aconteceu, as coisas mudaram e continuarão mudando, por isso é muito importante a gente se manter sempre atualizado, quando se trata de frontend há uma infinidade de opções, você deve aproveitar aquela que te faz mais produtivo mas ao mesmo tempo seguir fazendo varios scaffoldings de frameworks novos e tecnologias novas pois a história mostra que tendencias mudam rapidamente. Quando angular 2 com Typescript surgiu galera teve que correr, no react quando surgiram redux saga tivemos que correr, quando o next era novidade e queriamos fugir do SPA propositalmente por motivos especificos, entre outros, esses sao alguns dos movimentos de mudança que vi acontecer pra mim, teve outros que nem lembro, você deve ter os seus.

Vemos que tudo muda rapidamente e isso é bom. Vamos em frente acompanhar mais esta mudança, bem vindo à vida de programador que precisa estar sempre atualizado. abraços

1

SPA não fazem mais sentido, porque com frameworks como nextjs, você consegue gerar páginas estáticas, e embutir interatividade após o conteúdo da página ser enviado. Com nextjs você consegue SEO e interatividade. Com SPA você tem uma página interativa, que retorna apenas um arquivo javascript enorme do servidor, em que caso de uso você precisaria disso? como já respondido pela equipe do react, em casos específicos.

1

Na minha opinião, usar SSR não tira o status de SPA de uma aplicação, na verdade, SSR é só um meio de renderizar/gerar HTML para algumas partes do SPA.

Isso que o React está fazendo é o ideal. Você recebe os benefícios e a experiência de usuário de um SPA, e mesmo assim ainda consegue manter uma qualidade de SEO. A verdade é que a maioria das aplicações comerciais em React já usa algum framework desse tipo.

1

Nada te impede de fazer SPAs nesses frameworks. Na verdade, é bem fácil.
Contudo, no meu ver, iniciantes frequentemente buscam criar aplicações inerentemente MPAs como SPAs, o que as obriga a usar um roteador. Nesse caso, o bom e velho mapeamento da URL pro sistema de arquivos é muito mais intuitivo, como um PHP da vida.