SEO für Single-Page-Apps: Warum sie aus Google verschwinden
Von Toy Wen Da, Mitgründer · Aktualisiert · 22 Min. Lesezeit
Übersetzt aus dem englischen Original. Auf Englisch lesen
SEO für Single-Page-Apps scheitert aus einem einzigen Grund: Suchmaschinen sehen oft eine leere Seite, wo Ihre Nutzer eine reichhaltige, interaktive App sehen. Ihre SPA lädt schnell, fühlt sich wie Software an und verschwindet trotzdem aus Google, weil Googlebot die Inhalte, die er indexieren soll, nie zu Gesicht bekommt. Schließen Sie die Lücken bei Rendering, Routing und Metadaten, dann kann dieselbe App ranken.

Was eine Single-Page-App eigentlich ist
Eine Single-Page-Application, kurz SPA, lädt eine einzige HTML-Datei und baut den Rest des Erlebnisses mit JavaScript auf. Statt bei jedem Klick auf einen Link eine neue Seite vom Server anzufordern, tauscht der Browser Inhalte innerhalb derselben Seite aus. Kein Neuladen, kein weißes Aufblitzen, kein Warten auf das Netzwerk bei jedem Klick.
Das ist der Reiz. Es ist zugleich die Wurzel aller SEO-Probleme, um die es in diesem Artikel geht.
Wie sich SPAs von einer klassischen Website unterscheiden
Eine klassische Website mit mehreren Seiten sendet für jede URL ein neues, vollständiges HTML-Dokument. Der Server erledigt die Arbeit, der Browser zeigt nur an. Ein Suchmaschinen-Crawler liest dieses HTML und sieht dieselben Inhalte wie ein menschlicher Besucher.
Bei einer SPA ist es umgekehrt. Der Server sendet eine fast leere HTML-Hülle plus ein JavaScript-Bundle. Der Browser führt dieses JavaScript aus, holt Daten, baut die Seite auf und fügt Inhalte in das DOM ein. Ein Crawler, der beim rohen HTML stehen bleibt, sieht fast nichts, nur ein Script-Tag und einen leeren Container.
React, Angular und Vue treiben heute die meisten SPAs im Web an. Sie unterscheiden sich in Syntax und Werkzeugen, teilen aber denselben Kompromiss: Tempo und App-ähnliche Interaktivität gegen einen schwierigeren Weg zur Sichtbarkeit in der Suche.
Gängige Beispiele, die Sie bereits nutzen
Sie nutzen ständig Single-Page-Apps, oft ohne es zu merken:
- Gmail und Google Maps: Inhalte aktualisieren sich an Ort und Stelle, während Sie scrollen, verschieben oder zoomen.
- Trello und Asana: Karten und Boards aktualisieren sich sofort, ohne dass die Seite neu lädt.
- Spotifys Web-Player: Stöbern und Wiedergabe laufen auf einer durchgehenden Seite.
- Airbnbs Such- und Filtererlebnis: Die Ergebnisse aktualisieren sich, sobald Sie die Filter anpassen, ohne dass eine neue Seite lädt.
Diese Produkte funktionieren als SPAs, weil das Erlebnis von sofortigem Feedback profitiert. Ein Trello-Board, das bei jedem Drag-and-drop neu lädt, würde sich kaputt anfühlen. Keines dieser Produkte ist in erster Linie darauf angewiesen, dass organischer Suchverkehr auf neue Seiten gelangt, so wie bei einer Content-Website, einem Blog oder einem E-Commerce-Katalog. Auf diesen Unterschied kommt es mehr an, als den meisten Teams klar ist, bevor sie diese Architektur für eine Marketing-Website wählen.
Warum Single-Page-Apps aus den Google-Suchergebnissen verschwinden
Seiten verschwinden aus Google aus einem von drei sich überlappenden Gründen: Der Crawler sieht den Inhalt nicht, der Inhalt liegt nicht unter einer crawlbaren URL, oder Google indexiert die Seite, stuft sie aber als dünn oder doppelt ein. SPAs sind anfällig für alle drei zugleich.
Das Crawling-Problem
Googlebot ruft eine Seite in zwei Stufen ab. Zuerst holt er das rohe HTML. Bei einer SPA ist dieses HTML größtenteils leer: ein <div id="root"></div> und eine Handvoll <script>-Tags. Danach muss Googlebot dieses JavaScript parsen, kompilieren und ausführen, bevor er Ihre eigentlichen Inhalte sehen kann.
Diese zweite Stufe passiert nicht sofort. Google stellt das JavaScript-Rendering getrennt vom ersten Crawl in eine Warteschlange. Der Abstand zwischen beiden kann je nach Crawl-Budget und Serverantwortzeiten von Sekunden bis zu mehreren Tagen reichen. Google Search Central dokumentiert diesen zweistufigen Ablauf direkt: Google crawlt das HTML, stellt die Seite zum Rendern in die Warteschlange und crawlt die gerenderte Ausgabe erneut, sobald Ressourcen frei sind. Halten Ihre Content-Management-Pipeline, Ihre Sitemap oder Ihre internen Links in dieser Lücke nicht stand, kann die Seite als dünn markiert, übersprungen oder gar nicht erst für einen zweiten Durchgang eingeplant werden. Unser Leitfaden wie die Indexierung durch Suchmaschinen wirklich funktioniert und warum Seiten übersprungen werden behandelt diesen zweistufigen Prozess ausführlicher.
Das Problem des Rendering-Budgets
JavaScript zu rendern ist aufwendig im Vergleich zum Lesen von statischem HTML. Google muss eine browserähnliche Umgebung starten, jedes Script und jede Abhängigkeit herunterladen, den Code ausführen und warten, bis asynchrone Datenabfragen abgeschlossen sind, bevor es ein vollständiges Bild der Seite hat. Multiplizieren Sie das mit einer Website mit Tausenden von URLs, und Sie verlangen von Google deutlich mehr Rechenleistung für Ihre Website, als ein Wettbewerber mit statischem HTML braucht.
Googles Crawling-Infrastruktur läuft inzwischen auf einer Evergreen-Rendering-Engine, die mit dem aktuellen Chromium Schritt hält und deshalb die meisten modernen JavaScript-Anwendungen ausführen kann. Das ist ein echter Fortschritt gegenüber früheren Jahren. Aber „kann es rendern“ heißt nicht „rendert es schnell, jedes Mal, für jede Seite“. Bei Websites mit vielen Seiten oder schwachen Crawl-Signalen können Render-Anfragen niedriger priorisiert werden. Das zeigt sich dann darin, dass Seiten in der Search Console wochenlang bei „Gefunden – zurzeit nicht indexiert“ (Discovered, currently not indexed) hängen.
Das URL-Problem: Eine Seite, viele „Ansichten“
Das tiefste strukturelle Problem ist, dass eine klassische SPA genau eine URL hat. Klicken Sie sich durch zehn Produktseiten, ändert sich die Adresszeile des Browsers womöglich gar nicht oder hängt nur ein Fragment wie #/product/42 an. Für einen Crawler bedeuten Fragmente nach einem # historisch „dieselbe Seite, andere Scroll-Position“, nicht ein neues Dokument, das separat indexiert werden sollte.
Das heißt: Google sieht womöglich nur eine einzige URL für Ihren gesamten Katalog, Ihren gesamten Blog oder Ihre gesamte App, egal wie viele verschiedene „Seiten“ ein menschlicher Besucher erreichen kann. Eine URL bedeutet einen Eintrag im Index, ein Title-Tag, eine Meta-Beschreibung und eine Chance, für eine Suchanfrage zu ranken. Alles andere ist unsichtbar.
Ist eine Single-Page-App gut für SEO?

