Zum Hauptinhalt springen
Blog
22. Mai 2026
10 Min.

JavaScript-SEO & Dynamisches Rendering: Warum Google deine SPA möglicherweise gar nicht liest

JavaScript SEO entscheidet, ob Google deine Inhalte überhaupt sieht. Wie Googlebot JS rendert, warum SPAs ranken-mäßig sterben und wie SSR mit Nuxt das Problem strukturell löst.

Cagri Ersöz – Gründer & Creative Director, Storyable Werbeagentur Hannover

Cagri Ersöz

Cagri Ersöz ist Gründer und Geschäftsführer der Werbeagentur Storyable in Hannover. Mit Erfahrung in verkaufspsychologischem Webdesign und Full-Stack-Entwicklung (Vue.js, Nuxt, React) hat er über 50 digitale Projekte für den Mittelstand realisiert. Seine Schwerpunkte: Conversion-Optimierung, KI-Integration und datengetriebenes Marketing.

Jetzt Kontakt aufnehmen

Du startest deine schöne, animierte Single Page App mit React, Vue oder Angular. Sie sieht aus wie aus dem Designstudio. Du wartest auf Google-Traffic – und es kommt nichts. Sechs Monate später checkst du die Search Console und siehst es: Deine Inhalte sind nicht indexiert. Willkommen in der harten Realität von JavaScript SEO im Jahr 2026.

Bei Storyable in Hannover sehen wir diesen Fehler regelmäßig bei Kunden, die mit Create-React-App oder einer reinen Vue-CLI-SPA starten. Optisch perfekt, technisch ein SEO-Grab. Der Grund liegt in der Art, wie Googlebot JavaScript verarbeitet – fundamental anders als ein Chrome-Browser. Wer das nicht versteht, bezahlt mit Sichtbarkeit. Manchmal mit der gesamten organischen Reichweite.

JavaScript SEO 2026 – Googlebot, Dynamic Rendering und SSR für indexierbare Single Page Apps
JavaScript SEO 2026: Ohne Server-Side Rendering bekommt Googlebot oft nur ein leeres HTML-Skelett zu sehen.
Die unbequeme Wahrheit

„Eine SPA ohne SSR ist wie ein Buch in einer Sprache, die der Leser erst übersetzen muss. Manchmal nimmt er sich die Zeit. Oft legt er es weg. Googlebot ist genau dieser Leser – und er hat 8 Milliarden andere Bücher zur Auswahl."

Das Problem: Google crawlt JavaScript anders als dein Browser

Wenn du eine Website in Chrome öffnest, lädt der Browser das HTML, holt das JavaScript, führt es aus, baut den DOM, rendert die Pixel. Drei Sekunden später siehst du die fertige Seite. Du denkst: „Wenn mein Browser das kann, kann Google das auch." Falsch.

Googlebot arbeitet zweistufig – ein Detail, das die meisten Entwickler erst kennenlernen, wenn ihre Rankings ausbleiben:

  • Phase 1 – Crawling: Der Bot ruft die URL ab und liest das rohe HTML. Wenn dort kein Inhalt steht (typisch für SPAs), bekommt der Indexer fast nichts.
  • Phase 2 – Rendering: Stunden bis Tage später schickt Google die Seite an den Web Rendering Service (WRS). Hier wird JavaScript ausgeführt, der DOM wird gebaut – das Ergebnis geht zurück an den Indexer.

Diese Lücke zwischen Phase 1 und Phase 2 ist der Kern des Problems. Wenn dein Content erst durch JavaScript erscheint, wartet Google. Manchmal Tage. Manchmal Wochen. Bei großen SPAs kommt der WRS oft gar nicht hinterher – und ein signifikanter Teil deiner Seiten bleibt schwach oder gar nicht indexiert.

Die Zahlen, die zählen: Eine Studie von Onely (2024) untersuchte 1.000 SPA-basierte Websites: 35 % der wichtigen Inhalte erschienen nicht im gerenderten DOM, den Google sieht. Bei E-Commerce-SPAs lag der Anteil unindexierter Produktseiten bei bis zu 50 %. Eine perfekte App. Mit halbem Sichtbarkeits-Footprint.

SPA vs. SSR vs. SSG: Wie Google jede Architektur unterschiedlich indexiert

