Tecnologia
October 15, 2026

SEO para sites em JavaScript: React, Next.js, SSR e CSR na prática

Como o Google renderiza JavaScript, quando usar SSR, SSG ou ISR, como diagnosticar sites em React e Next.js e o que as IAs conseguem ler.
Símbolo da PIPA Marketing
SEO para sites em JavaScript: React, Next.js, SSR e CSR na prática

SEO para sites em JavaScript é o trabalho de fazer com que buscadores e sistemas de IA consigam ler o conteúdo, os links e os metadados de um site feito com React, Vue, Angular ou frameworks parecidos. O Google renderiza JavaScript, mas em uma etapa separada do rastreamento, e vários rastreadores de IA não executam JavaScript nenhum. Por isso, eu recomendo que o conteúdo principal, os links e as tags de SEO cheguem prontos no HTML enviado pelo servidor, com SSR ou geração estática.

Em empresas de SaaS, o site institucional muitas vezes nasce no mesmo repositório do produto, feito pelo time de engenharia com a mesma stack. Faz sentido do ponto de vista de quem desenvolve. O problema aparece meses depois, quando o marketing pergunta por que as páginas novas não aparecem no Google ou por que a IA descreve a empresa com informações velhas.

Neste guia eu explico como o Google processa JavaScript segundo a própria documentação, a diferença entre CSR, SSR, SSG e ISR, por que sites em React sofrem, o que muda com Next.js, como diagnosticar e o que os rastreadores de IA enxergam.

SEO para sites em JavaScript: como o Google rastreia e renderiza

A documentação de fundamentos de SEO para JavaScript do Google descreve três fases: rastreamento, renderização e indexação. O Googlebot busca a URL, confere o robots.txt e lê o HTML que o servidor entregou. Depois, as páginas com status 200 entram numa fila de renderização, onde um Chromium sem interface executa o JavaScript. Só então o Google analisa o HTML renderizado para extrair conteúdo e novos links.

Segundo o Google, a página pode ficar alguns segundos nessa fila, e às vezes mais. Na prática, isso significa que tudo o que depende de JavaScript chega ao índice depois do que já estava no HTML inicial. Para um blog com poucas páginas, a diferença pode ser pequena. Para um site com centenas de páginas de integração ou de casos de uso, cada etapa extra pesa na descoberta.

Alguns detalhes da documentação que eu vejo causarem problema com frequência:

  • noindex no HTML inicial. Se o HTML original tem noindex, o Google pode pular a renderização. Remover o noindex via JavaScript depois não funciona de forma confiável.
  • URLs com fragmento. Rotas do tipo /#/precos não são resolvidas de forma confiável. O caminho é usar a History API com URLs reais.
  • Códigos de status em aplicações de página única. Uma página de erro que devolve 200 pode ser indexada como conteúdo (o famoso soft 404).
  • Recursos bloqueados no robots.txt. Se o arquivo JavaScript que monta a página está bloqueado, o Google não consegue renderizar o conteúdo.

O mesmo documento diz que renderizar no servidor ou pré-renderizar continua sendo uma boa ideia, porque deixa o site mais rápido para usuários e rastreadores e porque nem todo robô executa JavaScript. Essa frase resume a minha recomendação de SEO para sites em JavaScript que existem para gerar demanda.

CSR, SSR, SSG e ISR: a diferença que importa para SEO

As siglas confundem, mas a pergunta que eu faço é sempre a mesma: quando o rastreador pede a URL, o HTML que volta já tem o texto, os links e as tags de SEO? O artigo do web.dev sobre renderização na web define cada abordagem, e eu resumo pensando em SEO.

CSR: renderização no cliente

O servidor entrega um HTML quase vazio e um pacote de JavaScript. O navegador executa o código, busca os dados e monta a página. Para o rastreador que não executa JavaScript, a página é praticamente uma tela em branco. Para o Google, funciona depois da renderização, mas o web.dev observa que esse modelo costuma exigir mais teste e mais cuidado.

