Ghid SEO pentru React: de ce randarea pe client afectează indexarea, când să alegi SSR sau pre-randarea, cum setezi meta tag-urile în React 19 și rămâi lizibil pentru AI.

Pe această pagină
Pe scurt
React se poate clasa pe Google, dar o aplicație implicită cu o singură pagină trimite un fișier HTML aproape gol și depinde de JavaScript ca să afișeze conținutul, ceea ce întârzie indexarea și ascunde pagina de majoritatea crawlerelor AI. Soluția sigură este să livrezi HTML de pe server: pre-randezi paginile statice la build sau folosești un framework cu randare pe server (Next.js, React Router). Apoi setează un titlu, o descriere și o etichetă canonical unice pentru fiecare adresă, folosește linkuri reale și coduri de stare corecte și verifică ce primesc boții.
Vrei să afli mai mult? Întreabă
Test rapid
Ți se potrivește SEO și cum ar trebui să începi?
Sorank se potrivește răspunsurilor tale
Testează-l 3 zile pe propriul site și vezi unde te afli pe Google, ChatGPT și pe celelalte IA.
Începe perioada de test gratuită de 3 zile3 zile gratuit, apoi renunți oricând vrei. Garanție de rambursare în 90 de zile dacă nu vezi rezultate.
SEO React înseamnă munca de a face o aplicație React parcurgibilă, indexabilă și înțeleasă de motoarele de căutare și de asistenții AI. React în sine este neutru: problemele vin din faptul că totul se randează în browser. Google confirmă în elementele de bază ale SEO pentru JavaScript că procesează aplicațiile JavaScript în trei faze (parcurgere, randare, indexare) și că „randarea pe server sau pre-randarea rămâne o idee foarte bună, pentru că face site-ul mai rapid pentru utilizatori și crawlere, iar nu toți boții pot rula JavaScript.”
O aplicație React creată ca aplicație cu o singură pagină livrează un fișier HTML care conține puțin mai mult decât un div rădăcină gol și o etichetă script. Browserul descarcă JavaScript-ul, îl rulează și construiește pagina. Un crawler care citește doar HTML-ul nu vede nimic de indexat: niciun titlu, niciun text, niciun link.
Googlebot rulează JavaScript, dar într-un pas separat: pagina este parcursă, pusă la coadă pentru randare, randată într-un Chromium fără interfață și abia apoi sunt folosite linkurile și conținutul randat. Fiecare pas în plus este o șansă de eșec (o eroare de script, un API blocat, un timeout) și adaugă întârziere până când paginile noi apar în căutare. Ghidul nostru despre SEO pentru JavaScript detaliază acest proces, iar articolul nostru despre indexarea în Google arată cum obții indexarea mai repede.
Alți boți sunt mai puțin răbdători. Analiza Vercel din decembrie 2024, Ascensiunea crawlerului AI, a constatat că „niciunul dintre principalii crawleri AI nu randează în prezent JavaScript”, numind GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot și PerplexityBot. O pagină React randată pe client este invizibilă pentru ChatGPT, Claude și Perplexity, chiar dacă Google o indexează.
Echipa React recomandă acum să începi aplicațiile noi cu un framework. Când a scos din uz Create React App pe 14 februarie 2025, a scris în anunțul său că „randarea pe server poate îmbunătăți SEO-ul” și că aceasta îmbunătățește și performanța, reducând JavaScript-ul pe care utilizatorii trebuie să îl descarce înainte să vadă conținutul. Opțiunile, de la cea mai slabă la cea mai bună pentru căutare:
| Abordare | Ce primesc boții | Verdict SEO | Instrumente tipice |
|---|---|---|---|
| Randare pe client (SPA) | HTML gol, conținut după JavaScript | Slab: indexare întârziată, invizibil pentru crawlerele AI | Vite + React, proiecte vechi Create React App |
| Randare dinamică | HTML pre-randat doar pentru boți | Soluție provizorie, nerecomandată de Google | Servicii de pre-randare, proxy-uri de browser fără interfață |
| Pre-randare statică la build | HTML complet pentru fiecare adresă cunoscută | Foarte bun pentru conținut care se schimbă rar | Pre-randare React Router, generatoare de site-uri statice, export static Next.js |
| Randare pe server | HTML complet la fiecare cerere, apoi hidratare | Cel mai bun pentru site-uri mari sau actualizate frecvent | Next.js, React Router (mod framework, fost Remix) |
La randarea dinamică, documentația Google este explicită: a fost „o soluție provizorie și nu o soluție pe termen lung”, iar Google recomandă în schimb randarea pe server, randarea statică sau hidratarea. Dacă alegi un framework, ghidul nostru SEO pentru Next.js acoperă în detaliu modurile de randare, Metadata API și sitemap-urile.
Dacă migrarea nu este posibilă, o aplicație cu o singură pagină poate fi indexată de Google și cu grijă. Ghidul nostru despre SEO pentru aplicațiile cu o singură pagină enumeră condițiile; restul articolului se aplică în ambele cazuri.
Din React 19 (stabil din 5 decembrie 2024), componentele pot randa direct etichete title, meta și link, iar React le mută în head-ul documentului. Notele de lansare React 19 precizează că acest suport nativ funcționează „cu aplicații doar pe client, cu SSR în streaming și cu Server Components”. Înainte de React 19, biblioteci precum react-helmet sau react-helmet-async făceau aceeași treabă, iar ele rămân utile pentru a înlocui valorile implicite pe fiecare rută.
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>
</>
)
}Trei reguli se aplică indiferent de metodă:
Atenție
Într-o aplicație doar pe client, etichetele randate de React există doar după ce rulează JavaScript. Google le poate citi după randare; crawlerele AI și majoritatea boților de previzualizare socială nu pot. Randarea pe server sau pre-randarea le pune în răspunsul HTML pentru toți.
Google spune că poate descoperi linkurile tale „doar dacă sunt elemente HTML a cu atributul href” și recomandă să nu folosești fragmente de URL pentru a încărca un conținut diferit. Majoritatea eșecurilor SEO React vin din detalii de rutare:
| Greșeală | Efect | Soluție |
|---|---|---|
| Navigare cu onClick pe div sau button | Google nu găsește niciun link de urmat | Folosește componenta Link a routerului, care randează un a cu href |
| Rute cu fragment (/#/produse) | Toate paginile au un singur URL pentru Google | Folosește rute bazate pe history (/produse) cu BrowserRouter sau un framework |
| O vizualizare „nu a fost găsit” servită cu statusul 200 | Soft 404 în Search Console | Returnează un 404 real de pe server sau adaugă noindex prin JavaScript într-un SPA pur |
| Redirecționări doar pe client | Redirecționări lente sau ratate | Folosește redirecționări 301 sau 308 de pe server pentru paginile mutate |
| Conținut încărcat la clic sau la derulare | Text niciodată randat pentru crawler | Randează conținutul principal la încărcare; paginează listele cu adrese reale |
| JavaScript sau API blocat în robots.txt | Google randează o pagină goală | Permite scripturile și endpoint-urile API de care are nevoie pagina |
Ca să vezi ce randează Google, folosește instrumentul Inspecția URL din Search Console și uită-te la HTML-ul paginii testate, sau rulează un verificator de indexabilitate pe șabloanele-cheie.
React nu are o hartă a site-ului integrată. Generează sitemap.xml la build din rutele și datele tale (sau din funcția de sitemap a framework-ului), listează doar adresele canonical care returnează 200 și menționează-l în robots.txt. Un generator de hartă XML a site-ului funcționează pentru site-urile statice mici.
Datele structurate urmează aceeași regulă ca metadatele: randează scriptul JSON-LD împreună cu pagina, din aceleași date, de preferință pe server. Google poate citi JSON-LD injectat de JavaScript după randare, dar un marcaj care lipsește din HTML-ul inițial lipsește pentru crawlerele care nu randează. Folosește Article pentru articole, Product pentru comerț electronic, Organization pe tot site-ul și BreadcrumbList pentru paginile adânci.
Sfat
Rulează curl pe adresa unei pagini și caută în rezultat H1-ul și o propoziție din corpul textului. Dacă lipsesc, Google poate indexa pagina după randare, dar crawlerele AI nu vor vedea nimic.
Pachetele mari de JavaScript afectează Core Web Vitals: browserul trebuie să descarce, să analizeze și să hidrateze codul înainte ca pagina să devină receptivă, ceea ce apasă pe Largest Contentful Paint și pe Interaction to Next Paint, mai ales pe mobil. Anunțul echipei React despre Create React App notează că randarea pe server trimite mai puțin JavaScript și un document HTML complet, ceea ce produce un First Contentful Paint mai rapid și poate scădea INP. Pârghii practice: împarte codul pe rute cu React.lazy, livrează imagini cu dimensiuni explicite, încarcă leneș componentele de sub zona vizibilă și auditează scripturile terțe.
GEO (optimizarea pentru motoarele generative) începe cu accesul. Pentru că crawlerele AI preiau HTML-ul brut, o pagină React trebuie să livreze textul, titlurile și JSON-LD fără JavaScript, ca să fie citită, rezumată și citată. Un audit AI de parcurgibilitate a site-ului arată ce primesc acești boți de pe paginile tale. A doua condiție este conținutul care merită citat: pagini care răspund la o întrebare pe secțiune, cu surse, cifre și definiții clare.
Latura de conținut este cea pe care o automatizează Sorank, produsul nostru. Sorank este un software SEO și GEO în regim autopilot: generatorul de articole pentru blog scrie și publică 20, 60 sau 120 de articole pe lună, cu surse, linkuri interne și imagini, și se conectează la stack-uri personalizate, cum ar fi un site React sau Next.js, prin webhook. Chatul SEO răspunde, într-o conversație, la întrebări despre performanța site-ului tău în căutare.

Pe scurt: livrează HTML de pe server, dă fiecărei adrese propriul titlu, propria descriere și propria etichetă canonical și folosește linkuri reale. Atunci React se clasează ca orice alt site, iar asistenții AI îl pot citi. Ca să alimentezi cu articole, scrise pentru Google și pentru AI, un site ca acesta, vezi planurile Sorank, de la 49 de dolari pe lună, cu o perioadă de probă gratuită de 3 zile.
Nu. React este o bibliotecă de interfață, iar SEO-ul depinde de modul în care sunt randate paginile. O aplicație cu o singură pagină randată pe client trimite HTML gol și se bazează pe pasul de randare al Google, ceea ce întârzie indexarea și ascunde conținutul de crawlerele AI. Același cod React servit cu randare pe server sau pre-randare statică se clasează ca un site clasic.
Da. Googlebot randează JavaScript cu o versiune recentă de Chromium, deci poate indexa conținutul pe care o aplicație React îl construiește în browser. Randarea are loc după parcurgere și poate fi întârziată sau poate eșua dacă scripturile dau erori sau API-urile sunt blocate. Verificarea HTML-ului randat cu instrumentul Inspecția URL din Search Console arată ce vede Google.
Nu, în cazurile obișnuite. React 19 randează etichetele title, meta și link din orice componentă și le mută în head-ul documentului. Biblioteci precum react-helmet-async rămân utile când vrei să înlocuiești valorile implicite pentru tot site-ul pe fiecare rută sau când susții versiuni mai vechi de React.
AU ÎNCERCAT SORANK ÎNAINTEA TA