Ja, aber nur mit gezielter Entwicklungsarbeit. Eine unveränderte, clientseitig gerenderte SPA ist standardmäßig schlecht für SEO. Dasselbe Framework kann mit Server-Side Rendering, echten URLs pro Ansicht und Metadaten pro Ansicht genauso gut ranken wie eine klassische Website. Nicht die Architektur ist das Problem, sondern die Standardkonfiguration.
Die richtige Wahl hängt außerdem davon ab, wofür die Seite gedacht ist. Ein paar Funktionsansichten in einem Dashboard hinter dem Login müssen in Google gar nicht ranken, denn niemand sucht nach Ihrer Rechnungsansicht. Ein öffentlicher Blog, ein Produktkatalog oder eine Marketing-Website, die als reine SPA gebaut ist, muss dagegen unbedingt ranken, und dort entsteht der meiste Schaden.
| Architektur | SEO ohne Anpassung | Typischer Einsatz | Wichtigster Kompromiss |
|---|---|---|---|
| SPA (clientseitig gerendert) | Schwach, eine einzige URL, leeres initiales HTML | Dashboards, interne Tools, Apps hinter dem Login | Schnellste Interaktionen in der App, am schwersten zu crawlen |
| MPA (mehrere Seiten, serverseitig gerendert) | Standardmäßig stark | Blogs, Nachrichtenseiten, E-Commerce-Kataloge | Einfach zu crawlen, aber vollständige Reloads fühlen sich langsamer an |
| SPA mit SSR/SSG (hybrid) | Stark, mit Einrichtungsaufwand | Marketing-Websites, SaaS, Shops, die App-ähnliche UX und Suchverkehr brauchen | Das Beste aus beiden Welten, aber mehr Komplexität bei Build und Infrastruktur |
| PWA (Progressive Web App) | Stark, wenn auf SSR/SSG aufgebaut | Mobile-first-Produkte mit Offline-Unterstützung und Rankingfähigkeit | Installierbar und offlinefähig, braucht für Crawler aber trotzdem Rendering-Arbeit |
Braucht Ihre Website sowohl organischen Traffic als auch ein App-Gefühl, ist ein hybrider Ansatz die realistische Antwort: SSR oder statische Generierung unter einem SPA-Framework, nicht eine einfache clientseitig gerenderte SPA.
Der Tempo-Kompromiss: Warum Teams trotzdem SPAs wählen
Teams wählen die SPA-Architektur nicht zufällig. Sie wählen sie, weil Tempo und Reaktionsschnelligkeit Umsatz bringen. Sobald das erste Bundle geladen ist, fühlt sich die Navigation in einer SPA sofort an, weil für jeden Klick keine Anfrage an den Server nötig ist. Das ist wichtig, weil die Ladezeit nachweislich die Conversion beeinflusst.
Amazon hat erklärt, dass eine zusätzliche Sekunde Ladeverzögerung etwa 1 % des Umsatzes kosten kann, eine Zahl, die bei Amazons Größe auf rund 1,6 Milliarden US-Dollar pro Jahr geschätzt wurde. Neuere Branchenwerte zeichnen ein ähnliches Bild: Die Untersuchung von Queue-it aus dem Jahr 2025 ergab, dass eine um eine Sekunde kürzere Ladezeit die E-Commerce-Conversion-Rate um etwa 5,6 % steigern kann, und ein Benchmark von Portent ergab, dass jede zusätzliche Sekunde Ladezeit zwischen null und fünf Sekunden die Conversion-Rate um etwa 4,42 % senken kann. Die Studie „Milliseconds Make Millions“ von Google und Deloitte ergab, dass schon 0,1 Sekunden weniger mobile Ladezeit bis zu 10 % mehr Conversions bringen können. Die Daten von BrowserStack aus dem Jahr 2025 sind eindeutig: Rund 40 % der Besucher verlassen eine Website, die länger als drei Sekunden lädt.

