Guia de SEO em React: por que a renderização no cliente atrasa a indexação, quando usar SSR ou pré-renderização, como definir metatags no React 19 e ser legível para as IA.

Nesta página
Em resumo
o React pode ranquear no Google, mas um app de página única padrão envia um arquivo HTML quase vazio e depende de JavaScript para mostrar o conteúdo, o que atrasa a indexação e esconde a página da maioria dos rastreadores de IA. A solução confiável é entregar HTML pelo servidor: pré-renderizar as páginas estáticas no build ou usar um framework com renderização no servidor (Next.js, React Router). Depois, dê a cada URL um título, uma descrição e uma canônica únicos, use links reais e códigos de status corretos e verifique o que os bots recebem.
Quer ir mais longe? Pergunte ao
Quiz rápido
O SEO é para você, e como começar?
O Sorank combina com suas respostas
Teste por 3 dias no seu próprio site e veja onde você está no Google, no ChatGPT e nas outras IAs.
Teste grátis de 3 dias3 dias grátis, depois você para quando quiser. Garantia de resultados ou reembolso de 90 dias.
SEO em React é o trabalho de deixar uma aplicação React rastreável, indexável e compreensível para buscadores e assistentes de IA. O React em si é neutro: os problemas vêm de renderizar tudo no navegador. O Google confirma em seus princípios básicos de SEO para JavaScript que processa apps JavaScript em três fases (rastreamento, renderização e indexação) e que a renderização no servidor ou a pré-renderização "ainda é uma ótima ideia, porque deixa o site mais rápido para usuários e rastreadores, e nem todos os bots executam JavaScript".
Um app React criado como aplicação de página única entrega um arquivo HTML que contém pouco mais do que uma div raiz vazia e uma tag script. O navegador baixa o JavaScript, executa e monta a página. Um rastreador que lê só o HTML não vê nada para indexar: nem títulos, nem texto, nem links.
O Googlebot executa JavaScript, mas em uma etapa separada: a página é rastreada, entra na fila de renderização, é renderizada em um Chromium sem interface e só então os links e o conteúdo renderizados são usados. Cada etapa extra é uma chance de falha (erro de script, API bloqueada, tempo esgotado) e acrescenta atraso antes de as páginas novas aparecerem nos resultados. Nosso guia de SEO para JavaScript detalha esse fluxo, e nosso artigo sobre indexação no Google mostra como indexar páginas mais rápido.
Outros bots são menos pacientes. A análise da Vercel de dezembro de 2024, The rise of the AI crawler, concluiu que "nenhum dos grandes rastreadores de IA renderiza JavaScript atualmente", citando GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot e PerplexityBot. Uma página React renderizada no cliente fica invisível para ChatGPT, Claude e Perplexity, mesmo quando o Google a indexa.
A equipe do React passou a recomendar que novos apps comecem com um framework. Ao descontinuar o Create React App em 14 de fevereiro de 2025, ela escreveu no anúncio que "a renderização no servidor pode melhorar o SEO" e também melhora o desempenho ao reduzir o JavaScript que o usuário precisa baixar antes de ver o conteúdo. As opções, da mais fraca à mais sólida para a busca:
| Abordagem | O que os bots recebem | Veredito de SEO | Ferramentas comuns |
|---|---|---|---|
| Renderização no cliente (SPA) | HTML vazio, conteúdo depois do JavaScript | Fraca: indexação atrasada, invisível para rastreadores de IA | Vite + React, projetos antigos de Create React App |
| Renderização dinâmica | HTML pré-renderizado só para bots | Paliativo, não recomendado pelo Google | Serviços de pré-renderização, proxies com navegador sem interface |
| Pré-renderização estática no build | HTML completo para cada URL conhecida | Muito boa para conteúdo que muda pouco | Pré-renderização do React Router, geradores de sites estáticos, exportação estática do Next.js |
| Renderização no servidor | HTML completo a cada requisição, depois hidratação | A melhor para sites grandes ou atualizados com frequência | Next.js, React Router (modo framework, antigo Remix) |
Sobre a renderização dinâmica, a documentação do Google é clara: ela "era um paliativo e não uma solução de longo prazo", e o Google recomenda no lugar a renderização no servidor, a renderização estática ou a hidratação. Se você está escolhendo um framework, nosso guia de SEO no Next.js detalha modos de renderização, Metadata API e sitemaps.
Se migrar não for possível, o Google ainda consegue indexar um app de página única com alguns cuidados. Nosso guia de SEO para aplicações de página única lista as condições; o restante deste artigo vale para os dois casos.
Desde o React 19 (estável desde 5 de dezembro de 2024), os componentes podem renderizar diretamente tags title, meta e link, e o React as move para o head do documento. As notas de lançamento do React 19 afirmam que esse suporte nativo funciona "com apps só de cliente, SSR com streaming e Server Components". Antes do React 19, bibliotecas como react-helmet ou react-helmet-async faziam esse trabalho, e elas continuam úteis para sobrescrever padrões por rota.
function ProductPage({ product }) {
return (
<>
<title>{`${product.name} | Shop`}</title>
<meta name="description" content={product.summary} />
<link rel="canonical" href={`https://example.com/p/${product.slug}`} />
<h1>{product.name}</h1>
</>
)
}Três regras valem para qualquer método:
Atenção
Em um app só de cliente, as tags renderizadas pelo React só existem depois que o JavaScript roda. O Google consegue lê-las após a renderização; os rastreadores de IA e a maioria dos bots de prévia das redes sociais, não. A renderização no servidor ou a pré-renderização coloca essas tags na resposta HTML para todos.
O Google afirma que "só consegue descobrir seus links se eles forem elementos HTML a com um atributo href" e desaconselha usar fragmentos de URL para carregar conteúdos diferentes. A maioria das falhas de SEO em React vem de detalhes de roteamento:
| Erro | Efeito | Correção |
|---|---|---|
| Navegação com onClick em div ou botão | O Google não encontra link para seguir | Usar o componente Link do roteador, que gera um a com href |
| Rotas com hash (/#/produtos) | Todas as páginas dividem uma URL para o Google | Usar rotas baseadas em histórico (/produtos) com BrowserRouter ou um framework |
| Tela de "não encontrado" servida com status 200 | "Soft 404" no Search Console | Retornar um 404 real pelo servidor ou adicionar noindex via JavaScript em uma SPA pura |
| Redirecionamentos só no cliente | Redirecionamentos lentos ou ignorados | Usar redirecionamentos de servidor 301 ou 308 para páginas movidas |
| Conteúdo carregado no clique ou na rolagem | O texto nunca é renderizado para o rastreador | Renderizar o conteúdo principal no carregamento; paginar listas com URLs reais |
| JavaScript ou API bloqueados no robots.txt | O Google renderiza uma página vazia | Liberar os scripts e endpoints de API de que a página precisa |
Para ver o que o Google renderiza, use a ferramenta de inspeção de URL do Search Console e veja o HTML da página testada, ou passe os modelos de página principais por um verificador de indexabilidade.
O React não tem sitemap embutido. Gere o sitemap.xml no build a partir das rotas e dos dados (ou com o recurso de sitemap do seu framework), liste só URLs canônicas que respondem 200 e indique o arquivo no robots.txt. Para um site estático pequeno, um gerador de sitemap XML resolve.
Os dados estruturados seguem a mesma regra dos metadados: renderize o script JSON-LD junto com a página, a partir dos mesmos dados, de preferência no servidor. O Google consegue ler JSON-LD injetado por JavaScript depois da renderização, mas a marcação ausente do HTML inicial também fica ausente para os rastreadores que não renderizam. Use Article para posts, Product no e-commerce, Organization em todo o site e BreadcrumbList para páginas profundas.
Dica
Rode curl na URL de uma página e procure no resultado o H1 e uma frase do corpo. Se não aparecerem, o Google talvez indexe a página depois de renderizá-la, mas os rastreadores de IA não verão nada.
Pacotes grandes de JavaScript prejudicam as Core Web Vitals: o navegador precisa baixar, analisar e hidratar o código antes de a página responder, o que pesa no Largest Contentful Paint e no Interaction to Next Paint, sobretudo no celular. O anúncio da equipe do React sobre o Create React App lembra que a renderização no servidor envia menos JavaScript e um documento HTML completo, o que acelera o First Contentful Paint e pode reduzir o INP. Alavancas práticas: dividir o código por rota com React.lazy, servir imagens com dimensões explícitas, carregar sob demanda os componentes abaixo da dobra e revisar os scripts de terceiros.
O GEO (otimização para motores generativos) começa pelo acesso. Como os rastreadores de IA buscam o HTML bruto, uma página React precisa entregar texto, títulos e JSON-LD sem JavaScript para ser lida, resumida e citada. Uma auditoria de rastreabilidade para IA mostra o que esses bots recebem das suas páginas. A segunda condição é um conteúdo que mereça ser citado: páginas que respondem a uma pergunta por seção, com fontes, números e definições claras.
É essa parte de conteúdo que a Sorank, nosso produto, automatiza. A Sorank é um software de SEO e GEO no autopilot: o seu gerador de artigos para blog escreve e publica 20, 60 ou 120 artigos por mês com fontes, links internos e imagens, e se conecta por webhook a stacks personalizados, como um site React ou Next.js. O SEO Chat responde em uma conversa às suas perguntas sobre o desempenho do site na busca.

Resumindo: sirva HTML pelo servidor, dê a cada URL seu próprio título, descrição e canônica, e use links reais. Assim o React ranqueia como qualquer outro site, e os assistentes de IA conseguem lê-lo. Para abastecer esse site com artigos feitos para o Google e para as IA, veja os planos da Sorank, a partir de 49 € por mês com 3 dias de teste grátis.
Não. O React é uma biblioteca de interfaces, e o SEO depende de como as páginas são renderizadas. Um app de página única renderizado no cliente envia HTML vazio e depende da etapa de renderização do Google, o que atrasa a indexação e esconde o conteúdo dos rastreadores de IA. O mesmo código React servido com renderização no servidor ou pré-renderização estática ranqueia como um site tradicional.
Sim. O Googlebot executa JavaScript com uma versão recente do Chromium, então consegue indexar o conteúdo que um app React monta no navegador. A renderização acontece depois do rastreamento e pode atrasar ou falhar se scripts derem erro ou APIs estiverem bloqueadas. A ferramenta de inspeção de URL do Search Console mostra o HTML renderizado como o Google o vê.
Não nos casos simples. O React 19 renderiza tags title, meta e link a partir de qualquer componente e as move para o head do documento. Bibliotecas como react-helmet-async continuam úteis para sobrescrever padrões do site por rota ou para versões antigas do React.
ELES EXPERIMENTARAM O SORANK ANTES DE VOCÊ