SSR: renderização no servidor

O servidor monta o HTML completo a cada requisição e envia pronto. O JavaScript depois "hidrata" a página para deixá-la interativa. Para SEO, resolve o problema central, porque o conteúdo está no primeiro HTML. O custo é processamento no servidor e, às vezes, um tempo de resposta maior.

SSG: geração estática

O HTML de cada URL é gerado no momento do build e servido como arquivo estático. É a opção mais simples e rápida para páginas que mudam pouco, como a maioria das páginas de um site institucional de SaaS. A limitação aparece quando há muitas páginas ou conteúdo que muda com frequência, porque cada mudança exige novo build.

ISR: regeneração estática incremental

É um recurso do Next.js que combina as duas coisas. A documentação de ISR do Next.js explica que as páginas são geradas como estáticas e atualizadas em segundo plano depois de um intervalo definido, ou sob demanda quando o conteúdo muda no CMS. Para blogs e diretórios de integração grandes, é o modelo que eu mais recomendo: HTML pronto para o rastreador, sem rebuild do site inteiro a cada post.

E a renderização dinâmica?

Durante anos, a saída para sites em CSR foi servir uma versão pré-renderizada só para robôs. O próprio Google hoje descreve a renderização dinâmica como uma solução paliativa e não recomendada, e aponta SSR, renderização estática ou hidratação como caminhos melhores. Eu só uso como ponte temporária enquanto a migração para SSR não sai.

Por que sites e apps SaaS em React sofrem com SEO

O que eu vejo dar errado com React é usar a configuração padrão de uma aplicação de página única para páginas que precisam ser encontradas em busca. No que vejo em projetos de SaaS, os sintomas se repetem:

  • Título e meta description iguais em todas as rotas. O HTML inicial tem um title genérico, e as tags específicas só aparecem depois do JavaScript, quando aparecem.
  • Links que não são links. Navegação feita com div, button ou span com onClick. O Google só segue elementos a com href, como explica a documentação de links rastreáveis. Um routerLink sem href ou um onclick sem href podem deixar páginas inteiras sem descoberta.
  • Conteúdo carregado só depois de interação. Abas, acordeões e "carregar mais" que buscam o texto apenas no clique. O renderizador do Google não clica.
  • Conteúdo que depende de estado guardado. O Google limpa cookies, localStorage e sessionStorage entre carregamentos. Página que precisa de algo salvo para mostrar o conteúdo aparece vazia para ele.
  • Erro com status 200. Rota inexistente que mostra "página não encontrada" mas devolve 200 ao servidor.
  • Pacote de JavaScript pesado. Afeta a experiência e as métricas de performance, como explico no guia de Core Web Vitals para sites B2B.

Outro ponto comum: o site de marketing e o aplicativo logado dividem o mesmo domínio e a mesma base de código. Aí qualquer decisão de arquitetura do produto afeta o SEO das páginas públicas. Quando possível, eu separo o site público do app, com stack e deploy próprios. Falo mais dessa decisão no guia sobre site para SaaS.

SEO para Next.js: o que muda

O Next.js resolve boa parte dos problemas acima porque oferece SSR, SSG e ISR por rota. No App Router, os componentes são de servidor por padrão, o que significa que o HTML inicial já sai com conteúdo, a menos que o time marque tudo como componente de cliente. Ainda assim, só adotar o framework não resolve o SEO. Os erros que eu encontro em sites feitos com ele:

  • "use client" no topo de páginas inteiras. A página volta a depender do navegador para montar o conteúdo principal.
  • Dados buscados no cliente com useEffect. O HTML do servidor sai com um esqueleto de carregamento e o texto só chega depois.
  • Metadados genéricos. A API de metadata existe, mas ninguém configurou title, description e canonical por rota.
  • Sitemap e robots esquecidos. O framework tem convenções próprias para gerar os dois, e muitas vezes elas não foram usadas.
  • Schema injetado só no cliente. O JSON-LD precisa sair no HTML do servidor. O guia de schema markup para B2B mostra quais tipos usar.
  • Página de erro com status errado. A função notFound precisa ser chamada para que a rota devolva 404 de verdade.