Das ist das Geschäftsargument für SPA-typische Interaktivität. Es ist zugleich genau der Grund, warum es so teuer ist, dafür die organische Sichtbarkeit in der Suche zu opfern. Die Lösung heißt nicht, sich zwischen Tempo und SEO zu entscheiden, sondern für beides zu planen. Genau darum geht es im nächsten Abschnitt.
Wie Google JavaScript heute crawlt und rendert
Googles Fähigkeit, JavaScript zu verarbeiten, hat sich in den vergangenen Jahren erheblich verbessert, aber „verbessert“ heißt nicht „gleichwertig mit statischem HTML“. Wer die Mechanik versteht, erkennt leichter, wo Ihre SPA am ehesten Sichtbarkeit verliert.
Zweistufige Indexierung in der Praxis
Stellen Sie es sich als zwei Durchgänge vor. Welle eins: Googlebot holt Ihr HTML und extrahiert alle Links, Texte und Metadaten, die auch ohne JavaScript schon vorhanden sind. Welle zwei, die nach einem eigenen Zeitplan abläuft: Google rendert die Seite in einer Headless-Browser-Umgebung und extrahiert die Inhalte erneut, einschließlich dessen, was JavaScript eingefügt hat.
Existiert Ihr Inhalt erst nach Welle zwei, hängen Sie von Googles Rendering-Warteschlange ab, und diese Warteschlange konkurriert um Ressourcen mit jeder anderen JavaScript-lastigen Website im Web. Eine Studie von Vercel und der Technical-SEO-Firma MERJ, die mehr als 100.000 Googlebot-Abrufe analysierte, kam zu dem Ergebnis, dass Google JavaScript-Inhalte in der Regel erfolgreich rendert, jedoch mit spürbaren Verzögerungen und gelegentlichen Lücken, je nachdem, wie das Script geladen wird und wie komplex der Rendering-Pfad ist.
Rendering kostet echte Rechenleistung, Ihre und die von Google
Jede per JavaScript gerenderte Seite kostet mehr Server- und Crawler-Ressourcen als eine statische HTML-Seite. Für eine SPA hat das zwei Folgen:
- Google crawlt Ihre Website möglicherweise seltener als eine vergleichbare statische Website, weil jeder Crawl in der Verarbeitung mehr kostet.
- Ihre eigenen Server und APIs werden stärker belastet, wenn Sie Daten bei jeder Anfrage clientseitig abrufen, auch bei Anfragen von Bots.
Beides ist für sich genommen nicht fatal. Zusammen verlangsamen sie bei einer großen Website, wie schnell neue oder aktualisierte Seiten entdeckt und neu indexiert werden. Einen tieferen Einblick, warum das für die ganze Website und nicht nur für eine einzelne Seite zählt, bietet unsere Aufschlüsselung zu Bedeutung von technischem SEO und dazu, wie Crawl-Effizienz direkt mit den Rankings zusammenhängt.
Was das für Ihr Crawl-Budget bedeutet
Websites mit Tausenden clientseitig gerenderter URLs sind diejenigen, bei denen Seiten am ehesten unindexiert bleiben. Eine als SPA gebaute Marketing-Website mit zehn Seiten wird wahrscheinlich vollständig gerendert und indexiert, Google hat das Budget dafür übrig. Ein E-Commerce-Katalog mit 5.000 Seiten, der genauso gebaut ist, ist eine deutlich riskantere Wette, weil sich der Rückstau beim Rendern aufschaukelt.
SPA-SEO beheben: Rendering-Strategien im Vergleich

