A página que o Google via estava vazia
O site de um cliente estava no ar havia oito meses. Texto bom, cases reais, um designer que sabia o que fazia. Rankeava para exatamente um termo: o próprio nome da empresa. O time achou que o mercado estava concorrido. O mercado nunca tinha visto o site.
A página inteira era renderizada no navegador. O que o servidor entregava era isto:
<div id="root"></div>
<script type="module" src="/assets/index.js"></script>Cada título, cada case, cada palavra do texto só existia depois que o JavaScript rodava. O Google consegue rodar JavaScript. A questão é se ele vai, e quando.
Renderização é uma fila, não uma garantia
O Googlebot rastreia em duas passadas. A primeira busca seu HTML e indexa o que estiver nele. Se a página precisa de JavaScript para produzir conteúdo, a URL entra numa fila de renderização e volta depois — às vezes horas, às vezes dias, e esse atraso não é algo que você controle ou consiga observar direto.
Num site com autoridade, a fila esvazia rápido o suficiente para ninguém perceber. Num domínio novo sem sinal nenhum, é a diferença entre ser indexado neste mês ou no próximo trimestre. E todo outro crawler — o do preview do LinkedIn, o do unfurl do Slack, a maior parte da recuperação por IA — não renderiza nada. Lê o HTML e vai embora.
Verificar leva trinta segundos
Busque sua própria página do jeito que um crawler busca, com JavaScript desligado por construção:
curl -sS https://seusite.com | grep -o '<h1[^>]*>.*</h1>'Se o título voltar, o servidor está entregando conteúdo de verdade. Se não voltar nada, é isso que a primeira passada enxerga. Faça também numa página interna — um case, uma página de serviço — porque muito site renderiza a home no servidor e todo o resto no cliente.
O que resolve de fato
Renderização no servidor, ou geração estática, ou qualquer abordagem em que o HTML saia do seu servidor já contendo as palavras. O framework importa muito menos que a propriedade: conteúdo na resposta inicial.
- Páginas de marketing, cases, documentação, qualquer coisa que você quer que seja encontrada: renderize no servidor. Não há ganho nenhum em entregar isso como casca vazia.
- Painéis e ferramentas autenticadas: renderizar no cliente está ótimo. Ninguém procura por elas e elas nem deveriam ser indexadas.
- Middleware de prerender que serve um snapshot só para bots é contorno, não solução. Você passa a manter duas versões de cada página e a torcer para que concordem.
A parte que ninguém orça
Migrar estratégia de renderização não é reescrever tudo, mas também não é um fim de semana. Roteamento, busca de dados e estado normalmente todos pressupõem o navegador. A estimativa honesta é semanas, não dias.
O motivo de fazer mesmo assim é que a alternativa é pagar por tráfego que deveria ter sido conquistado. Um site que não pode ser lido é um folheto com domínio — e oito meses de bom texto que ninguém achou custa mais caro que a migração.
Construindo algo onde essas decisões importam?
Iniciar projeto