Guida alla SEO con React: perché il rendering lato client frena l'indicizzazione, quando usare SSR o pre-rendering, come gestire i meta tag con React 19 e restare leggibili dalle IA.

In questa pagina
In breve
React può posizionarsi su Google, ma una single page app predefinita invia un file HTML quasi vuoto e dipende da JavaScript per mostrare i contenuti, il che ritarda l'indicizzazione e nasconde la pagina alla maggior parte dei crawler delle IA. La soluzione affidabile è servire HTML dal server: prerenderizzare le pagine statiche al build o usare un framework con rendering lato server (Next.js, React Router). Poi assegna a ogni URL title, description e canonical unici, usa link veri e codici di stato corretti, e verifica cosa ricevono i bot.
Vuoi approfondire? Chiedi a
Quiz veloce
La SEO fa per te, e come iniziare?
Sorank corrisponde alle tue risposte
Provalo per 3 giorni sul tuo sito e scopri a che punto sei su Google, ChatGPT e le altre IA.
Prova gratis per 3 giorni3 giorni gratis, poi smetti quando vuoi. Garanzia risultati o rimborsati di 90 giorni.
La SEO con React consiste nel rendere un'applicazione React scansionabile, indicizzabile e comprensibile per i motori di ricerca e gli assistenti IA. React di per sé è neutrale: i problemi nascono dal rendering completo nel browser. Google conferma nelle sue nozioni di base sulla SEO per JavaScript che elabora le app JavaScript in tre fasi (scansione, rendering, indicizzazione) e che il rendering lato server o il pre-rendering «resta un'ottima idea, perché rende il sito più veloce per utenti e crawler, e non tutti i bot possono eseguire JavaScript».
Un'app React creata come single page application consegna un file HTML che contiene poco più di un div radice vuoto e un tag script. Il browser scarica il JavaScript, lo esegue e costruisce la pagina. Un crawler che legge solo l'HTML non vede nulla da indicizzare: niente titoli, niente testo, niente link.
Googlebot esegue JavaScript, ma in un passaggio separato: la pagina viene scansionata, messa in coda per il rendering, renderizzata in un Chromium headless, e solo allora vengono usati i link e i contenuti renderizzati. Ogni passaggio in più è un'occasione di errore (un errore di script, un'API bloccata, un timeout) e aggiunge ritardo prima che le nuove pagine compaiano nei risultati. La nostra guida alla SEO per JavaScript descrive questo processo, e il nostro articolo sull'indicizzazione su Google spiega come far indicizzare le pagine più in fretta.
Altri bot sono meno pazienti. L'analisi di Vercel del dicembre 2024, The rise of the AI crawler, ha rilevato che «nessuno dei principali crawler delle IA esegue attualmente il rendering di JavaScript», citando GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot e PerplexityBot. Una pagina React renderizzata lato client è invisibile per ChatGPT, Claude e Perplexity, anche quando Google la indicizza.
Il team di React raccomanda ormai di iniziare le nuove app con un framework. Ritirando Create React App il 14 febbraio 2025, ha scritto nel suo annuncio che «il rendering lato server può migliorare la SEO» e migliora anche le prestazioni riducendo il JavaScript da scaricare prima di vedere i contenuti. Le opzioni, dalla più debole alla più solida per la ricerca:
| Approccio | Cosa ricevono i bot | Giudizio SEO | Strumenti tipici |
|---|---|---|---|
| Rendering lato client (SPA) | HTML vuoto, contenuto dopo JavaScript | Debole: indicizzazione ritardata, invisibile ai crawler delle IA | Vite + React, vecchi progetti Create React App |
| Rendering dinamico | HTML prerenderizzato solo per i bot | Soluzione temporanea, sconsigliata da Google | Servizi di pre-rendering, proxy con browser headless |
| Pre-rendering statico al build | HTML completo per ogni URL noto | Ottimo per contenuti che cambiano di rado | Pre-rendering di React Router, generatori di siti statici, export statico di Next.js |
| Rendering lato server | HTML completo a ogni richiesta, poi hydration | Il migliore per siti grandi o aggiornati spesso | Next.js, React Router (modalità framework, ex Remix) |
Sul rendering dinamico la documentazione di Google è esplicita: «era una soluzione temporanea e non una soluzione a lungo termine», e Google consiglia invece il rendering lato server, il rendering statico o l'hydration. Se stai scegliendo un framework, la nostra guida alla SEO con Next.js approfondisce modalità di rendering, Metadata API e sitemap.
Se la migrazione non è possibile, Google può comunque indicizzare una single page app con qualche accorgimento. La nostra guida alla SEO delle single page application ne elenca le condizioni; il resto di questo articolo vale per entrambi i casi.
Da React 19 (stabile dal 5 dicembre 2024) i componenti possono renderizzare direttamente i tag title, meta e link, che React sposta nell'head del documento. Le note di rilascio di React 19 precisano che questo supporto nativo funziona «con app solo client, SSR in streaming e Server Components». Prima di React 19 se ne occupavano librerie come react-helmet o react-helmet-async, che restano utili per sovrascrivere i valori predefiniti route per route.
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>
</>
)
}Tre regole valgono qualunque sia il metodo:
Attenzione
In un'app solo client, i tag renderizzati da React esistono solo dopo l'esecuzione di JavaScript. Google può leggerli dopo il rendering; i crawler delle IA e la maggior parte dei bot di anteprima dei social no. Il rendering lato server o il pre-rendering li inserisce nella risposta HTML per tutti.
Google afferma di «poter scoprire i tuoi link solo se sono elementi HTML a con un attributo href» e sconsiglia di usare i frammenti URL per caricare contenuti diversi. La maggior parte dei problemi SEO in React nasce da dettagli di routing:
| Errore | Effetto | Soluzione |
|---|---|---|
| Navigazione con onClick su div o pulsanti | Google non trova link da seguire | Usare il componente Link del router, che genera un a con href |
| Route con cancelletto (/#/prodotti) | Per Google tutte le pagine condividono un URL | Usare route basate sulla history (/prodotti) con BrowserRouter o un framework |
| Vista «non trovato» servita con stato 200 | «Soft 404» in Search Console | Restituire un vero 404 dal server, o aggiungere noindex via JavaScript in una SPA pura |
| Redirect solo lato client | Redirect lenti o ignorati | Usare redirect server 301 o 308 per le pagine spostate |
| Contenuti caricati al clic o allo scroll | Il testo non viene mai renderizzato per il crawler | Renderizzare il contenuto principale al caricamento; paginare le liste con URL veri |
| JavaScript o API bloccati in robots.txt | Google renderizza una pagina vuota | Consentire gli script e gli endpoint API necessari alla pagina |
Per vedere cosa renderizza Google, usa lo strumento Controllo URL di Search Console e visualizza l'HTML della pagina testata, oppure passa i modelli di pagina principali in un verificatore di indicizzabilità.
React non ha una sitemap integrata. Genera sitemap.xml al build a partire da route e dati (o con la funzione sitemap del tuo framework), inserisci solo URL canonical che rispondono 200 e richiamala in robots.txt. Per un piccolo sito statico basta un generatore di sitemap XML.
I dati strutturati seguono la stessa regola dei metadati: renderizza lo script JSON-LD insieme alla pagina, dagli stessi dati, idealmente sul server. Google può leggere un JSON-LD iniettato da JavaScript dopo il rendering, ma il markup assente dall'HTML iniziale è assente anche per i crawler che non fanno rendering. Usa Article per gli articoli, Product per l'e-commerce, Organization su tutto il sito e BreadcrumbList per le pagine profonde.
Consiglio
Esegui curl sull'URL di una pagina e cerca nel risultato il suo H1 e una frase del testo. Se mancano, Google forse indicizzerà la pagina dopo il rendering, ma i crawler delle IA non vedranno nulla.
I bundle JavaScript pesanti danneggiano i Core Web Vitals: il browser deve scaricare, analizzare e idratare il codice prima che la pagina risponda, il che pesa su Largest Contentful Paint e Interaction to Next Paint, soprattutto da mobile. L'annuncio del team React su Create React App ricorda che il rendering lato server invia meno JavaScript e un documento HTML completo, con un First Contentful Paint più rapido e un INP potenzialmente più basso. Leve utili: dividere il codice per route con React.lazy, servire immagini con dimensioni esplicite, caricare in differita i componenti sotto la piega e verificare gli script di terze parti.
La GEO (ottimizzazione per i motori generativi) parte dall'accesso. Poiché i crawler delle IA recuperano l'HTML grezzo, una pagina React deve fornire testo, titoli e JSON-LD senza JavaScript per essere letta, riassunta e citata. Un audit di scansionabilità per le IA mostra cosa ricevono questi bot dalle tue pagine. La seconda condizione è un contenuto degno di citazione: pagine che rispondono a una domanda per sezione, con fonti, dati e definizioni chiare.
È questa parte di contenuto che Sorank, il nostro prodotto, automatizza. Sorank è un software SEO e GEO in autopilot: il suo generatore di articoli per il blog scrive e pubblica 20, 60 o 120 articoli al mese con fonti, link interni e immagini, e si collega via webhook a stack personalizzati come un sito React o Next.js. Il suo SEO Chat risponde in conversazione alle domande sulle prestazioni del tuo sito nella ricerca.

In sintesi: servi HTML dal server, dai a ogni URL title, description e canonical propri, e usa link veri. React si posiziona così come qualsiasi altro sito e gli assistenti IA possono leggerlo. Per rifornire quel sito di articoli pensati per Google e per le IA, scopri i piani di Sorank, da 49 € al mese con 3 giorni di prova gratuita.
No. React è una libreria per interfacce e la sua SEO dipende da come vengono renderizzate le pagine. Una single page app renderizzata lato client invia HTML vuoto e si affida al rendering di Google, il che ritarda l'indicizzazione e nasconde i contenuti ai crawler delle IA. Lo stesso codice React servito con rendering lato server o pre-rendering statico si posiziona come un sito classico.
Sì. Googlebot esegue JavaScript con una versione recente di Chromium e può quindi indicizzare i contenuti che un'app React costruisce nel browser. Il rendering avviene dopo la scansione e può essere ritardato o fallire se gli script vanno in errore o le API sono bloccate. Lo strumento Controllo URL di Search Console mostra l'HTML renderizzato così come lo vede Google.
Non per i casi semplici. React 19 renderizza i tag title, meta e link da qualsiasi componente e li sposta nell'head del documento. Librerie come react-helmet-async restano utili per sovrascrivere i valori predefiniti del sito route per route o per le versioni precedenti di React.
HANNO PROVATO SORANK PRIMA DI TE