Dies ist der Teil, der SEO für Single-Page-Apps tatsächlich behebt. Der Kerngedanke ist bei allen folgenden Lösungen derselbe: Der Crawler soll schon bei der ersten Anfrage echtes, lesbares HTML bekommen, nicht erst nach der Ausführung von JavaScript.
| Rendering-Strategie | Was passiert | Crawlbarkeit | Am besten für |
|---|---|---|---|
| Client-Side Rendering (CSR) | Der Browser baut die gesamte Seite nach dem Laden aus JS auf | Am schwächsten, Inhalte werden womöglich übersehen oder verzögert erfasst | Tools hinter dem Login, Dashboards, die nicht ranken sollen |
| Server-Side Rendering (SSR) | Der Server rendert bei jeder Anfrage vollständiges HTML und „hydratisiert“ es dann mit JS | Stark, der Crawler erhält sofort vollständiges HTML | Seiten mit häufig wechselnden oder personalisierten Inhalten |
| Static Site Generation (SSG) | HTML wird beim Deployment für jede Route vorab gebaut | Am stärksten und schnellsten, jedes Mal fertig ausgebildetes HTML | Blogs, Marketing-Seiten, Dokumentation, Inhalte, die sich nach Zeitplan ändern |
| Prerendering | Ein Headless-Browser rendert die SPA einmal und liefert gecachtes HTML an Crawler (oder an alle) | Stark, wirksame Ausweichlösung für bestehende SPAs | SEO nachträglich in eine App einbauen, die Sie nicht komplett neu bauen können |
| Hybrid / Incremental Static Regeneration | Mischung aus SSG, SSR und Rendering auf Abruf pro Route | Stark und flexibel | Große Websites mit statischen und dynamischen Bereichen |
Server-Side Rendering als Hauptlösung
SSR rendert Ihre React-, Vue- oder Angular-Komponenten auf dem Server zu vollständigem HTML und sendet dieses HTML an den Browser, der es zu einer interaktiven App „hydratisiert“. Der Crawler erhält schon bei der allerersten Anfrage echten Inhalt, ohne auf einen zweiten Rendering-Durchgang zu warten. Frameworks, die um dieses Muster herum gebaut sind, etwa Next.js für React, gibt es genau deshalb, damit SSR und statische Generierung zum Standard werden statt zum nachträglichen Einfall. Wenn Sie Next.js nutzen oder gerade prüfen, führt Sie unser Next.js-SEO-Leitfaden in der Reihenfolge, auf die es wirklich ankommt, durch die Konfiguration von Metadaten, Sitemap und robots.
Prerendering als schnellere, günstigere Nachrüstung
Ist ein vollständiger SSR-Umbau derzeit nicht realistisch, ist Prerendering der praktische Mittelweg. Ein Dienst rendert Ihre SPA einmal mit einem Headless-Browser, cacht das entstandene statische HTML und liefert diese gecachte Version an Crawler und oft an alle Erstbesucher aus, während die interaktive JavaScript-Version für wiederkehrende Nutzer lädt. Das ist nicht so elegant wie echtes SSR, schließt aber die Crawlbarkeitslücke ohne Framework-Migration.
Progressive Enhancement als Sicherheitsnetz
Progressive Enhancement bedeutet, das Kernerlebnis zunächst so zu bauen, dass es ohne JavaScript funktioniert, und darauf für Browser und Crawler, die es unterstützen, Interaktivität aufzusetzen. Feature Detection, also die Prüfung, ob eine Fähigkeit vorhanden ist, bevor man sich auf sie verlässt, hält die Seite funktionsfähig, selbst wenn ein Script nicht lädt oder ein Crawler es nicht vollständig ausführt. Bei einer inhaltsreichen Website ersetzt das weder SSR noch Prerendering, ist aber eine solide Schutzgewohnheit für jede Funktion, die von JavaScript abhängt.
Beispiel für eine schrittweise Migration von SPA zu SSR
Wer Rendering-Strategien nur abstrakt liest, erfährt nicht, wie lange eine echte Migration dauert oder in welcher Reihenfolge die Arbeit abläuft. Hier ein durchgespieltes Beispiel, wie eine typische mittelgroße SPA, sagen wir ein SaaS-Verzeichnis mit 400 Seiten, gebaut in React mit clientseitigem Routing, ohne vollständige Neuentwicklung zu Next.js SSR wechselt.
Schritt 1: Prüfen, was Google aktuell sieht (1–3 Tage). Holen Sie sich jede indexierte URL aus dem Bericht „Seitenindexierung“ (Page Indexing) der Search Console und vergleichen Sie sie mit Ihrer tatsächlichen Routenliste. Bei einer Website mit 400 echten Ansichten sind womöglich nur 60 oder 70 indexiert, der Rest steht bei „Gefunden – zurzeit nicht indexiert“ oder „Gecrawlt – zurzeit nicht indexiert“ (Crawled, currently not indexed). Diese Lücke ist Ihre Ausgangsbasis.
Schritt 2: Next.js neben der bestehenden App einrichten (1–2 Wochen). Statt alle Komponenten auf einmal neu zu schreiben, betreiben die meisten Teams Next.js als Hülle um bestehende React-Komponenten und wandeln die Routen Template für Template in Next.js-Seiten (oder App-Router-Segmente) um. Sie beginnen mit den Seiten mit dem meisten Traffic, nicht mit den einfachsten.
Schritt 3: Datenabruf in serverseitige Loader verlagern (1–2 Wochen, parallel zu Schritt 2). Jeder useEffect-Aufruf, der die Daten holt, die eine Seite zum Rendern braucht, muss in eine serverseitige Funktion (getServerSideProps, einen Route-Handler oder den eigenen Fetch einer Server-Komponente) umziehen, damit das HTML schon bei der ersten Anfrage vollständig ankommt.
Schritt 4: Die alten hash-basierten oder Query-String-URLs umleiten (1–2 Tage). Jede alte Adresse im Stil von #/product/42 braucht eine serverseitige 301-Weiterleitung auf ihren neuen, sauberen Pfad /product/42. Wer diesen Schritt auslässt, verliert bei Migrationen am häufigsten bestehende Rankings, statt sie zu verbessern: Die alten URLs verschwinden einfach, und nichts weist Suchmaschinen auf den Ersatz hin.
Schritt 5: Sitemap erneut einreichen und Indexierung für priorisierte URLs anfordern (1 Tag, danach abwarten). Eine neue oder aktualisierte XML-Sitemap mit jeder sauberen Route geht direkt nach jedem ausgelieferten Seitenpaket an die Search Console. Die Dokumentation von Google Search Central selbst weist darauf hin, dass das erneute Einreichen einer Sitemap die Entdeckung beschleunigt, aber kein schnelleres Rendering oder Ranking garantiert. Die Crawl-Priorität hängt weiterhin von der bestehenden Autorität und dem Crawl-Budget der Website ab.
Schritt 6: Die Indexierungskurve 4–8 Wochen beobachten. Teams, die das genau verfolgen, sehen die Zahl bei „Gefunden – zurzeit nicht indexiert“ typischerweise über mehrere Wochen stetig sinken, während Google die umgestellten Templates erneut crawlt, nicht auf einmal. Eine Seite, die in Woche eins umgestellt wurde, zeigt den neuen Indexierungsstatus in der Search Console womöglich erst in Woche drei oder vier.