Para um site de marketing em Next.js, o meu padrão é SSG ou ISR para páginas institucionais, posts e integrações, e SSR só onde o conteúdo realmente precisa ser montado a cada requisição.

Como diagnosticar problemas de renderização JavaScript no SEO

O Google tem um guia para corrigir problemas de JavaScript na Busca, e eu sigo uma versão prática dele. São quatro testes que qualquer pessoa do time de marketing consegue fazer.

1. Compare o HTML de origem com o HTML renderizado

Abra a página no navegador, use "exibir código-fonte" e procure o título principal e um parágrafo do meio do texto. Se não estiverem lá, o conteúdo depende de JavaScript. O código-fonte é o que um rastreador sem JavaScript recebe.

2. Use a Inspeção de URL do Search Console

Na Inspeção de URL, o teste ao vivo mostra o HTML renderizado pelo Google, uma captura de tela, os recursos que não carregaram e as mensagens do console JavaScript. Eu confiro se o texto completo, os links e as tags de title, canonical e robots aparecem no HTML renderizado. O Teste de pesquisa aprimorada mostra a mesma visão para quem não tem acesso ao Search Console.

3. Confira os links

No HTML renderizado, procure os links do menu, do rodapé e do corpo. Todos precisam ser elementos a com href apontando para URLs reais. Se a navegação depende de clique em elementos sem href, o Google pode não descobrir as páginas de destino.

4. Teste rotas inexistentes e páginas de erro

Acesse uma URL inventada e veja o código de status na aba de rede do navegador. Precisa ser 404. Se for 200, o site está gerando soft 404.

Depois desses testes, olho o relatório de indexação de páginas no Search Console. Muitas URLs em "Rastreada, mas não indexada" ou "Descoberta, mas não indexada" num site em JavaScript costumam apontar para problema de renderização ou de links. Esse diagnóstico faz parte de qualquer projeto de SEO técnico que eu conduzo em empresas de software.

O que os rastreadores de IA enxergam em sites JavaScript

Aqui a situação é diferente do Google. Em dezembro de 2024, a Vercel publicou com a MERJ uma análise de tráfego de rastreadores de IA na rede da Vercel e concluiu que nenhum dos principais rastreadores de IA observados renderizava JavaScript. Entre eles estavam os robôs da OpenAI (GPTBot, OAI-SearchBot e ChatGPT-User), o ClaudeBot da Anthropic e o PerplexityBot. Alguns até baixavam arquivos JavaScript, sem executá-los. Na mesma análise, o Gemini aparece com renderização completa por usar a infraestrutura do Googlebot.

Eu trato esse dado com cautela. É um retrato de dezembro de 2024, feito a partir do tráfego de uma plataforma específica, e as empresas de IA não publicam documentação detalhada sobre como seus robôs lidam com renderização. Mesmo assim, a conclusão prática é segura: se o conteúdo só existe depois do JavaScript, há um risco real de os sistemas de IA lerem uma página vazia ou incompleta.

Isso afeta diretamente o trabalho de GEO. Se a página de produto de um SaaS em CSR não entrega texto no HTML, a IA tende a se apoiar em fontes externas, que podem estar desatualizadas, para descrever a empresa. A recomendação da própria Vercel vai na mesma linha da minha: renderizar no servidor o conteúdo principal, os metadados e a navegação, e deixar no cliente só o que é interação.

Como corrigir o SEO para sites em JavaScript: o roteiro que eu sigo