Drei Architekturen dominieren modernes Web-Development. Ihre SEO-Eigenschaften sind grundverschieden – und die Wahl entscheidet darüber, ob du in Google sichtbar bist oder nicht. Wir haben den Performance-Aspekt im Detail in Ladezeit ist Umsatz – E-Commerce Performance mit Next.js auseinandergenommen, hier geht es um die Indexierungs-Logik.

ArchitekturBeispiel-FrameworksInitiales HTMLIndexierungs-VerhaltenSEO-Risiko
SPA (Client-Side Render)Create-React-App, Vue CLI, AngularLeeres SkelettErfordert Render-Phase, oft unvollständigHoch
SSR (Server-Side Render)Nuxt, Next.js, RemixVollständiger ContentSofort indexierbarSehr niedrig
SSG (Static Site Generation)Nuxt SSG, Astro, HugoPre-gebauter HTMLSofort indexierbarSehr niedrig
ISR (Incremental SSR)Next.js ISR, Nuxt HybridStatisch + dynamische UpdatesSofort indexierbarSehr niedrig

Warum SPA das Risiko-Modell ist

Eine reine SPA liefert beim ersten Request ein HTML wie dieses:

<!DOCTYPE html>
<html>
  <head><title>App</title></head>
  <body>
    <div id="root"></div>
    <script src="/static/js/main.js"></script>
  </body>
</html>

Kein Heading, kein Text, keine strukturierten Daten. Wenn Googlebot in Phase 1 das hier sieht, ist die einzige semantische Information „App" im Title. Der Rest hängt davon ab, ob der WRS später erfolgreich rendert. Wer auf Glück angewiesen ist, ist nicht in der SEO-Liga.

Warum SSR die strukturelle Antwort ist

Eine SSR-App liefert beim ersten Request bereits das vollständige HTML – inklusive Headings, Texten, Bildern, Meta-Tags und JSON-LD Schema. Googlebot bekommt in Phase 1 alles, was er braucht. Phase 2 ist nicht mehr indexierungs-kritisch, sondern nur noch Bonus für interaktive Features.

Genau deshalb bauen wir bei Storyable jeden Kunden auf Nuxt mit SSR statt auf eine reine Vue-SPA. Der Performance-Unterschied beträgt im First Contentful Paint oft 60–80 %. Der SEO-Unterschied: Faktor 3–5 in der Indexierungs-Geschwindigkeit, gemessen über Wochen.

Storyable-Praxis

Wir hatten Anfang 2026 einen Kunden aus dem Web-App-Bereich, der von einer React-SPA zu Next.js mit SSR migrierte. Vorher: 40 % der internen Routen indexiert, durchschnittliche Indexierungs-Verzögerung 12 Tage. Nachher: 100 % der Routen indexiert, durchschnittliche Verzögerung 18 Stunden. Organischer Traffic +210 % in 90 Tagen. Reine Architektur-Frage, kein einziger neuer Backlink.

Der Googlebot-Crawler: Crawl-Budget und Render-Verzögerung

Google verfügt über immense Ressourcen, aber nicht über unendliche. Für jede Domain definiert der Algorithmus ein Crawl-Budget – die Anzahl URLs, die Googlebot pro Zeitraum abruft. Bei JavaScript-Sites verdoppelt sich der Aufwand, weil der Render-Pass zusätzlich anfällt.

Wie Crawl-Budget bei JavaScript-Sites verbrannt wird

Drei typische Stolperfallen, die wir in Storyable-SEO-Audits immer wieder sehen:

  • Render-Schleifen: Eine SPA, die im JavaScript zusätzliche Routen lazy-lädt, zwingt den Crawler zu wiederholten Render-Passes. Crawl-Budget rauscht durch die Decke
  • JS-Bundles im MB-Bereich: Wenn dein Main-Bundle 3 MB groß ist, dauert der WRS-Render entsprechend lange. Bei großen Sites kommt der Bot nicht hinterher
  • Externe Abhängigkeiten: Drittanbieter-Skripte (Tracking, Widgets, Chatbots), die im Render-Pass mitgeladen werden, verzögern den Indexer zusätzlich

Die Folge: Bei mittelgroßen SPAs (5.000+ Routen) sind nach unseren Audit-Daten oft nur 40–60 % der URLs sauber indexiert. Bei reinen SSR-Sites liegt der Wert bei 95 %+.

Warum die Verzögerung dein Geschäft kostet