Alle sechs Schritte Template für Template durchzugehen, statt alles in einem großen Wurf neu zu schreiben, verhindert, dass eine Migration die bestehenden Rankings einbrechen lässt, solange die Arbeit läuft.
Eine grobe Kostenschätzung. Für ein Team, das mit React vertraut ist, dauert die Umstellung einer mittelgroßen SPA (einige hundert Routen) auf Next.js SSR typischerweise vier bis acht Wochen konzentrierter Entwicklungszeit, basierend auf Migrations-Fallstudien, die das Customer-Engineering-Team von Vercel selbst veröffentlicht hat. Der größte Teil davon entfällt auf Schritt 3 (Datenabruf verlagern) und nicht auf Routing oder Konfiguration. Planen Sie entsprechend, statt den Stakeholdern zwei Wochen zu versprechen.
Häufige Fehler von Teams mitten in der Migration
Selbst mit der richtigen Rendering-Strategie gehen die meisten ins Stocken geratenen oder gescheiterten SPA-Migrationen auf eine Handvoll vermeidbarer Fehler zurück.
Alte Hash-URLs nicht umleiten. Das wurde oben schon behandelt, verdient aber wegen seiner Häufigkeit einen eigenen Punkt: Wenn #/shoes/running nicht per 301 auf /shoes/running weiterleitet, laufen Backlinks oder bestehende Rankings, die auf die alte Adresse zeigen, ins Leere, statt auf die neue URL überzugehen.
SSR für die Hülle ausliefern, aber die wichtigen Inhalte weiter per Lazy Loading nachladen. Eine Seite kann vollständig ausgebildetes HTML für Header, Footer und Navigation liefern, während die eigentliche Produktbeschreibung oder der Artikeltext nach der Hydration noch per clientseitigem Fetch geladen wird. Aus Sicht eines Crawlers ist das kaum besser als das ursprüngliche Problem, denn der Inhalt, der tatsächlich ranken würde, steckt immer noch nicht in der ersten Antwort.
Canonical-Tags während des Übergangs kaputtmachen. Wer alte und neue URL-Muster vorübergehend nebeneinander betreibt, wie es die meisten Migrationen tun, schafft ein Risiko für doppelte Inhalte, wenn beide Versionen crawlbar bleiben, ohne dass ein Canonical-Tag auf die gewünschte zeigt. Entscheiden Sie, welche URL gewinnt, bevor beide live gehen, nicht danach.
Die Migration für abgeschlossen halten, sobald das HTML im Browser richtig aussieht. Dass Sie die gerenderte Seite selbst sehen, bestätigt nicht, was Googlebot erhalten hat. Nutzen Sie das Tool „URL-Prüfung“ (URL Inspection) der Search Console oder eine HTTP-Anfrage bei deaktiviertem JavaScript, um das tatsächliche HTML der ersten Antwort zu sehen, nicht das DOM, nachdem Ihr eigener Browser schon alles ausgeführt hat.
Unterschätzen, wie lange die Neuindexierung bei einer großen Website dauert. Eine Migration mit zehn Seiten kann sich in der Search Console innerhalb einer Woche vollständig niederschlagen. Ein Katalog mit 5.000 Seiten kann zwei bis drei Monate brauchen, bis alles durchlaufen ist, einfach weil Google Seiten in Stapeln statt auf einmal neu crawlt und rendert. Eine Launch-Ankündigung oder einen Berichtstermin auf einen schnelleren Zeitplan zu legen, ist eine häufige und vermeidbare Quelle für Fehlalarme, wenn sich die Rankings in Woche eins nicht bewegen.
Geben Sie jeder Ansicht eine eigene URL
Eine Seite ohne eigene URL kann für nichts ranken, egal wie gut der Inhalt ist. Das ist der häufigste strukturelle Fehler bei SPA-SEO, und zugleich der am leichtesten zu behebende.
History API vs. Hash-basiertes Routing
Ältere SPAs nutzten oft Hash-basiertes Routing, also URLs wie example.com/#/shoes/running, weil sich der Teil nach dem # ändern ließ, ohne die Seite vollständig neu zu laden. Das Problem: Suchmaschinen haben alles nach einem # historisch als Teil desselben Dokuments behandelt, nicht als eigene, indexierbare Seite.
Die Lösung ist die History API des Browsers, genauer pushState() und replaceState(). Damit kann Ihr JavaScript die URL auf einen sauberen, echten Pfad wie example.com/shoes/running ändern, ohne die Seite vollständig neu zu laden, und gibt Suchmaschinen (und Nutzern, die den Link als Lesezeichen speichern oder teilen) trotzdem eine eigene, crawlbare Adresse für genau diese Ansicht.
Checkliste für Routing, das Suchmaschinen wirklich nutzen können:
- Jeder eigenständige Inhalt erhält einen eigenen echten Pfad, kein Hash-Fragment.
- URLs sind sprechend und stabil,
/shoes/runningstatt/view?id=4471. - Jede URL liefert direkt den richtigen Inhalt, wenn ein Nutzer (oder ein Bot) sie frisch lädt, ohne vom clientseitigen Navigationsverlauf abzuhängen.
- Eine korrekte XML-Sitemap listet alle diese Routen auf, nicht nur die Startseite.
- Canonical-Tags zeigen auf die saubere URL-Version jeder Ansicht und vermeiden doppelte Signale zwischen parametrisierten und sauberen Pfaden.