Quando um cliente me pede ajuda com SEO para sites em JavaScript, a correção depende da stack e do tamanho do site. Este é o caminho que eu costumo propor, em ordem:

  1. Inventário de templates. Listo os tipos de página (home, produto, solução, integração, post, case, preço) e testo uma URL de cada com os quatro testes acima.
  2. Correções rápidas. Links com href, title e meta description por rota, canonical, status 404 correto, noindex fora do HTML de páginas que devem ser indexadas.
  3. Conteúdo principal no HTML. Em Next.js, mover a busca de dados para componentes de servidor e usar SSG ou ISR. Em React puro, avaliar pré-renderização no build como etapa intermediária.
  4. Separação entre site e app. Se o site de marketing vive dentro da aplicação, planejar a separação. Pode ser em Next.js ou numa plataforma de site, conforme quem vai manter o conteúdo.
  5. Migração com cuidado. Trocar a renderização ou a plataforma muda URLs, templates e HTML. Sem mapa de redirecionamentos e testes antes do lançamento, a troca pode derrubar o tráfego. É o mesmo cuidado de uma migração de site com SEO.
  6. Monitoramento. Acompanho o relatório de indexação, as estatísticas de rastreamento e, nos logs do servidor, as visitas de rastreadores de IA.

O prazo varia muito. Correções de links e metadados costumam levar poucas semanas. Mudar o modelo de renderização de um site inteiro é um projeto de engenharia, e o efeito na indexação aparece aos poucos, conforme o Google rastreia de novo as páginas.

Erros comuns em SEO para React e outros frameworks

  • Confiar que "o Google renderiza tudo". Ele renderiza, com atraso e com limitações, e outros sistemas não renderizam.
  • Testar só no navegador logado. O que você vê com cookies e sessão pode não ser o que o rastreador vê.
  • Usar renderização dinâmica como solução definitiva. O Google trata essa abordagem como paliativa.
  • Esconder conteúdo atrás de clique. Texto que só carrega ao abrir uma aba não existe para o rastreador.
  • Deixar o SEO de fora das decisões de arquitetura. A escolha entre CSR e SSR feita no começo do projeto define o custo de corrigir depois.

Perguntas frequentes

O Google indexa sites feitos em React?

Sim, o Google renderiza JavaScript com um Chromium e pode indexar sites em React. Mas a renderização acontece numa etapa separada, depois do rastreamento, e problemas como links sem href, noindex no HTML inicial ou conteúdo atrás de clique continuam atrapalhando. Por isso eu prefiro que o conteúdo já venha no HTML do servidor.

SSR ou CSR: qual é melhor para SEO?

Para páginas que precisam aparecer em busca, SSR ou geração estática. Os dois entregam o conteúdo no HTML inicial, que qualquer rastreador lê. CSR funciona para o Google depois da renderização, mas exige mais teste e deixa de fora os rastreadores que não executam JavaScript.

Next.js resolve o SEO sozinho?

Não. O framework oferece SSR, SSG e ISR, mas a configuração pode anular essas vantagens. Página inteira marcada como componente de cliente, dados buscados no navegador e metadados genéricos são comuns. É preciso conferir o HTML que cada rota entrega.

O ChatGPT consegue ler um site feito em JavaScript?

Segundo a análise da Vercel publicada em dezembro de 2024, os rastreadores da OpenAI observados não executavam JavaScript. Isso indica risco de leitura incompleta quando o conteúdo depende de renderização no navegador. Como esses robôs mudam e não há documentação detalhada, eu recomendo entregar o conteúdo principal no HTML do servidor.

Como saber se o meu site tem problema de renderização?

Compare o código-fonte da página com o HTML renderizado na Inspeção de URL do Search Console. Se o texto principal, os links ou as tags de SEO só aparecem no renderizado, existe dependência de JavaScript. Confira também se rotas inexistentes devolvem status 404.

Próximo passo

Se o seu site foi feito pelo time de produto em React ou Next.js e o marketing não sabe o que o Google e as IAs estão enxergando, o primeiro passo é testar um template de cada tipo e mapear onde o conteúdo depende de JavaScript. A Pipa faz esse diagnóstico dentro do trabalho de SEO técnico para empresas de tecnologia e conecta as correções à estratégia de SEO para SaaS. Se quiser uma primeira leitura do seu site, peça o diagnóstico gratuito.

Newsletter

Inscreva-se e informe-se!