SEO de frameworks JavaScript
SEO para frameworks JavaScript — React, Next.js, Vue, Nuxt, Angular, Svelte e Astro. Como o modo de renderização (SSR, SSG, CSR) determina o que o Google pode indexar e quais frameworks lidam melhor com SEO por padrão.
Idiomas
O SEO de frameworks JavaScript se resume ao modo de renderização: SSG e SSR fornecem ao Googlebot HTML pré-construído; CSR exige execução de JavaScript que pode ou não ser bem-sucedida. Next.js e Nuxt têm o maior suporte integrado de SEO (SSR, SSG, ISR, APIs de metadados). React e Vue puros em modo CSR são os mais arriscados para SEO. A arquitetura de ilhas do Astro é excelente para SEO por padrão. Angular requer SSR via @angular/ssr (antigo Angular Universal) para indexação confiável.
TL;DR — A maioria dos frameworks JavaScript constrói páginas no navegador do visitante (CSR). Isso funciona bem para usuários, mas os mecanismos de busca podem não executar o JavaScript e perder seu conteúdo. A solução: use um modo de framework que constrói páginas no servidor (SSR) ou no momento da compilação (SSG). Next.js e Nuxt facilitam isso; React puro e Vue em modo CSR exigem trabalho extra.
Por que frameworks JavaScript têm preocupações de SEO
O Google processa JavaScript por meio de rastreamento, renderização e indexação, e recursos bloqueados ou com falha podem alterar o resultado renderizado. Evidence for this claim Primary standard or official documentation supporting the adjacent article claim. Scope: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Confidence: high · Verified: Google: JavaScript SEO basics O modo de renderização e a implementação de metadados importam mais do que a marca do framework em si. Evidence for this claim Primary standard or official documentation supporting the adjacent article claim. Scope: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Confidence: high · Verified: web.dev: Rendering on the Web
Sites tradicionais enviam HTML completo do servidor. Os rastreadores de mecanismos de busca baixam esse HTML e indexam o conteúdo imediatamente. Frameworks JavaScript geralmente funcionam de forma diferente: o servidor envia um arquivo HTML mínimo, e então o JavaScript é executado no navegador para construir o conteúdo real da página.
Se um rastreador de mecanismo de busca não executa seu JavaScript (ou executa, mas algo falha), ele vê uma página vazia. Esse é o problema de SEO do CSR.
Modos de renderização explicados
- SSG (geração de site estático) — as páginas são construídas como HTML no momento da implantação. Os rastreadores recebem HTML completo sem necessidade de JavaScript. Melhor para SEO.
- SSR (renderização no servidor) — o servidor constrói o HTML novo para cada solicitação. Os rastreadores recebem HTML completo. Também excelente para SEO.
- CSR (renderização no cliente) — o JavaScript constrói a página no navegador. Os rastreadores precisam executar JavaScript para ver o conteúdo. O Google consegue fazer isso, mas falhas acontecem e a descoberta é mais lenta.
Frameworks por segurança de SEO pronta para uso
Mais seguros:
- Astro — gera HTML estático por padrão; JavaScript apenas onde você optar
- Next.js — oferece SSG, SSR e ISR; API de metadados completa; padrão da indústria
- Nuxt — o mesmo para o ecossistema Vue; excelente suporte a SSR/SSG
Requer configuração:
- Angular — CSR por padrão; precisa de
@angular/ssr(antigo Angular Universal) para SEO seguro - React — CSR por padrão; precisa de Next.js ou React Router (modo framework) para SSR/SSG
- Vue — CSR por padrão; precisa de Nuxt para SSR/SSG
- Svelte — CSR por padrão; SvelteKit adiciona suporte a SSR/SSG
TL;DR — No nível técnico, o SEO de frameworks JS trata de: (1) arquitetura de renderização para o payload HTML inicial, (2) injeção de metadados no
<head>antes do envio da resposta, (3) como o framework lida com hidratação e descoberta de links, e (4) obsolescência do cache ISR. Next.js tem o conjunto de ferramentas de SEO integrado mais completo (API de Metadados,app/sitemap.tsintegrado, otimização de imagens). Astro é o mais seguro para SEO por arquitetura.
Modo de renderização, API de metadados e suporte a ISR por framework
As capacidades e padrões dos frameworks mudam conforme a versão; verifique-os na documentação oficial de cada framework. Evidence for this claim Primary standard or official documentation supporting the adjacent article claim. Scope: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Confidence: high · Verified: web.dev: Rendering on the Web Nenhum modo de renderização garante indexação ou ranqueamento. Evidence for this claim Primary standard or official documentation supporting the adjacent article claim. Scope: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Confidence: high · Verified: Google: JavaScript SEO basics Ao comparar frameworks para uma decisão, teste as mesmas rotas, conteúdo, destino de implantação e ferramentas para cada candidato — um benchmark que altera qualquer um desses não está medindo o framework, está medindo a diferença na configuração.
| Framework | Renderização padrão | API de metadados integrada | Suporte a SSR/SSG | Suporte de SEO do ecossistema |
|---|---|---|---|---|
| Astro | SSG (ilhas) | Sim (<head> em arquivos .astro, Content Collections para dados estruturados) | Ambos | Forte |
| Next.js | SSR/SSG (configurável) | Sim (Metadata API no App Router) | Ambos + ISR | Excelente |
| Nuxt | SSR por padrão | Sim (useHead, useSeoMeta) | Ambos + ISR | Excelente |
| SvelteKit | SSR por padrão | Sim (svelte:head) | Ambos | Bom |
| React Router (modo framework) | SSR por padrão | Sim (exportação meta) | SSR + Deferred | Bom |
| Angular | CSR por padrão | Via serviços Meta/Title do Angular | Via @angular/ssr | Moderado |
| React (puro) | CSR | Manual (react-helmet-async; react-helmet não é mantido) | Via Next.js/Gatsby | Depende do wrapper |
| Vue (puro) | CSR | Manual (@unhead/vue; vue-meta não é mantido) | Via Nuxt | Depende do wrapper |
Remix v2 e React Router v7 se fundiram — o modelo de renderização no servidor e carregamento de dados do Remix agora é enviado como “modo framework” do React Router, e esse é o caminho de atualização estável para aplicativos Remix v2. Remix 3 é uma reescrita separada e experimental sem React (beta), não o sucessor do Remix v2 — não o trate como uma opção de SSR plug-and-play para uma base de código React.
Tempo de metadados, links rastreáveis e obsolescência do cache ISR
Tempo de injeção de metadados — Os metadados (<title>, <meta>) devem estar na
resposta do servidor, não adicionados por JavaScript após o carregamento da página. A Metadata API do Next.js,
o useSeoMeta do Nuxt e o componente <head> do Astro lidam com isso corretamente.
document.title = '...' ou React Helmet em modo CSR não — eles são executados após o
HTML inicial ser servido.
Descoberta de links — O Googlebot descobre links analisando HTML. Links adicionados via
JavaScript (onClick, roteamento dinâmico sem tags <a>) podem não ser descobertos.
Use elementos reais <a href> para navegação importante.
Hidratação e conteúdo duplicado — Se SSR e CSR renderizarem conteúdo diferente (incompatibilidade de hidratação), você pode acabar com conteúdo indexado que não corresponde ao que os usuários veem. Teste erros de hidratação no console do navegador.
Soft 404s — Roteadores do lado do cliente podem renderizar silenciosamente uma interface de “página não encontrada” enquanto retornam um status HTTP 200. Os mecanismos de busca indexam essas como páginas reais. Certifique-se de que sua página 404 retorne um status 404 real, e redirecionamentos do lado do servidor retornem 301.
Invalidação de cache ISR — Em configurações ISR do Next.js e Nuxt, páginas obsoletas podem ser
servidas aos rastreadores durante a janela de revalidação. Defina um intervalo de revalidate baseado em tempo,
e para conteúdo que muda em um cronograma que você não controla (um salvamento de CMS, por exemplo),
combine-o com revalidação sob demanda acionada por um manipulador de rota baseado em webhook — veja o guia ISR do Next.js
para a API completa.
// app/blog/[id]/page.tsx — time-based revalidation
export const revalidate = 3600 // re-check this page at most once an hour
// app/api/revalidate/route.ts — on-demand revalidation, called by a CMS webhook
import { revalidatePath } from 'next/cache'
import { NextRequest, NextResponse } from 'next/server'
export async function POST(request: NextRequest) {
const { path, secret } = await request.json()
if (secret !== process.env.REVALIDATE_SECRET) {
return NextResponse.json({ message: 'Invalid secret' }, { status: 401 })
}
revalidatePath(path) // e.g. '/blog/1' — next request regenerates fresh HTML
return NextResponse.json({ revalidated: true })
} O SEO de frameworks JavaScript é determinado principalmente pelo modo de renderização. SSG (páginas construídas como HTML estático no momento do deploy) e SSR (páginas renderizadas no servidor por solicitação) são ambos seguros para indexação em mecanismos de busca. CSR (páginas renderizadas inteiramente no navegador via JavaScript) é mais arriscado — o Google pode executar JavaScript, mas falhas e atrasos são comuns, e a descoberta é mais lenta.
Next.js (meta-framework React): Suporte de SEO integrado mais completo. Metadata API do App Router, SSG/SSR/ISR, otimização de imagens, app/sitemap.ts integrado (o pacote next-sitemap agora só é necessário para extensões que ele não cobre), pré-busca em nível de link. Padrão da indústria para aplicativos React sensíveis a SEO.
Nuxt (meta-framework Vue): Capacidades equivalentes para Vue. Composables integrados useSeoMeta() e useHead(), SSR/SSG/ISR, módulo Nuxt SEO. Excelente para sites baseados em Vue.
Astro: A arquitetura de ilhas envia zero JavaScript por padrão. As páginas são HTML estático; a interatividade é adicionada via “ilhas” explícitas. Melhor segurança de SEO de qualquer framework JS por padrão. Ótimo para sites com muito conteúdo.
SvelteKit: SSR por padrão, excelente suporte a metadados via svelte:head. SEO sólido com configuração mínima.
Angular: CSR por padrão, requer @angular/ssr (antigo Angular Universal) para indexação confiável. Historicamente, é o mais problemático para SEO entre os principais frameworks.
React (puro): CSR por padrão. Requer Next.js, React Router (modo framework) ou Gatsby para SSR/SSG. Nota: o modelo de renderização no servidor do Remix v2 foi incorporado ao React Router v7/v8 como “modo framework” — esse é o caminho de atualização mantido, não a versão beta separada e experimental do Remix 3 sem React. Não use CRA/Vite-React puro para conteúdo que precisa ranquear.
Vue (puro): Mesmo problema. Use Nuxt para aplicações Vue críticas para SEO.
Svelte (puro): CSR por padrão. Use SvelteKit para SSR/SSG.
Checklist de SEO para frameworks JavaScript
Universal (aplica-se a todos os frameworks)
- Verifique o modo de renderização:
curl -s URL | grep "<title>"— o título deve aparecer no HTML bruto - Verifique se
<title>e<meta name="description">estão na resposta do servidor - Use tags
<a href>reais para todos os links navegáveis (não apenas manipuladores de clique) - Garanta que páginas 404 retornem HTTP 404, não 200
- Garanta que redirecionamentos usem 301/302 no lado do servidor, não
window.location.href - Gere e envie um sitemap XML
- Adicione
robots.txtao seu diretório público
Next.js
- Use a API de Metadados do App Router (exportação
metadataougenerateMetadata()) - Escolha SSG (
generateStaticParams) ou SSR (dynamic = 'force-dynamic') por rota - Adicione um arquivo
app/sitemap.ts(suporte integrado a sitemap do App Router) para a maioria dos sites; use o pacotenext-sitemapapenas se precisar de sitemaps entre domínios ou outras extensões que o tipo integradoMetadataRoute.Sitemapnão modela - Use
next/imagepara todas as imagens (WebP automático, dimensionamento, carregamento preguiçoso) - Verifique os valores de
revalidatedo ISR — defina janelas curtas para páginas atualizadas com frequência
Nuxt
- Use
useSeoMeta()ouuseHead()em cada componente de página - Instale o módulo
@nuxtjs/sitemap - Use o SSR integrado do Nuxt (ou
nuxt generatepara SSG) - Configure
robots.txtvia@nuxtjs/robots
Astro
- Passe props de SEO para seu componente
<BaseHead>em cada página - Use a integração
@astrojs/sitemapdo Astro - Mantenha as ilhas JavaScript mínimas — evite converter seções estáticas em ilhas
Angular
- Ative SSR via
ng add @angular/ssr - Use os serviços
MetaeTitlepara metadados - Adicione estado de transferência para evitar busca dupla de API na hidratação
Aprofundamentos de frameworks
Leitura relacionada
Registro de alterações
Atualizado em 19 de jul. de 2026.
Resumo editorial e detalhes registrados da alteração.Detalhes da alteração
-
As notas detalhadas sobre as alterações estão disponíveis atualmente em inglês.
-
As notas detalhadas sobre as alterações estão disponíveis atualmente em inglês.
-
As notas detalhadas sobre as alterações estão disponíveis atualmente em inglês.
-
As notas detalhadas sobre as alterações estão disponíveis atualmente em inglês.
-
As notas detalhadas sobre as alterações estão disponíveis atualmente em inglês.
-
As notas detalhadas sobre as alterações estão disponíveis atualmente em inglês.
Não é possível fazer a comparação completa — nenhum instantâneo anterior foi arquivado para esta revisão.