Indexierungs-Verzögerung ist nicht nur ein technisches Detail – sie ist Umsatzverlust. Drei konkrete Schäden:

  • Neue Inhalte verspäten Rankings: Ein Blogartikel, der erst nach 14 Tagen indexiert wird, verliert die Aktualitäts-Welle, in der er den meisten Traffic hätte
  • Produkt-Updates kommen zu spät: Ein neues Sortiment, das Google erst nach Wochen sieht, generiert keine Listings in Shopping-Ergebnissen
  • Konkurrenz holt auf: Während dein Content im Render-Stau hängt, ranked die SSR-Konkurrenz dieselben Begriffe in 24 Stunden

Wer 2026 ein E-Commerce-Geschäft auf einer SPA betreibt, verschenkt jede Woche Umsatz. Das gilt nicht in der Theorie – es gilt in jeder Search-Console, die wir auswerten.

Dynamic Rendering: Notlösung mit Verfallsdatum

Dynamic Rendering ist die Brücke, die Google selbst 2018 als Übergangsstrategie für SPAs vorschlug: Crawler bekommen eine pre-gerenderte HTML-Version, echte Nutzer die normale JavaScript-App. Tools wie Prerender.io, Rendertron oder ein eigenes Puppeteer-Setup übernehmen diese Aufgabe.

Wie Dynamic Rendering technisch funktioniert

  • Server prüft beim Request den User-Agent
  • Bei Crawler-Bots (Googlebot, Bingbot, FacebookBot) wird ein vorgerenderter HTML-Snapshot ausgeliefert
  • Bei normalen Browsern läuft die Standard-SPA
  • Der Renderer (Headless Chrome) erzeugt die Snapshots im Hintergrund und cached sie

Warum Google Dynamic Rendering 2024 als Workaround eingestuft hat

Google selbst hat in offiziellen Statements 2023/2024 klargestellt: Dynamic Rendering ist kein langfristiges Konzept. Die offiziellen Argumente:

  • Cloaking-Risiko: Wer Bots und Nutzern unterschiedlichen Content liefert, riskiert Google-Sanktionen, falls der Inhalt voneinander abweicht
  • Wartungsaufwand: Renderer-Setups brechen oft (neue Browser-Versionen, neue JS-Features), führen zu unentdeckten Indexierungs-Fehlern
  • Performance: Der Renderer-Server kostet Ressourcen, die in einer SSR-Architektur gar nicht anfallen würden

Wir setzen Dynamic Rendering bei Storyable ausschließlich als temporäre Brücke ein – etwa wenn ein Kunde mit einer großen Legacy-SPA migriert und SSR erst in Phase 2 kommt. Niemals als Endzustand.

SPA-zu-SSR-Migration nötig? Wir analysieren deine bestehende JavaScript-App, identifizieren die kritischen SEO-Lücken und planen mit dir den Umbau auf Nuxt oder Next.js mit SSR. Du bekommst einen klaren Migrations-Pfad mit Zwischenstand-Tests und Verlust-freier URL-Migration – ohne Ranking-Einbruch.

Warum SSR mit Nuxt das Problem strukturell löst

Statt das Symptom zu behandeln, baust du die Krankheit nicht ein. Genau das tut Server-Side Rendering: Es eliminiert das JavaScript-SEO-Problem an der Wurzel, weil Googlebot in Phase 1 bereits alles sieht, was er für die Indexierung braucht.

Die Vorteile von Nuxt SSR im Detail

  • Vollständiges HTML im Initial-Response: Headings, Text, Bilder, Schema.org JSON-LD, Open Graph – alles bereits geliefert
  • Hydration für Interaktivität: JavaScript übernimmt nach dem Render und macht die Seite interaktiv – aber der Initial-Render bleibt vollständig
  • Schema.org out-of-the-box: Mit nuxt-schema-org wird strukturiertes Markup serverseitig generiert – kritisch für Rich Results und Entity SEO
  • Edge-Rendering: Nuxt 3 unterstützt Edge-Deployments (Cloudflare, Vercel), die das HTML in Millisekunden ausliefern – Core Web Vitals werden zum Selbstläufer

Wer Nuxt richtig aufsetzt, hat nicht nur SEO im Griff, sondern auch Performance, Sicherheit und Skalierbarkeit gleichzeitig optimiert. Drei Probleme, eine Architektur-Antwort.

Next.js, Remix, SvelteKit – die Alternativen

Nuxt ist unsere Standardwahl, weil das Vue-Ökosystem für unsere Projekte ideal passt. Aber die Logik gilt für jedes moderne Meta-Framework:

FrameworkStackSSR-ReifeEdge-Support
Nuxt 3VueSehr hochJa (Cloudflare, Vercel)
Next.js 15ReactSehr hochJa (Vercel, AWS)
RemixReactHochJa (Cloudflare, Fly.io)
SvelteKitSvelteHochJa (Cloudflare, Vercel)
AstroMulti-StackSehr hoch (SSG-Fokus)Ja

Welches Framework du wählst, ist sekundär. Dass du eines davon wählst statt einer reinen Client-Side-SPA, ist primär.

Praxis-Test: So prüfst du, ob Google deine Seite wirklich sieht

Theorie reicht. Hier die drei Pflicht-Tests, die wir in jedem Storyable-SEO-Audit durchziehen, bevor wir auch nur eine andere Optimierung anfassen.

Test 1: URL-Inspektion in der Google Search Console

Die Search Console ist die einzige verlässliche Quelle dafür, was Google tatsächlich indexiert hat. Workflow:

  1. URL in der URL-Prüfung eingeben
  2. „Live-URL testen" klicken
  3. Im Reiter „Gerendertes HTML" prüfen, ob alle Inhalte vorhanden sind
  4. Im Screenshot prüfen, ob die Seite optisch komplett gerendert wurde

Wenn das gerenderte HTML leer oder unvollständig ist, hat Google ein Problem mit deinem JavaScript. Punkt.

Test 2: Mobile-Friendly Test mit Render-Screenshot

Das Mobile-Friendly Test Tool (search.google.com/test/mobile-friendly) zeigt einen Screenshot dessen, was Googlebot rendert. Schnell, kostenlos, brutal ehrlich. Wenn dein Header dort fehlt – Googlebot sieht ihn auch nicht.

Test 3: Screaming Frog im JavaScript-Rendering-Modus

Für mittlere und große Sites ist Screaming Frog (oder Sitebulb als Alternative) Pflicht. Im JS-Rendering-Modus crawlt das Tool deine Site wie Googlebot und zeigt:

  • Welche URLs ohne JS Inhalte haben (gut) vs. nur mit JS (Risiko)
  • Welche Meta-Tags client-seitig generiert werden (oft kritisch)
  • Welche Routen langsam oder gar nicht rendern

Innerhalb eines Crawl-Laufs siehst du die strukturellen JavaScript-SEO-Probleme deiner Domain. Bei einer typischen 5.000-URL-Site dauert der Audit unter 2 Stunden.

Häufiger Audit-Fund

Der Klassiker, den wir in 80 % der Audits sehen: Meta-Title und Meta-Description werden client-seitig per react-helmet, vue-meta oder ähnlichem gesetzt. Im rohen HTML steht ein generischer Default. Googlebot indexiert in Phase 1 den Default. Resultat: Hunderte Seiten mit identischem Title in den SERPs. Mit SSR (oder static generation) ist das Problem in einer Code-Zeile gelöst.

Fazit: JavaScript SEO entscheidet, ob du existierst

JavaScript SEO ist 2026 keine Nische, sondern Pflichtwissen für jeden, der eine moderne Website betreibt. Wer eine reine SPA baut und auf Google-Rankings hofft, baut auf eine Render-Pipeline, die er nicht kontrolliert. Der zweistufige Googlebot, das begrenzte Crawl-Budget und die wachsenden JavaScript-Bundles machen Client-Side-Rendering zum strategischen Risiko.

Drei Wege bleiben: Erstens das Problem an der Wurzel lösen mit Server-Side Rendering – Nuxt oder Next.js sind die Industriestandards 2026. Zweitens Static Site Generation für Inhalte, die sich selten ändern – Performance plus SEO ohne Server-Last. Drittens Dynamic Rendering nur als Brücke, wenn eine Migration noch nicht abgeschlossen ist – nie als Dauerzustand.

Bei Storyable in Hannover sehen wir: Die Kunden, die ihre App von Anfang an mit Nuxt SSR aufsetzen, haben nie ein Indexierungs-Problem. Die Kunden, die nachträglich migrieren, gewinnen oft binnen 90 Tagen Faktor 2–4 organischen Traffic – ohne neue Inhalte, ohne neue Backlinks. Es ist die Architektur, nicht das Marketing. Wer JavaScript SEO ignoriert, optimiert für eine Welt, die Google nicht sieht.