Metadaten und strukturierte Daten, die sich pro Ansicht aktualisieren

Der größte stille Fehler einer Single-Page-App sind Metadaten, die sich nie ändern. Sind Ihr <title>-Tag und Ihre Meta-Beschreibung fest in die eine HTML-Hülle geschrieben, teilt sich jede „Seite“ Ihrer SPA exakt denselben Titel und dieselbe Beschreibung in den Suchergebnissen, was für Google von doppeltem Inhalt nicht zu unterscheiden aussieht.
Titel und Beschreibungen müssen sich mit der Ansicht ändern
Jede Route braucht ihr eigenes, einzigartiges Title-Tag und ihre eigene Meta-Beschreibung, dynamisch aktualisiert, sobald der Nutzer (oder Googlebot) zu dieser Ansicht navigiert. Das bedeutet in der Regel, die Tags im Dokument-Head über die Routing-Schicht Ihres Frameworks zu verwalten, statt sie einmal in einer statischen index.html zu setzen. Unser praktischer Leitfaden zu On-Page-SEO zeigt, wie Sie Titel und Beschreibungen schreiben, die Klicks bringen, sobald sie tatsächlich pro Seite einzigartig sind. Die Funktionsübersicht zu On-Page-SEO zeigt, wie das aussieht, wenn eine ganze Website auf einmal geprüft wird.
Metadaten sind nicht bloß Kosmetik. Sie gehören zu den klarsten Signalen, die Sie direkt steuern, und ein Fehler auf Template-Ebene vervielfacht sich über jede Ansicht Ihrer App. Warum das so wichtig ist, erläutert die wahre Bedeutung von Metadaten für SEO. Welche Tags Suchmaschinen wirklich nutzen und welche stillschweigend ignoriert werden, behandelt unser Beitrag zu SEO-Meta-Tags, die Google tatsächlich nutzt. Er lohnt sich, bevor Sie die Template-Logik bauen.
Open Graph und Social-Vorschauen
Dasselbe Problem der dynamischen Aktualisierung betrifft Open-Graph-Tags, die steuern, wie ein Link aussieht, wenn er auf sozialen Plattformen oder in Messengern geteilt wird. Sind diese Tags statisch, zeigt jeder geteilte Link aus Ihrer SPA denselben Titel, dieselbe Beschreibung und dasselbe Bild, unabhängig davon, welches Produkt, welchen Artikel oder welche Seite jemand tatsächlich geteilt hat. Aktualisieren Sie og:title, og:description und og:image pro Route genauso wie Ihr Title-Tag.
Strukturierte Daten brauchen dieselbe Behandlung pro Ansicht
JSON-LD-Strukturdaten, also das Markup, das Rich Snippets wie Sternebewertungen, FAQ-Aufklappmenüs oder Produktpreise in den Suchergebnissen einbringen kann, müssen pro Ansicht erzeugt werden, nicht einmal global eingefügt. Eine Produktseiten-SPA braucht zum Beispiel Product-Schema, das Preis und Verfügbarkeit genau dieses Produkts widerspiegelt, nicht einen generischen Block, der überall wiederholt wird.
Schema.org definiert das Vokabular für dieses Markup, und die korrekte Umsetzung ist wichtiger, als die meisten Teams erwarten, denn fehlerhaftes oder fehlendes Schema verschenkt schlicht eine Sichtbarkeitschance, die Ihre Wettbewerber mit reinem HTML bereits für sich nutzen. Unsere Erklärung zum Schema-Markup zeigt, was jeder Schema-Typ für die Rankings tatsächlich bewirkt, und das Audit-Tool für Schema-Markup prüft Ihr JSON-LD und liefert korrigiertes Markup, das Sie direkt in Ihre Templates einfügen können.
Soft 404s und andere Indexierungsfallen vermeiden

Ein Soft 404 entsteht, wenn eine Seite den normalen Erfolgsstatus „200 OK“ zurückgibt, der eigentliche Inhalt für Google aber leer, kaputt oder wie eine Fehlerseite aussieht. SPAs sind dafür besonders anfällig, weil eine Route, die ihre Daten nicht laden kann, trotzdem eine weitgehend leere Hülle rendern kann, und Google dieses Muster als schlechte Seite deutet, obwohl Ihr Server technisch nie einen Fehler zurückgegeben hat.
Typische SPA-spezifische Indexierungsfallen:
- Leere Zustände mit Status 200. Ist ein Produkt nicht vorrätig oder eingestellt oder lässt sich eine Route nicht auflösen, liefern Sie einen zutreffenden Statuscode oder klaren, crawlbaren Inhalt, kein leeres div mit Erfolgsstatus.
- Endloses Scrollen ohne paginierte Alternative. Erscheint Inhalt erst nach einem durch Scrollen ausgelösten JavaScript-Ereignis, sieht ihn ein Crawler, der nicht scrollt, womöglich nie. Kombinieren Sie endloses Scrollen mit echten, verlinkbaren paginierten URLs darunter.
- Clientseitige statt serverseitige Weiterleitungen. Eine Weiterleitung, die nach dem Laden der Seite komplett in JavaScript abgewickelt wird, ist für Crawler langsamer und weniger zuverlässig als eine HTTP-301 vom Server.
- Robots-Meta-Tags, die aus dem Staging auf
noindexstehen geblieben sind. Es kommt häufig vor, dass ein<meta name="robots" content="noindex">-Tag aus der Entwicklung versehentlich innerhalb eines gemeinsamen Templates in die Produktion gelangt. - In der
robots.txtblockierte JavaScript- oder API-Endpunkte. Sind die Scripts oder Daten-Endpunkte, von denen Ihre SPA abhängt, fürs Crawling gesperrt, kann Googlebot die Seite nicht korrekt rendern, selbst wenn er es versucht.
Unser Leitfaden zu technischen SEO-Korrekturen, die Rankings wirklich bewegen zeigt, wie Sie solche Probleme über eine ganze Website hinweg aufspüren. Bei einer SPA ist das wichtiger als bei fast jeder anderen Architektur, weil ein einziger Template-Fehler unbemerkt jede Route auf einmal betreffen kann.
Tracking- und Analytics-Blindstellen in SPAs

