SEO per framework JavaScript
SEO per framework JavaScript: React, Next.js, Vue, Nuxt, Angular, Svelte e Astro. Come la modalità di rendering (SSR, SSG, CSR) determina ciò che Google può indicizzare e quali framework gestiscono meglio la SEO già dalla configurazione iniziale.
Lingue
La SEO dei framework JavaScript dipende dalla modalità di rendering: SSG e SSR forniscono a Googlebot HTML già costruito; CSR richiede un’esecuzione JavaScript che può riuscire o meno. Next.js e Nuxt offrono il supporto SEO integrato più completo (SSR, SSG, ISR e API per i metadati). React e Vue puri in modalità CSR sono i più rischiosi per la SEO. L’architettura a isole di Astro è eccellente per la SEO per impostazione predefinita. Angular richiede SSR tramite @angular/ssr (in precedenza Angular Universal) per un’indicizzazione affidabile.
TL;DR — La maggior parte dei framework JavaScript costruisce le pagine nel browser del visitatore (CSR). Funziona bene per gli utenti, ma i motori di ricerca potrebbero non eseguire JavaScript e non vedere i contenuti. La soluzione è usare una modalità del framework che costruisca le pagine sul server (SSR) o durante la build (SSG). Next.js e Nuxt lo rendono semplice; React e Vue puri in modalità CSR richiedono lavoro aggiuntivo.
Perché i framework JavaScript hanno problemi di SEO
Google elabora JavaScript attraverso crawling, rendering e indicizzazione, e risorse bloccate o fallite possono cambiare il risultato renderizzato. 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 La modalità di rendering e l’implementazione dei metadati contano più del solo nome del 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
I siti web tradizionali inviano HTML completo dal server. I crawler dei motori di ricerca scaricano quell’HTML e indicizzano immediatamente il contenuto. I framework JavaScript spesso funzionano in modo diverso: il server invia un file HTML minimo, poi JavaScript viene eseguito nel browser per costruire il contenuto effettivo della pagina.
Se un crawler dei motori di ricerca non esegue JavaScript (o lo esegue ma qualcosa fallisce), vede una pagina vuota. Questo è il problema SEO del CSR.
Spiegazione delle modalità di rendering
- SSG (generazione di siti statici) — le pagine vengono costruite come HTML al momento del deploy. I crawler ricevono HTML completo senza bisogno di JavaScript. È la scelta migliore per la SEO.
- SSR (rendering lato server) — il server costruisce l’HTML da zero per ogni richiesta. I crawler ricevono HTML completo. È anch’esso eccellente per la SEO.
- CSR (rendering lato client) — JavaScript costruisce la pagina nel browser. I crawler devono eseguire JavaScript per vedere i contenuti. Google può farlo, ma si verificano errori e la scoperta è più lenta.
Framework più sicuri per la SEO già dalla configurazione iniziale
Più sicuri:
- Astro — genera HTML statico per impostazione predefinita; JavaScript solo dove lo abiliti
- Next.js — offre SSG, SSR e ISR; API complete per i metadati; standard di settore
- Nuxt — lo stesso per l’ecosistema Vue; supporto SSR/SSG eccellente
Richiedono configurazione:
- Angular — CSR per impostazione predefinita; richiede
@angular/ssr(in precedenza Angular Universal) per una SEO sicura - React — CSR per impostazione predefinita; richiede Next.js o React Router (modalità framework) per SSR/SSG
- Vue — CSR per impostazione predefinita; richiede Nuxt per SSR/SSG
- Svelte — CSR per impostazione predefinita; SvelteKit aggiunge il supporto SSR/SSG
TL;DR — A livello tecnico, la SEO dei framework JS riguarda: (1) l’architettura di rendering per il payload HTML iniziale, (2) l’iniezione dei metadati nel
<head>prima dell’invio della risposta, (3) il modo in cui il framework gestisce hydration e scoperta dei link e (4) la staleness della cache ISR. Next.js offre gli strumenti SEO integrati più completi (Metadata API,app/sitemap.tsintegrata e ottimizzazione delle immagini). Astro è il framework più sicuro per la SEO grazie alla sua architettura.
Modalità di rendering, API dei metadati e supporto ISR per framework
Le capacità e i valori predefiniti dei framework cambiano in base alla versione; verificali nella documentazione ufficiale di ciascun 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 Nessuna modalità di rendering garantisce indicizzazione o ranking. 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 Quando confronti framework per prendere una decisione, prova gli stessi percorsi, contenuti, obiettivi di deploy e strumenti per ogni candidato: un benchmark che sostituisce uno di questi elementi non misura il framework, ma la differenza nella configurazione.
| Framework | Rendering predefinito | API metadati integrata | Supporto SSR/SSG | Supporto SEO dell’ecosistema |
|---|---|---|---|---|
| Astro | SSG (isole) | Sì (<head> nei file .astro, Content Collections per i dati strutturati) | Entrambi | Forte |
| Next.js | SSR/SSG (configurabile) | Sì (Metadata API in App Router) | Entrambi + ISR | Eccellente |
| Nuxt | SSR per impostazione predefinita | Sì (useHead, useSeoMeta) | Entrambi + ISR | Eccellente |
| SvelteKit | SSR per impostazione predefinita | Sì (svelte:head) | Entrambi | Buono |
| React Router (modalità framework) | SSR per impostazione predefinita | Sì (export meta) | SSR + Deferred | Buono |
| Angular | CSR per impostazione predefinita | Tramite i servizi Angular Meta/Title | Tramite @angular/ssr | Moderato |
| React (bare) | CSR | Manuale (react-helmet-async; react-helmet non è mantenuto) | Tramite Next.js/Gatsby | Dipende dal wrapper |
| Vue (bare) | CSR | Manuale (@unhead/vue; vue-meta non è mantenuto) | Tramite Nuxt | Dipende dal wrapper |
Remix v2 e React Router v7 si sono fusi: il rendering lato server e il modello di caricamento dei dati di Remix ora vengono distribuiti come “modalità framework” di React Router, che è il percorso stabile di aggiornamento per le app Remix v2. Remix 3 è una riscrittura separata e sperimentale, senza React (beta), non il successore di Remix v2: non trattarlo come un’opzione SSR sostitutiva immediata per una codebase React.
Tempistica dei metadati, link scansionabili e staleness della cache ISR
Tempistica dell’iniezione dei metadati — I metadati (<title>, <meta>) devono trovarsi nella risposta del server, non essere aggiunti da JavaScript dopo il caricamento della pagina. Metadata API di Next.js, useSeoMeta di Nuxt e il componente <head> di Astro lo gestiscono correttamente. document.title = '...' o React Helmet in modalità CSR no: vengono eseguiti dopo l’invio dell’HTML iniziale.
Scoperta dei link — Googlebot scopre i link analizzando l’HTML. I link aggiunti tramite JavaScript (onClick, routing dinamico senza tag <a>) potrebbero non essere scoperti. Usa veri elementi <a href> per la navigazione importante.
Hydration e contenuti duplicati — Se SSR e CSR producono contenuti diversi (mismatch di hydration), potresti ritrovarti con contenuti indicizzati che non corrispondono a ciò che vedono gli utenti. Verifica gli errori di hydration nella console del browser.
Soft 404 — I router lato client possono eseguire silenziosamente una UI “pagina non trovata” restituendo però uno status HTTP 200. I motori di ricerca indicizzano queste pagine come pagine reali. Assicurati che la pagina 404 restituisca un vero status 404 e che i redirect lato server restituiscano 301.
Invalidazione della cache ISR — Nelle configurazioni ISR di Next.js e Nuxt, durante la finestra di revalidazione ai crawler possono essere servite pagine obsolete. Imposta un intervallo revalidate basato sul tempo e, per i contenuti che cambiano secondo una pianificazione che non controlli (per esempio un salvataggio in un CMS), abbinalo a una revalidazione on-demand attivata da un gestore di route collegato a un webhook — consulta la guida ISR di Next.js per l’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 })
} La SEO dei framework JavaScript è determinata soprattutto dalla modalità di rendering. SSG (pagine costruite come HTML statico al momento del deploy) e SSR (pagine renderizzate lato server a ogni richiesta) sono entrambi sicuri per l’indicizzazione dei motori di ricerca. CSR (pagine renderizzate interamente nel browser tramite JavaScript) è più rischioso: Google può eseguire JavaScript, ma errori e ritardi sono comuni e la scoperta è più lenta.
Next.js (meta-framework React): supporto SEO integrato più completo. Metadata API di App Router, SSG/SSR/ISR, ottimizzazione immagini, app/sitemap.ts integrata (il pacchetto next-sitemap ora serve solo per le estensioni che non copre) e prefetching a livello di link. Standard di settore per le app React sensibili alla SEO.
Nuxt (meta-framework Vue): capacità equivalenti per Vue. Composable integrati useSeoMeta() e useHead(), SSR/SSG/ISR e modulo Nuxt SEO. Eccellente per siti basati su Vue.
Astro: l’architettura a isole distribuisce zero JavaScript per impostazione predefinita. Le pagine sono HTML statico; l’interattività viene aggiunta tramite “isole” esplicite. È il framework JS più sicuro per la SEO per impostazione predefinita. Ottimo per siti ricchi di contenuti.
SvelteKit: SSR per impostazione predefinita e supporto eccellente dei metadati tramite svelte:head. SEO solida con una configurazione minima.
Angular: CSR per impostazione predefinita e @angular/ssr (in precedenza Angular Universal) necessario per un’indicizzazione affidabile. Storicamente è stato il più problematico per la SEO tra i framework principali.
React (bare): CSR per impostazione predefinita. Richiede Next.js, React Router (modalità framework) o Gatsby per SSR/SSG. Nota: il modello di rendering server di Remix v2 è confluito in React Router v7/v8 come “modalità framework”: è il percorso di aggiornamento mantenuto, non la beta separata e sperimentale di Remix 3 senza React. Non usare CRA/Vite-React bare per contenuti che devono posizionarsi.
Vue (bare): lo stesso problema. Usa Nuxt per applicazioni Vue per cui la SEO è critica.
Svelte (bare): CSR per impostazione predefinita. Usa SvelteKit per SSR/SSG.
Checklist SEO per framework JavaScript
Universale (vale per tutti i framework)
- Verifica la modalità di rendering:
curl -s URL | grep "<title>"— il titolo deve comparire nell’HTML grezzo - Controlla che
<title>e<meta name="description">siano nella risposta del server - Usa veri tag
<a href>per tutti i link navigabili (non solo gestori di clic) - Assicurati che le pagine 404 restituiscano HTTP 404, non 200
- Assicurati che i redirect usino 301/302 lato server, non
window.location.href - Genera e invia una sitemap XML
- Aggiungi
robots.txtalla directory pubblica
Next.js
- Usa la Metadata API di App Router (export
metadataogenerateMetadata()) - Scegli SSG (
generateStaticParams) o SSR (dynamic = 'force-dynamic') per ogni route - Aggiungi un file
app/sitemap.ts(il supporto sitemap integrato di App Router) per la maggior parte dei siti; usa il pacchettonext-sitemapsolo se ti servono sitemap cross-domain o altre estensioni che il tipoMetadataRoute.Sitemapintegrato non modella - Usa
next/imageper tutte le immagini (WebP automatico, dimensionamento e lazy-load) - Verifica i valori ISR di
revalidate— imposta finestre brevi per le pagine aggiornate di frequente
Nuxt
- Usa
useSeoMeta()ouseHead()in ogni componente di pagina - Installa il modulo
@nuxtjs/sitemap - Usa l’SSR integrato di Nuxt (oppure
nuxt generateper SSG) - Configura
robots.txttramite@nuxtjs/robots
Astro
- Passa le proprietà SEO al componente
<BaseHead>in ogni pagina - Usa l’integrazione
@astrojs/sitemap - Mantieni minime le isole JavaScript — evita di trasformare sezioni statiche in isole
Angular
- Abilita SSR tramite
ng add @angular/ssr - Usa i servizi
MetaeTitleper i metadati - Aggiungi transfer state per evitare il doppio recupero dell’API durante l’hydration
Approfondimenti sui framework
Letture correlate
Cronologia modifiche
Aggiornato il 12 ago 2026.
Riepilogo editoriale e dettagli registrati delle modifiche.Dettagli delle modifiche
-
Le note dettagliate sulle modifiche sono attualmente disponibili in inglese.
-
Le note dettagliate sulle modifiche sono attualmente disponibili in inglese.
Confronto completo non disponibile — non è stata archiviata alcuna istantanea precedente per questa revisione.
Aggiornato il 19 lug 2026.
Riepilogo editoriale e dettagli registrati delle modifiche.Dettagli delle modifiche
-
Le note dettagliate sulle modifiche sono attualmente disponibili in inglese.
-
Le note dettagliate sulle modifiche sono attualmente disponibili in inglese.
-
Le note dettagliate sulle modifiche sono attualmente disponibili in inglese.
-
Le note dettagliate sulle modifiche sono attualmente disponibili in inglese.
-
Le note dettagliate sulle modifiche sono attualmente disponibili in inglese.
-
Le note dettagliate sulle modifiche sono attualmente disponibili in inglese.
Confronto completo non disponibile — non è stata archiviata alcuna istantanea precedente per questa revisione.