Cagri Ersöz
Cagri Ersöz

Sieht Google deine JavaScript-App – oder ein leeres Skelett?

Wir prüfen deine Website mit URL-Inspektion, Mobile-Friendly Test und Screaming Frog im JS-Rendering-Modus. Du bekommst einen klaren Befund, welche Routen indexiert sind, welche nicht – und einen konkreten Migrations-Plan auf Nuxt oder Next.js mit SSR, falls deine Architektur SEO blockiert.

Häufig gestellte Fragen

Schnelle Antworten auf die wichtigsten Fragen zu diesem Thema

Was ist JavaScript SEO?+
JavaScript SEO ist die Disziplin, Websites mit dynamischem JavaScript-Content so aufzubauen, dass Suchmaschinen sie zuverlässig crawlen, rendern und indexieren können. Klassische HTML-Seiten kann Google sofort lesen. JavaScript-Anwendungen (React, Vue, Angular) müssen erst gerendert werden – ein zusätzlicher Schritt, der Crawl-Budget kostet, Verzögerung erzeugt und in vielen Fällen zu unvollständiger Indexierung führt.
Warum kann Google manche Single Page Apps nicht richtig lesen?+
Eine klassische Single Page App (SPA) liefert beim ersten Request nur ein leeres HTML-Skelett. Der eigentliche Content wird erst durch JavaScript im Browser nachgeladen. Googlebot arbeitet zweistufig: Er crawlt zuerst das HTML, später (oft Tage später) rendert er das JavaScript in einer Web Rendering Service genannten Pipeline. Wenn dieser zweite Schritt scheitert, hängt oder zu lange dauert, sieht Google nur das leere Skelett und indexiert die Seite ohne Inhalte.
Was ist der Unterschied zwischen SPA, SSR und SSG?+
Eine SPA (Single Page App) rendert alles im Browser – das HTML ist initial leer. SSR (Server-Side Rendering) rendert auf dem Server bei jedem Request und liefert vollständiges HTML. SSG (Static Site Generation) generiert HTML einmalig beim Build und liefert es aus einem CDN. Aus SEO-Sicht sind SSR und SSG nahezu gleichwertig perfekt – die SPA ist die Risiko-Architektur, weil sie auf JavaScript-Rendering durch den Crawler angewiesen ist.
Was ist Dynamic Rendering – und sollte ich es einsetzen?+
Dynamic Rendering bedeutet, dass die Website Crawlern eine vorgerenderte HTML-Version ausliefert (z.B. via Prerender.io, Rendertron oder Puppeteer), während echte Nutzer die normale JavaScript-App bekommen. Google selbst hat Dynamic Rendering 2024 als 'Workaround' deklariert, nicht als Best Practice. Sinnvoll ist es nur als kurzfristige Brücke bei Legacy-SPAs. Strukturell richtig ist SSR oder SSG – damit umgehst du das Problem von vornherein.
Warum löst SSR mit Nuxt oder Next.js das JavaScript-SEO-Problem?+
Mit SSR rendert dein Server bei jedem Request das vollständige HTML inklusive aller Inhalte, Meta-Tags und strukturierter Daten. Googlebot bekommt im ersten Schritt bereits alles, was er braucht – kein zweiter Render-Pass, keine Verzögerung, kein Crawl-Budget-Verlust. Nuxt und Next.js liefern SSR out-of-the-box, kombinieren es mit Hydration und ermöglichen die Mischung aus Server-Render und Client-Interaktivität. Genau deshalb bauen wir bei Storyable jeden Kunden auf Nuxt – damit JavaScript-SEO nie ein Problem wird.
Wie teste ich, ob Google meine JavaScript-Seite sieht?+
Drei Pflicht-Tools: Erstens die URL-Inspektion in der Google Search Console – dort siehst du den gerenderten HTML-Code, den Googlebot tatsächlich erfasst. Zweitens das Mobile-Friendly Test Tool, das die gerenderte Version mit Screenshot zeigt. Drittens Screaming Frog im JavaScript-Rendering-Modus, das in einem Crawl alle URLs deiner Seite parst und Diskrepanzen zwischen rohem HTML und gerendertem HTML anzeigt. Wer alle drei laufen lässt, sieht jedes Indexierungs-Problem in unter 30 Minuten.
Ähnliche Artikel

Ähnliche Artikel

Weitere Beiträge aus diesem Themenbereich