Analytics-Tools, die für klassische Websites gebaut wurden, gehen davon aus, dass jedes Mal ein neuer Seitenaufruf ausgelöst wird, wenn der Server ein neues Dokument sendet. SPAs brechen diese Annahme, weil die Navigation zwischen Ansichten keinen frischen Seitenaufruf auslöst, sondern alles von JavaScript innerhalb einer durchgehenden Sitzung abgewickelt wird.
Das praktische Ergebnis: Ohne zusätzliche Konfiguration protokolliert Ihr Analytics-Tool womöglich nur einen Seitenaufruf pro Besuch, egal wie viele „Seiten“ der Besucher tatsächlich angesehen hat. Das unterschätzt die Interaktion massiv und macht es unmöglich zu erkennen, welche Ansichten tatsächlich funktionieren.
Die Lösung ist, bei jeder URL-Änderung durch Ihren Router manuell ein virtuelles Seitenaufruf-Ereignis auszulösen, gekoppelt an das weiter oben besprochene Update der History API. Moderne Analytics-Plattformen unterstützen das über Einstellungen zur erweiterten Messung und über die Konfiguration des Tag-Managements, aber es muss gezielt eingerichtet werden und geschieht nicht standardmäßig. Erst wenn Routing und Tracking beide korrekt auslösen, werden Rank-Tracking und Traffic-Reporting über Google Analytics, Search Console und KI-Referral-Quellen aussagekräftig, und zwar nur, wenn die zugrunde liegenden Seitenaufruf-Daten überhaupt stimmen.
Ein Einstiegspunkt je Framework
Die drei dominierenden SPA-Frameworks haben alle einen ausgereiften Weg, diese SEO-Probleme zu lösen, aber der Ausgangspunkt unterscheidet sich.
| Framework | Rendering-Option für SEO | Wofür es bekannt ist |
|---|---|---|
| React (über Next.js) | Integriertes SSR, statische Generierung und inkrementelle Regenerierung | Größtes Ökosystem, häufigste Wahl für SEO-orientierte SPA-Neuentwicklungen |
| Vue (über Nuxt) | Server-seitiges und Edge-Rendering im Framework integriert | Schlank, beliebt bei Teams, die SSR ohne den Overhead von React wollen |
| Angular (über Angular Universal) | Offizielles SSR-Add-on für bestehende Angular-Apps | Verbreitet in Enterprise-Apps, die SEO nachträglich in eine bestehende Codebasis einbauen |
| Svelte (über SvelteKit) | SSR und statische Generierung standardmäßig | Kleinere Bundle-Größen, wachsende Verbreitung bei performancekritischen Websites |

Das Muster ist bei allen identisch: Wählen Sie die offizielle Rendering-Schicht des Frameworks, statt einen separaten Prerendering-Dienst aufzusetzen, wenn Sie die Wahl haben. Das ist langfristig weniger anfällig, auch wenn es anfangs mehr Arbeit macht.
Ihre SEO-Audit-Checkliste für SPAs

