React og SEO — JavaScript-rendering og søgesynlighed
Ren React (Create React App) er client-side rendered og problematisk for SEO. Løsningen er Next.js (SSR/SSG), Astro (static-first) eller prerendering for eksisterende React-sites.
React er verdens mest udbredte JavaScript UI-bibliotek, men dets standard konfiguration — client-side rendering (CSR) via Create React App — er problematisk for SEO. Problemet er strukturelt: HTML leveres tomt til Googlebot, og indhold genereres via JavaScript i browseren. Det kræver at Googlebot venter på Googles rendering-kø — en forsinkelse på dage til uger — for at indeksere indholdet korrekt.
Hvad Googlebot ser på en CSR-React-side
Googlebots crawler modtager ved første request denne HTML fra en standard React-app:
<!DOCTYPE html>
<html>
<head><title>React App</title></head>
<body>
<div id="root"></div>
<script src="/static/js/main.chunk.js"></script>
</body>
</html>
Indholdet er tomt. For at se det faktiske indhold skal Googlebot eksekvere JavaScript og vente på at React renderer DOM’en. Det sker — men med forsinkelse.
Renderingforsinkelse og SEO-konsekvenser
Google renderer JavaScript i to faser: crawl og rendering. Crawlede sider sendes til en render-kø der processeres med forsinkelse (timer til dage afhængigt af crawl-prioritet). Lavprioritets-sider kan vente dage på rendering, hvilket forsinker indeksering.
Komplikationer: JavaScript-fejl, langsom bundle-størrelse, og API-kald der fejler under rendering kan resultere i tomme sider der indekseres uden indhold.
Løsningshierarkiet
- Nyt projekt: Brug Next.js (SSR/SSG) eller Astro (static-first) fra start — undgå CSR-only tilgang
- Eksisterende Next.js: Sørg for at pages bruger getStaticProps eller getServerSideProps korrekt
- Eksisterende CSR React: Evaluer prerendering (Prerender.io) som kortsigtet fix
- Migration: Migrer til Next.js App Router på sigt — det er den langsigtede løsning
Googles officielle anbefaling er server-side rendering for indhold der skal indekseres optimalt. → Denne artikel er en del af JavaScript og rendering — Scripts, DOM og CSR vs SSR.
Andre artikler i samme emne
- API — Hvad er API og hvad betyder det for SEO?
- Client-side rendering — CSR og SEO-udfordringer
- DOM — Document Object Model og JavaScript-rendering
- Google Tag Manager — Tag-håndtering og SEO-tracking
- Hydration — SSR og client-side JavaScript kombineret
- JavaScript — Hvad er JavaScript og hvad betyder det for SEO?
- JavaScript og crawling — Hvad Googlebot ser og ikke ser
- JavaScript Rendering og SEO — Hvad Googlebot ser
- JavaScript SEO — Hvad Googlebot kan og ikke kan
- JavaScript-debugging til SEO — Find rendering-problemer
- Next.js og SEO — Server-side rendering og SEO
- Prerendering — Forhåndsrenderet HTML til crawlere
- Rendering — Hvad Googlebot ser efter JavaScript-rendering
- Scripts og SEO — render-blocking, async og defer
- Server-side rendering — SSR og fordele for SEO
- Static site generation — SSG og SEO-fordele ved statiske sider
- Web Components og SEO — Custom elements og søgesynlighed
Ofte stillede spørgsmål
- Renderer Googlebot React-sider?
- Ja — Google renderer JavaScript og har gjort det siden 2016. Men rendering sker i en separat kø (ikke real-time) og er ressourcebegrænset. Crawl-prioritet til render-køen er lavere end til HTML-sider. Effekten: React-sider kan indekseres korrekt, men med forsinkelse — og sider med kompleks JavaScript eller langsom rendering kan indekseres ufuldstændigt.
- Hvornår er ren React-med-CSR acceptabelt for SEO?
- For applikationer der kræver login for at tilgå indhold er CSR acceptabelt — indholdet er ikke relevant for søgemaskiner. SaaS-dashboards, admin-interfaces, bruger-specifikke views: CSR er fint. For offentligt indhold der skal rangere i søgeresultater: brug SSR, SSG eller Astro i stedet for ren CSR-React.
- Hvordan tester man om Googlebot ser indholdet korrekt på en React-side?
- Brug URL Inspection Tool i Google Search Console → Test live URL → View Rendered HTML. Det viser præcist hvad Googlebot faktisk ser efter rendering. Sammenlign med View Source (Ctrl+U) i browseren — forskel indikerer JavaScript-genereret indhold der kræver rendering-køen. Tjek at H1, primær tekst og interne links er synlige i det renderede output.
- Hvad er hydration og er det relevant for SEO?
- Hydration er processen der aktiverer JavaScript-interaktivitet på en SSR-renderet HTML-side. Googlebots behøver ikke vente på hydration — den indekserer HTML-indholdet direkte. Men hydration-mismatch (forskel mellem server-renderet HTML og client-renderet DOM) kan resultere i at Googlebot ser andet indhold end brugeren. Next.js App Router med React Server Components minimerer hydration-overhead.
- Kan interne links i en React-SPA indekseres korrekt af Googlebot?
- Links i en React-SPA genereret med JavaScript (f.eks. via React Router) er tilgængelige for Googlebot — men kun efter rendering-fasen. Hvis interne links kun eksisterer i JavaScript-genereret DOM, opdages de ikke i fase 1-crawl og indekseres med forsinkelse. For kritiske interne links: sørg for at de er tilgængelige i HTML-kildekoden uden JavaScript-eksekvering. Med Next.js og SSR/SSG er alle interne links i HTML fra start og opdages straks ved crawling.
Placering i ordbogen
- API — Hvad er API og hvad betyder det for SEO?
- Client-side rendering — CSR og SEO-udfordringer
- DOM — Document Object Model og JavaScript-rendering
- Google Tag Manager — Tag-håndtering og SEO-tracking
- Hydration — SSR og client-side JavaScript kombineret
- JavaScript — Hvad er JavaScript og hvad betyder det for SEO?
- JavaScript og crawling — Hvad Googlebot ser og ikke ser
- JavaScript Rendering og SEO — Hvad Googlebot ser
- JavaScript SEO — Hvad Googlebot kan og ikke kan
- JavaScript-debugging til SEO — Find rendering-problemer
- Next.js og SEO — Server-side rendering og SEO
- Prerendering — Forhåndsrenderet HTML til crawlere
- Rendering — Hvad Googlebot ser efter JavaScript-rendering
- Scripts og SEO — render-blocking, async og defer
- Server-side rendering — SSR og fordele for SEO
- Static site generation — SSG og SEO-fordele ved statiske sider
- Web Components og SEO — Custom elements og søgesynlighed