Bevor Sie annehmen, dass Ihre SPA ein SEO-Problem hat, oder eines für behoben erklären, gehen Sie diese Liste durch. Dieser SEO-Leitfaden für Single-Page-Apps lohnt sich als Lesezeichen, solange Sie die einzelnen Punkte abarbeiten, denn die meisten Teams beheben sie in Etappen und nicht auf einmal.
- Rufen Sie Ihre Seite mit deaktiviertem JavaScript auf. Verschwindet der Inhalt, verschwindet auch Googles erste Sicht darauf.
- Prüfen Sie das Tool „URL-Prüfung“ der Google Search Console für eine Handvoll wichtiger Seiten. Vergleichen Sie das gerenderte HTML mit dem, was Sie erwarten.
- Stellen Sie sicher, dass jede wichtige Ansicht eine eindeutige, crawlbare URL hat, kein Hash-Fragment und keine reine Query-String-Kennung.
- Prüfen Sie, dass sich Titel und Meta-Beschreibungen pro Route ändern, nicht nur auf der Startseite.
- Prüfen Sie, dass Ihre XML-Sitemap jede indexierbare Route auflistet und korrekt in der
robots.txtreferenziert ist. - Testen Sie Ihre strukturierten Daten pro Template anhand von Googles Richtlinien zu Rich Results, nicht nur auf einer Beispielseite.
- Stellen Sie sicher, dass Analytics bei jedem Routenwechsel einen virtuellen Seitenaufruf auslöst, nicht nur beim ersten Laden.
- Suchen Sie im Indexierungsbericht der Search Console nach Soft 404s. Meist sind leere Zustände mit Status 200 die Ursache.
- Messen Sie die Core Web Vitals. web.dev legt die aktuellen Schwellenwerte bei etwa 2,5 Sekunden für Largest Contentful Paint, 200 Millisekunden für Interaction to Next Paint und 0,1 für Cumulative Layout Shift fest. SPAs schneiden hier meist gut ab, sobald das Rendering behoben ist, weil die zugrunde liegende Interaktivität ohnehin schnell ist.
Diese Checkliste manuell über eine große Website abzuarbeiten ist langsam und fehleranfällig, etwa wenn ein einziges Template Hunderte Seiten gleichzeitig betrifft. Ein Beispiel für einen SEO-Bericht zeigt, wie ein vollständiger automatisierter Durchlauf über Crawlbarkeit, Metadaten und Schema aussieht, ganz ohne manuelle Tabellenarbeit.
Häufig gestellte Fragen
Kann eine Single-Page-App bei Google überhaupt ranken?
Ja. Google kann JavaScript-gerenderte Inhalte crawlen und indexieren, setzt aber voraus, dass der Inhalt tatsächlich im gerenderten HTML erscheint, dass jede Ansicht eine eigene URL hat und dass die Metadaten pro Ansicht aktualisiert werden. Eine unveränderte, clientseitig gerenderte SPA ohne Server-Side Rendering ist die Variante, die Mühe hat zu ranken.
Ist React schlecht für SEO?
Nein, React selbst ist nicht das Problem. Eine einfache, clientseitig gerenderte React-App ohne Server-Side Rendering lässt sich schwerer gut indexieren. Mit Next.js oder einem anderen Framework, das Server-Side Rendering oder statische Generierung unterstützt, lösen Sie die meisten SEO-Probleme, die man mit React verbindet.
Was ist der Unterschied zwischen SSR und Prerendering für SEO?
Server-Side Rendering erzeugt bei jeder Anfrage frisches HTML, was personalisierte oder häufig wechselnde Inhalte gut abdeckt. Prerendering rendert die Seite einmal vorab und liefert eine gecachte statische Version aus. Das ist schneller umzusetzen, eignet sich aber weniger für Inhalte, die sich pro Besucher oder pro Anfrage ändern.
Warum zeigt meine SPA im Google-Cache oder im Tool „URL-Prüfung“ eine leere Seite?
Meist bedeutet das, dass Googlebot die Seite entweder noch nicht gerendert hat oder dass das JavaScript beim Rendern nicht korrekt ausgeführt wurde, oft weil benötigte Scripts oder API-Aufrufe blockiert wurden, in ein Timeout liefen oder von etwas abhingen, das in Googles Rendering-Umgebung nicht verfügbar ist. Prüfen Sie Ihre robots.txt auf blockierte Ressourcen und testen Sie die Live-Seite mit der URL-Prüfung in der Search Console.
Brauchen Single-Page-Apps für jede Seite eine eigene URL, oder reicht eine URL?
Es braucht getrennte URLs. Eine Suchmaschine kann nur eine einzelne URL indexieren und ranken. Lebt Ihre gesamte SPA unter einer Adresse, hat Google nur einen Eintrag, mit dem es arbeiten kann, egal wie viel Inhalt hinter der clientseitigen Navigation liegt. Nutzen Sie die History API, um jeder sinnvollen Ansicht einen eigenen, echten, crawlbaren Pfad zu geben.
Lassen Sie das SEO Ihrer SPA in der richtigen Reihenfolge reparieren

SEO für Single-Page-Apps zu reparieren ist meist nicht eine einzelne Änderung, sondern Rendering, Routing, Metadaten und Schema, in dieser Reihenfolge angegangen, bei den Templates, die die meisten Seiten betreffen. Beginnen Sie mit der Ansicht, die den meisten Traffic bewegen würde, wenn sie ab morgen rankte, und arbeiten Sie sich von dort nach außen vor. Wenn Sie eine klare, priorisierte Liste wollen, was Sie auf Ihrer eigenen Website zuerst beheben sollten, sprechen Sie mit dem Team und erhalten Sie einen Beispiel-SEO-Bericht, der aus Ihren tatsächlichen Seiten erstellt wird.
Ressourcen / Referenzen
Weiterführende Lektüre: JavaScript SEO: Why Your Pages Go Invisible to Google.
Quellen
- What is a Single Page Application? SPA vs MPA 2025
- How single page applications work and when to use them
- How do you optimize a large SPA (single page application) ...
- When to consider Single Page Applications?
Haftungsausschluss: Dieser Artikel enthält allgemeine Gesundheitsinformationen und ersetzt keine individuelle ärztliche Beratung. Er kann Ihre Vorgeschichte, Ihre Medikation oder Untersuchungsbefunde nicht berücksichtigen. Wenden Sie sich bei Fragen zu Ihren eigenen Beschwerden an eine qualifizierte Fachperson; bei starken oder sich verschlimmernden Beschwerden suchen Sie dringend ärztliche Hilfe auf.
Über den Autor
SearchBlueprint hat diesen Artikel mit der Content-Pipeline recherchiert, geschrieben und bewertet, die unsere Kunden auf ihren eigenen Websites einsetzen. Die Bewertung in der Autorenzeile ist die, die unsere Content-Engine dieser Seite vor der Veröffentlichung gegeben hat. Nichts davon wird von Hand geprüft, und genau das ist der Punkt: Es ist das Ergebnis des Produkts, veröffentlicht dort, wo jeder es nachprüfen kann.