Next.js-SEO
So machen Sie eine Next.js-Website crawlbar, indexierbar und rankbar – die beiden Router, Rendering-Modi (SSG/SSR/ISR/Server Components), die App-Router-Metadata-API, sitemap.ts, robots.ts, next/image, next/link und die Fehler, die sie stillschweigend zerstören.
Sprachen
Next.js löst die schwierigsten JavaScript-SEO-Probleme standardmäßig – wenn Sie es richtig verwenden. Die Server Components und SSG/ISR des App-Routers platzieren Inhalte im HTML, sodass es keine Render-Warteschlangenverzögerung gibt; die native Metadata-API löst Titel, Kanonische URLs und Open Graph serverseitig auf; sitemap.ts und robots.ts sind Dateikonventionen. Das Framework bietet die Infrastruktur, schreibt aber keine Ihrer Tags für Sie. Die Fehler sind vorhersehbar: fehlende metadataBase, keine Priorität für das LCP-Bild, aus einem Client Component exportierte Metadaten (tun stillschweigend nichts) und 404-Ansichten, die 200 zurückgeben.
TL;DR — Next.js ist eines der besten Frameworks für SEO wenn Sie es richtig einsetzen. Erstellen Sie Ihre Seiten auf dem Server oder zur Build-Zeit (nicht vollständig im Browser), setzen Sie auf jeder Seite einen eindeutigen Titel, eine Beschreibung und eine kanonische URL, und verwenden Sie die integrierten
next/image- undnext/link-Komponenten. Next.js bietet Ihnen alle Werkzeuge – aber es schreibt Ihre SEO-Tags nicht für Sie.
Was Next.js-SEO ist
Next.js ist ein beliebtes Framework, das auf React basiert und zum Erstellen von Websites und Web-Apps verwendet wird. Da es unter der Haube React ist, kann ein großer Teil der Seite mit JavaScript erstellt werden – und genau hier kommen SEO-Fragen ins Spiel. Next.js-SEO ist einfach die Praxis, sicherzustellen, dass Suchmaschinen eine Next.js-Website crawlen, rendern und indexieren können, und die integrierten Funktionen des Frameworks zu nutzen, um dies gut zu machen.
Die gute Nachricht: Next.js kann Ihre Seiten im Voraus oder auf dem Server erstellen, sodass Suchmaschinen das fertige HTML sofort erhalten. Das vermeidet das größte Risiko bei JavaScript-Websites – Inhalte, die erst nach der Ausführung von Skripten sichtbar werden. (Für den größeren Zusammenhang siehe JavaScript-SEO.)
Die eine große Entscheidung: wo die Seite erstellt wird
Wenn jemand – oder Googlebot – eine Seite anfordert, woher kommt das fertige HTML? Next.js bietet Ihnen mehrere Optionen:
- Zur Build-Zeit (Statisch / SSG) – die Seite wird im Voraus in eine einfache HTML-Datei erstellt. Schnell, und Suchmaschinen erhalten alles sofort.
- Auf dem Server, pro Anfrage (SSR) – der Server erstellt die vollständige Seite jedes Mal neu. Ebenfalls suchmaschinenfreundlich und immer aktuell.
- Eine Mischung (ISR) – statische Seiten, die sich zeitgesteuert aktualisieren. Eine gute Standardeinstellung für die meisten Inhalte.
- Im Browser (Client-seitig / CSR) – der Server sendet eine fast leere Hülle und JavaScript füllt sie aus. Das ist die riskante Variante für SEO; vermeiden Sie sie für Ihre Hauptinhalte.
Der moderne App Router verwendet standardmäßig Server-Komponenten, was bedeutet, dass Ihre Inhalte automatisch im HTML landen – ein großartiger Ausgangspunkt für SEO.
Die einfache Checkliste
- Geben Sie jeder Seite einen eindeutigen Titel und eine Beschreibung.
- Setzen Sie auf jeder Seite eine kanonische URL.
- Verwenden Sie die
next/image-Komponente für Bilder (sie verhindert, dass die Seite beim Laden von Bildern springt, und macht sie kleiner). - Verwenden Sie
next/linkfür interne Links (es erstellt echte Links, denen Google folgen kann). - Platzieren Sie Ihre Hauptinhalte nicht hinter client-seitigem Rendering.
- Erstellen Sie eine Sitemap und eine robots.txt (Next.js bietet einfache dateibasierte Möglichkeiten für beides). Evidence for this claim Next.js App Router supports special metadata files for sitemap and robots output. Scope: Next.js App Router file conventions. Confidence: high · Verified: Next.js: Metadata files
Was die Leute falsch verstehen
„Next.js übernimmt SEO automatisch.“ Das tut es nicht – nicht die Teile, die wichtig sind. Next.js bietet Ihnen die Mechanismen (ein Metadatensystem, Sitemap- und Robots-Konventionen, eine Bild- komponente), aber Sie müssen Ihre Titel, Beschreibungen und Kanonischen URLs selbst schreiben. Evidence for this claim Next.js provides metadata APIs, but developers supply page-specific metadata values. Scope: Next.js App Router metadata and generateMetadata APIs. Confidence: high · Verified: Next.js: Metadata and OG images Jede Seite braucht ihre eigenen. Eine Website, bei der alle Seiten denselben Titel teilen oder keine kanonische URL haben, ist der häufigste Grund, warum eine Next.js-Website unterperformt.
Möchten Sie die ausführlichere Version – die beiden Router, die Metadata-API, metadataBase, den LCP-
Bild-Trick und die Fehler, die das Indexieren leise stören? Wechseln Sie zum Erweitert-Tab.
TL;DR — Next.js löst die schwierigsten JavaScript-SEO-Probleme standardmäßig wenn Sie es richtig einsetzen. Der App Router verwendet standardmäßig Server-Komponenten und unterstützt SSG/SSR/ISR – alle liefern gerendertes HTML, sodass es keine Render-Warteschlangenverzögerung gibt. Setzen Sie Metadaten mit der nativen Metadata-API (
metadata/generateMetadata) und denken Sie anmetadataBase, sonst werden Ihre Kanonischen URLs und OG-Bilder relativ. Verwenden Sieapp/sitemap.tsundapp/robots.ts, erstellen Sie dynamische Routen mitgenerateStaticParamsvor, setzen Siepriorityauf dem LCP-Bild und halten Sie Links als echtenext/link-Anker. Der Pages Router ist ebenfalls SEO-fähig übernext/head. Die Fehler sind vorhersehbar – und die meisten davon sind nicht Next.js’ Schuld, sondern Ihre.
Wo Next.js passt
Next.js ist ein React-Framework, daher gilt alles in JavaScript-SEO. Was es verdient, einen eigenen Leitfaden zu haben, ist, dass Next.js erstklassige Antworten auf die meisten JS-SEO-Probleme bietet: Server-Rendering, statische Generierung, ein Metadatensystem und Sitemap/Robots-Konventionen. Der schwierige Teil ist nicht, ob Google es lesen kann – Google rendert JavaScript seit Jahren –, sondern die richtige Rendering-Methode zu wählen und die SEO-Grundlagen nicht unverbunden zu lassen. Dies ist ein Spezialfall von Headless-CMS-SEO: Das CMS spielt kaum eine Rolle, die Rendering-Entscheidungen des Frontends entscheiden alles.
Eine Sichtweise, die man im Kopf behalten sollte: „Dies ist eine Next.js-Website“ sagt nicht aus, wie eine einzelne URL ausgeliefert wird. Rendering-Modus, Caching und Server-/Client-Komponenten-Grenzen werden pro Route (manchmal pro Segment) festgelegt – ein Projekt kann eine statische Marketing-Seite, eine SSR-Produktseite und ein Client-Komponenten-Dashboard mischen. Extrapolieren Sie nicht das Verhalten einer Route auf „die gesamte App“; testen Sie die spezifische URL.
Zwei Router, zwei Mechaniken
Next.js hat zwei Router, und sie behandeln SEO unterschiedlich:
- Pages Router (das ältere Modell) – Datenabruf über
getStaticProps/getServerSideProps; Metadaten über<Head>vonnext/head(oder dasnext-seo-Paket); keine Server-Komponenten. - App Router (v13+, der aktuelle und empfohlene Ansatz) – React-Server-Komponenten
standardmäßig; die native Metadata-API (
metadata-Export /generateMetadata); Dateikonventionen fürapp/sitemap.tsundapp/robots.ts;generateStaticParamsfür dynamische Routen. Evidence for this claim The App Router uses Server Components and supports generateStaticParams plus metadata file conventions. Scope: Current Next.js App Router behavior; route rendering can become dynamic based on APIs used. Confidence: high · Verified: Next.js: Server and Client Components Next.js: generateStaticParams
Beide können gut ranken. Der App Router bietet ein saubereres, integriertes Metadatensystem (kein next/head-Gefummel) und Server-Komponenten von Haus aus, weshalb ich bei einem neuen Build darauf zurückgreifen würde. Aber „App Router oder du kannst kein SEO machen“ ist ein Mythos – viele Pages-Router-Websites ranken gut.
Rendering-Modi und was sie für SEO bedeuten
Wie Google mit JavaScript umgeht, ist eine dreiphasige Pipeline – Crawlen, dann eine verzögerte Render-Welle, dann Indexierung. „Alle Seiten mit einem HTTP-Statuscode 200 werden an die Rendering-Warteschlange gesendet.“ Das gesamte Spiel in Next.js besteht darin, einen Modus zu wählen, der Ihre Inhalte vor dieser Render-Welle in das HTML setzt, sodass nichts zu warten bleibt. Evidence for this claim Google crawls, renders, and indexes JavaScript pages, and successful pages can enter the rendering queue. Scope: Google Search processing, not a promise that a URL will be indexed. Confidence: high · Verified: Google: JavaScript SEO basics
- Static Site Generation (SSG) — Seiten, die zur Build-Zeit vorgerendert werden. HTML ist
sofort verfügbar, ohne Render-Warteschlangen-Risiko. Am besten für Inhalte geeignet, die sich nicht
jede Minute ändern.
generateStaticParams()(App Router) /getStaticPaths()(Pages Router) entscheidet, welche dynamischen Routen vorgebaut werden. - Incremental Static Regeneration (ISR) — statische Seiten, die nach einem festgelegten
Intervall neu validiert werden (
export const revalidate = 3600). Crawler erhalten statisches HTML mit niedrigem TTFB und der Inhalt bleibt aktuell. Eine starke Standardlösung — mit einer Falle: Nach Ablauf des Fensters erhält die nächste Anfrage (möglicherweise Googlebot) weiterhin die veraltete Seite; die aktuelle Version wird erst bei der darauffolgenden Anfrage ausgeliefert. Für wirklich volatile Daten (Preise, Lagerbestände) ist SSR sicherer. - Server-Side Rendering (SSR) — HTML wird pro Anfrage gerendert. Crawler erhalten vollständig
gerendertes HTML sofort; der Nachteil ist die Serverlatenz, daher sollten Sie TTFB und LCP im Auge behalten.
export const dynamic = 'force-dynamic'oder die Verwendung von anfragezeitabhängigen APIs (Cookies, Header) versetzt eine Route in den SSR-Modus. - React Server Components (App Router Standard) — rendern auf dem Server und senden HTML;
für die Komponente selbst wird kein JavaScript ausgeliefert. Der Inhalt ist in der ersten Antwort enthalten, ohne
Hydration-Lücke. Dies ist die beste Standardlösung für SEO. Interaktivität lebt in Client Components,
die mit
'use client'markiert sind. - Client-Side Rendering (CSR) — wird vollständig im Browser gerendert. Googlebot kann es
nach der Render-Welle indexieren (Median etwa 10 Sekunden, aber das 90. Perzentil kann sich auf
Stunden ausdehnen), und andere Crawler — Bingbot, KI-Bots, Social-Preview-Bots — erhalten möglicherweise eine leere
Seite. Im App Router ist CSR opt-in (
'use client'); im Pages Router sollten Sie vermeiden, primäre Inhalte inuseEffectabzurufen. Verwenden Sie es nicht für Inhalte, die Sie ranken möchten.
Eine Erinnerung, zu der ich immer wieder zurückkehre: „Googlebot kann es rendern“ ist nicht dasselbe wie „Sie sollten Googlebot dazu bringen, es zu rendern.“ Rendering ist teuer, verzögert und nicht bei allen Crawlern universell verfügbar.
Die Metadata-API (App Router)
Die Metadata-API ist nur für Server Components — Metadaten werden auf dem Server aufgelöst, bevor
die Seite gerendert wird, sodass sie im initialen HTML landen. Exportieren Sie metadata aus layout.js oder
page.js:
export const metadata: Metadata = {
title: 'My Page',
description: 'Page description',
}Oder, wenn die Tags von abgerufenen Daten abhängen, verwenden Sie generateMetadata():
export async function generateMetadata({ params }) {
const post = await getPost(params.slug)
return { title: post.title, description: post.description }
}Die Felder, die für SEO relevant sind:
title— unterstützt einen String, eine Vorlage ('%s | Brand'), einen Standardwert und eine absolute Überschreibung. Setzen Sie die Vorlage einmal im Root-Layout, und die Seitentitel übernehmen sie.description,alternates.canonical(die korrekte Methode, um im App Router ein Canonical zu setzen),openGraph(Bilder müssen auf absolute URLs auflösen),twitter(auch von LinkedIn- und Slack-Vorschauen verwendet) undrobots(index/follow plus googleBot-spezifische Direktiven wie max-snippet, max-image-preview).metadataBase— erforderlich, damit Canonical- und OG-Bild-URLs korrekt aufgelöst werden. Das Vergessen ist der häufigste Next.js-Metadaten-Bug: Relative URLs gelangen in Ihre Canonical- und Open-Graph-Tags, brechen Social-Previews und verwässern Canonical-Signale.
Ein Beispiel für eine Titelvorlage:
// app/layout.tsx
export const metadata: Metadata = {
metadataBase: new URL('https://example.com'),
title: { template: '%s | Brand Name', default: 'Brand Name' },
}
// app/blog/page.tsx
export const metadata: Metadata = { title: 'My Blog Post' }
// Output: <title>My Blog Post | Brand Name</title>Zwei Stolperfallen. Erstens werden Metadaten flach vom Layout zur Seite zusammengeführt — ein verschachteltes
Objekt wie openGraph, das in einem Kindsegment definiert ist, ersetzt das des übergeordneten Elements vollständig, sodass
ein Seiten-Level-openGraph: { title: 'Home' } stillschweigend alle openGraph.images verwirft, die im
Layout gesetzt wurden. Zweitens — und das beißt die Leute — metadata funktioniert nur in Server
Components. Wenn Sie es aus einer 'use client'-Datei exportieren, tut es stillschweigend nichts.
Streaming-Metadaten. Für dynamisch gerenderte Seiten kann generateMetadata die
Metadaten nach dem initialen HTML streamen. Googlebot führt JavaScript aus und prüft das
vollständige DOM, daher funktionieren gestreamte Metadaten für Google. Aber Next.js erkennt
„HTML-beschränkte Bots“ – Bingbot, Twitterbot, Slackbot, facebookexternalhit – und liefert
ihnen blockierende Metadaten im <head> aus. Laut der Next.js-Dokumentation: „streaming metadata is disabled
for bots and crawlers that expect metadata to be in the <head> tag.“ (Übersetzung) „Streaming-Metadaten sind für Bots und Crawler deaktiviert, die Metadaten im <head>-Tag erwarten.“ Dies geschieht automatisch;
keine Konfiguration erforderlich. Es ist ein Detail, das fast kein konkurrierender Leitfaden abdeckt, und es ist der Grund,
warum Streaming-Metadaten kein Risiko für Bots darstellen, die nicht darauf warten können. Vorgerenderte Seiten
sind ein völlig anderer Fall – dort werden Metadaten zur Build-Zeit aufgelöst, es gibt also keinen
Stream, um den man sich kümmern müsste. Dieses Verhalten ist versionsspezifisch (aktuell ab Next.js 16.2.10);
überprüfen Sie die generateMetadata-Dokumentation erneut, wenn Sie ein Upgrade durchführen. Und da die Auslieferungspfade je nach
Einstiegspunkt unterschiedlich sind, verifizieren Sie Metadaten auf zwei Arten, nicht nur auf eine: eine direkte/Produktionsanfrage (curl -I
oder Quelltext anzeigen) und eine clientseitige Navigation zu derselben Route – der Head kann sich
zwischen beiden unterschiedlich aktualisieren.
Metadaten mit next/head (Pages Router)
Beim Pages Router befinden sich Metadaten in <Head> von next/head:
import Head from 'next/head'
export default function Page() {
return (
<>
<Head>
<title>My Page | Brand</title>
<meta name="description" content="Description" />
<link rel="canonical" href="https://example.com/my-page" />
</Head>
{/* page content */}
</>
)
}Legen Sie Titel und Beschreibung pro Seite fest (nicht nur in _app.js) und setzen Sie einen kanonischen Link auf
jede Seite, einschließlich paginierter Varianten. Das Paket next-seo standardisiert dies mit einer
<NextSeo>-Komponente und Structured-Data-Hilfsfunktionen. Die Migration zum App Router bedeutet
hauptsächlich, next/head und next-seo gegen den nativen metadata-Export einzutauschen.
Benötigen Sie das Paket next-seo? Es ist ein Drittanbieter-Plugin (nicht Teil von Next.js
selbst) – aktiv gepflegt, zum Zeitpunkt dieses Schreibens in Version 7.2.0, nicht archiviert. Seine eigene Dokumentation
ist explizit darüber, wo es passt: Für Standard-Meta-Tags im App Router empfiehlt die README des Pakets,
die eingebaute generateMetadata/metadata-Exportfunktion von Next.js anstelle von
<NextSeo> zu verwenden; beim Pages Router ist <NextSeo> weiterhin eine sinnvolle Komfortschicht
über next/head. Der einzige Anwendungsfall im App Router, den das Paket weiterhin abdeckt, sind seine
JSON-LD-Hilfskomponenten (ArticleJsonLd, FAQPageJsonLd usw. mit useAppDir), die einige
Teams gegenüber handgeschriebenem <script type="application/ld+json"> bevorzugen. Fazit: Bei einem neuen
App-Router-Build greifen Sie zuerst zur nativen Metadata-API – das Paket ist optional, keine
Notwendigkeit, und seine eigenen Maintainer sagen das auch.
Sitemaps
Im App Router ist app/sitemap.ts eine Dateikonvention, die /sitemap.xml ausgibt:
import type { MetadataRoute } from 'next'
export default function sitemap(): MetadataRoute.Sitemap {
return [
{ url: 'https://acme.com', lastModified: new Date(), priority: 1 },
{ url: 'https://acme.com/blog', lastModified: new Date(), priority: 0.8 },
]
}Für große Websites teilt generateSitemaps() in mehrere Dateien auf (Googles Limit liegt bei
50 000 URLs pro Sitemap), die jeweils unter /.../sitemap/[id].xml bereitgestellt werden. Die Sitemap-Ausgabe unterstützt auch
Bild-Sitemaps, Video-Sitemaps und lokalisierte alternates.languages. Beim
Pages Router verwenden Sie next-sitemap oder generieren pages/sitemap.xml.js mit
getServerSideProps.
robots.txt
app/robots.ts generiert Ihre Robots-Datei programmatisch:
export default function robots(): MetadataRoute.Robots {
return {
rules: [{ userAgent: '*', allow: '/', disallow: '/private/' }],
sitemap: 'https://acme.com/sitemap.xml',
}
}Regeln pro User-Agent und mehrere Sitemaps werden unterstützt. Der Pages Router verwendet eine statische
public/robots.txt. Die Regel, die Sie auf keinem Router falsch machen dürfen: blockieren Sie niemals Ihr
JavaScript oder CSS – Google rendert nicht aus blockierten Dateien, und bei einem JS-Framework kann das
die Seite vollständig leeren.
next/image und Core Web Vitals
next/image ist einer der stärksten Gründe, das Framework für SEO zu verwenden. Es lädt Bilder unterhalb des Falzes
lazy, erfordert width/height (oder fill), sodass es Platz reserviert und
Layout-Shift / CLS verhindert, liefert WebP/AVIF automatisch aus und erzeugt ein korrektes
srcset aus der sizes-Prop. Die mit Abstand wichtigste CWV-Optimierung ist die
priority-Prop auf Ihrem Hero-/Above-the-Fold-Bild, die es für ein schnelleres LCP vorlädt:
<Image src="/hero.jpg" width={1200} height={630} priority alt="Hero" />Das Vergessen von priority auf dem LCP-Bild ist der häufigste Next.js-CWV-Fehler – und CWV-Probleme sind auf echten Next.js-Websites weit verbreitet (siehe den Stats-Tab für die Salt-Agency-Daten). alt ist erforderlich: leer für dekorative Bilder, beschreibend für Inhaltsbilder.
next/link und interne Verlinkung
next/link rendert standardmäßige <a href>-Anker im HTML, sodass Google sie normal verfolgt, und es fügt clientseitige Navigation sowie Hintergrund-Prefetching von Links im Viewport in der Produktion hinzu. Die SEO-Regel ist einfach: Verwenden Sie next/link für interne Links und ersetzen Sie niemals einen onClick-Handler oder eine JavaScript-Navigation, die keinen echten Anker erzeugt – solche Links sind nicht crawlbar. Verwenden Sie prefetch={false} bei Links mit geringem Wert, um Bandbreite zu sparen, falls nötig.
Dynamische Routen und generateStaticParams
generateStaticParams() teilt Next.js mit, welche dynamischen Routen zur Build-Zeit vorgerendert werden sollen:
// app/blog/[slug]/page.tsx
export async function generateStaticParams() {
const posts = await getPosts()
return posts.map((post) => ({ slug: post.slug }))
}So erstellte Seiten sind vollständig statisches HTML – am besten für SEO. Ohne diese Funktion werden dynamische Routen standardmäßig bei Bedarf (SSR) gerendert, was in Ordnung ist, aber Serverlatenz wieder einführt. Kombinieren Sie es mit revalidate (ISR) für Inhalte, die regelmäßig aktualisiert werden. Stellen Sie sicher, dass alle wichtigen dynamischen URLs in generateStaticParams enthalten sind, damit nichts auf die Render-Warteschlange warten muss.
Strukturierte Daten (JSON-LD)
Die Metadata-API hat kein Feld für strukturierte Daten – Sie injizieren JSON-LD als <script> in einer Server-Komponente, wodurch es im servergerenderten HTML ohne Client-Bundle-Kosten bleibt:
const jsonLd = { '@context': 'https://schema.org', '@type': 'Article', /* … */ }
return <script type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }} />Article/BlogPosting, BreadcrumbList, Product und FAQPage sind die üblichen Typen. Validieren Sie nach jeder Rendering-Änderung mit dem Rich-Results-Test.
Häufige Next.js-SEO-Fehler
Abgeleitet aus echten Audits und den obigen Mustern:
- Fehlende oder relative Kanonische – oft durch ein vergessenes
metadataBase, das auch OG-Bild-URLs bricht. - Kein
priorityauf dem LCP-Bild – der größte CWV-Fehler. - 404-Ansichten, die
200zurückgeben – verwenden Sie die eingebautenotFound(), um einen echten Status zurückzugeben; Soft-404s sind auf Next.js-Websites weit verbreitet. metadataaus einer Client-Komponente exportiert – tut stillschweigend nichts; es ist nur für Server-Komponenten.- CSR für primäre Inhalte – das Abrufen kritischer Inhalte in
useEffectbedeutet, dass Nicht-Google-Crawler leere Seiten erhalten. - Hash-(
#) Routing anstelle der History-API – diese Ansichten sind nicht separat crawlbar. generateStaticParamsnicht exportiert – dynamische Routen werden bei Bedarf gerendert, anstatt vorgebaut zu werden.openGraphdurch Layout-Vererbung überschrieben – Kindsegmente ersetzen, nicht zusammenführen.- Blockieren von JS/CSS in robots.txt oder über eine Content Security Policy, die das Headless-Chrome von Googlebot daran hindert, Skripte zu laden – testen Sie mit URL Inspection.
Bereitstellungshinweise
Next.js wird von Vercel entwickelt; das Hosting dort bietet eine enge Integration (Edge-CDN für statische und ISR-Seiten, gute TTFB), ist aber nicht erforderlich. Definieren Sie permanente Weiterleitungen in redirects() in next.config.js (gibt 308 oder 301 mit permanent: true zurück) für zuverlässige Signale an Crawler, setzen Sie Sicherheits- und Cache-Header über headers() und verwenden Sie X-Robots-Tag-Antwortheader für pfadbasierte noindex-Regeln, wenn die robots-Metadaten pro Seite umständlich sind.
Was wo zu prüfen ist. Cache-Status, Statuscodes, Weiterleitungen und gestreamte Metadaten erscheinen nicht alle im selben Test – eine Route kann in einer Prüfung gut aussehen und in einer anderen dennoch defekt sein:
| Prüfung | Wo nachsehen | Warum sie von dem abweichen kann, was Sie gerendert sehen |
|---|---|---|
| Cache-/Revalidierungsalter | Antwort-Header bei einer direkten Anfrage (curl -I) | ISR kann direkt nach Ablauf des Fensters eine veraltete Seite ausliefern |
| Direkter HTTP-Status | curl -I auf der Produktions-URL, nicht auf der gerenderten Oberfläche | Eine „nicht gefunden“-Ansicht ohne notFound() gibt weiterhin 200 zurück |
| Redirect-Verhalten | Der tatsächliche Kontext, der ihn auslöst – redirect() in einer Server Action, einem Route Handler, im Vergleich zu einem clientseitigen onClick | Statuscode und Antwortpfad unterscheiden sich je nach Aufrufkontext, nicht nur nach Ziel |
| Gestreamte Metadaten | Direkte Anfrage und clientseitige Navigation zur selben Route | Normale Clients können gestreamte Metadaten erhalten; auf HTML beschränkte Bots erhalten blockierende Metadaten; die beiden Pfade sind nicht identisch |
| Clientseitige Übergänge | In der App navigieren und dann das <head> erneut prüfen | Eine Route, die beim ersten Laden korrekt ist, kann nach einem Client-Übergang abweichen |
Nichts davon ist durch das Framework garantiert – Next.js bietet Ihnen die Mechanismen
(redirects(), notFound(), Revalidierung, Streaming), aber Cache-Schlüssel, Invalidierung,
Vorschauzustand und Deployment-Konfiguration liegen weiterhin in Ihrer Verantwortung, sie
richtig einzustellen und in der Produktion zu testen, nicht nur lokal.
Noch ein letzter Hinweis zum dynamischen Rendering – vorgefertigtes HTML an Bots und JavaScript an Nutzer auszuliefern. Google hat dies als Empfehlung verworfen: “dynamic rendering was a workaround and not a long-term solution.” (Übersetzung) „Dynamisches Rendering war eine Notlösung und keine langfristige Lösung.“ Sie brauchen es auf Next.js ohnehin nicht – SSR, SSG, ISR und Server Components platzieren Inhalte nativ im HTML. Erwähnen Sie es, um es in einem Audit zu erkennen; bauen Sie nicht darauf auf.
Der Idealfall: App Router + Server Components + ISR + die Metadata API (mit
metadataBase) + next/image mit priority. Wenn Sie das richtig umsetzen, ist der Großteil
der Next.js-SEO abgedeckt.
KI-Zusammenfassung
Eine komprimierte Darstellung der erweiterten Version:
- Next.js löst die meisten JS-SEO-Probleme standardmäßig – wenn Sie den richtigen Rendering-Modus wählen und die Grundlagen einrichten. Das Framework liefert die Infrastruktur; es schreibt keine Ihrer Tags.
- Zwei Router: App Router (v13+, empfohlen) verwendet Server Components und die native Metadata-API; Pages Router verwendet
next/head/next-seo. Beide können ranken. - Rendering-Modi: SSG und Server Components sind die beste Standardwahl (Inhalt im HTML, keine Render-Warteschlangen-Verzögerung). ISR ist ein starker Mittelweg, hat aber eine Falle mit veraltetem Inhalt beim ersten Request nach der Revalidierung. SSR für volatile Daten. CSR ist riskant – Nicht-Google-Crawler erhalten möglicherweise eine leere Seite.
- Metadata-API (App Router):
metadata-Export odergenerateMetadata(), nur Server Component.metadataBaseist erforderlich, sonst werden Canonicals und OG-Bilder relativ.openGraphin einem Child-Segment ersetzt das des Parents; Metadaten in einer'use client'-Datei bewirken nichts. - Streaming-Metadaten funktionieren für Google, aber Next.js liefert blockierende Metadaten an HTML-beschränkte Bots (Bingbot, Twitterbot, Slackbot, facebookexternalhit) automatisch aus.
- Dateikonventionen:
app/sitemap.ts(mitgenerateSitemaps()für 50 000+ URLs) undapp/robots.ts. Blockieren Sie niemals.js/.css. next/imageverhindert CLS, liefert WebP/AVIF; setzen Siepriorityauf das LCP-Bild – der größte CWV-Gewinn.next/linkrendert echte crawlbare<a href>-Anker und prefetcht.generateStaticParamsbaut dynamische Routen vor; ohne sie werden sie on-demand gerendert.- JSON-LD wird als
<script>in einer Server Component injiziert (kein Metadata-API-Feld). - Das
next-seo-Paket ist optional, nicht erforderlich. Es ist aktiv gepflegte Drittanbieter-Software (v7.2,0, nicht archiviert), und seine eigene Dokumentation empfiehlt den eingebautengenerateMetadata/metadata-Export für App-Router-Meta-Tags –<NextSeo>bleibt hauptsächlich auf dem Pages Router nützlich, oder für seine JSON-LD-Hilfskomponenten. - Der Rendering-Modus wird pro Route festgelegt, nicht pro Projekt – gehen Sie nicht vom Verhalten einer URL auf eine andere; testen Sie die spezifische Route (direkter Request und Client-Navigation).
- Häufigste Fehler: fehlendes
metadataBase, kein LCP-priority, 404s, die200zurückgeben (verwenden SienotFound()),metadatain einer Client Component, CSR-Primärinhalt. - Dynamisches Rendering ist veraltet – Sie brauchen es nicht; SSR/SSG/ISR/Server Components decken es ab.
Offizielle Dokumentation
Primärquellen-Dokumentation von Next.js und den Suchmaschinen.
Next.js
- Metadata und OG-Bilder – das App-Router-Metadatensystem,
metadataBaseund OG-Bildgenerierung. - generateMetadata-API-Referenz – statisches
metadatavs.generateMetadata, Streaming-Metadaten und die Liste der HTML-beschränkten Bots. - sitemap.xml-Dateikonvention –
app/sitemap.ts,generateSitemaps(), Bild-/Video-/lokalisierte Sitemaps. - robots.txt-Dateikonvention –
app/robots.ts, Regeln pro User-Agent und mehrere Sitemaps. - Lernen: SEO – Next.js’ eigener SEO-Lernpfad (einführend; teilweise vor dem App Router).
- JavaScript-SEO-Grundlagen verstehen – die Crawl-→-Render-→-Index-Pipeline, die 200-Status-Rendering-Warteschlange, Soft-404s in SPAs, Canonicals und die History-API.
- Dynamisches Rendering (veralteter Workaround) – warum Google es veraltet hat und was stattdessen verwendet werden soll (SSR, statisches Rendering, Hydration).
- Ausführlicher Leitfaden zur Funktionsweise der Google-Suche – wo Rendering in Crawl → Index → Auslieferung einzuordnen ist.
Bing / Microsoft
- IndexNow / indexnow.org — das Push-Protokoll, das an ein Next.js-Publish-/Revalidierungsereignis angeschlossen werden kann.
Zitate aus der Quelle
Aufgezeichnete Aussagen von Google, Next.js und Google-Vertretern. Jeder Link ist ein Deep Link, der zur zitierten Passage auf der Quellseite springt.
Google — wie JavaScript-Seiten verarbeitet werden
- “All pages with a 200 HTTP status code are sent to the rendering queue, no matter whether JavaScript is present on the page.” (Übersetzung) „Alle Seiten mit einem HTTP-Statuscode 200 werden in die Rendering-Warteschlange gesendet, unabhängig davon, ob JavaScript auf der Seite vorhanden ist.“ — Google Search Central-Dokumentation. Zum Zitat springen
Google — dynamisches Rendering ist veraltet
- “Dynamic rendering was a workaround and not a long-term solution for problems with JavaScript-generated content in search engines.” (Übersetzung) „Dynamisches Rendering war eine Notlösung und keine langfristige Lösung für Probleme mit JavaScript-generierten Inhalten in Suchmaschinen.“ — Google Search Central-Dokumentation. Zum Zitat springen
- “…creates additional complexities and resource requirements.” (Übersetzung) „…schafft zusätzliche Komplexitäten und Ressourcenanforderungen.“ — Google Search Central-Dokumentation. Zum Zitat springen
Next.js — Streaming-Metadaten und HTML-beschränkte Bots
- “Streaming metadata is disabled for bots and crawlers that expect metadata to be in the
<head>tag (e.g. Twitterbot, Slackbot, Bingbot).” (Übersetzung) „Streaming-Metadaten sind für Bots und Crawler deaktiviert, die Metadaten im<head>-Tag erwarten (z. B. Twitterbot, Slackbot, Bingbot).“ — Next.js-Dokumentation,generateMetadata. Zum Zitat springen
John Mueller, Google (über die Berichterstattung von Search Engine Journal)
- Zur wachsenden Rolle von JavaScript in der SEO: “You’re going to run into significantly more JavaScript over the next years than in the 2-ish decades in SEO before. If you’re keen on technical SEO, then past HTML you’re going to need to understand JS more and more.” (Übersetzung) „Sie werden in den nächsten Jahren deutlich mehr JavaScript begegnen als in den etwa zwei Jahrzehnten SEO zuvor. Wenn Sie sich für technische SEO interessieren, müssen Sie über HTML hinaus immer mehr JS verstehen.“ Berichterstattung lesen
Next.js-SEO-Checkliste
Eine schnelle Prüfung, um zu bestätigen, dass eine Next.js-Site crawlbar, indexierbar und schnell ist:
- Primärinhalte werden beim ersten Request als HTML ausgeliefert (Server Components / SSG / SSR / ISR) – nicht erst nach clientseitigem JavaScript.
- Keine wichtige Seite ist für ihren Hauptinhalt auf CSR angewiesen.
- Jede Seite hat einen eindeutigen Titel und eine eindeutige Beschreibung (verwenden Sie ein Titel-
templateim Root-Layout). -
metadataBaseist im Root-Layout (App Router) gesetzt, damit Canonicals und OG-Bilder absolut sind. - Pro Seite wird ein Canonical über
alternates.canonical(App Router) oder<link rel="canonical">(Pages Router) gesetzt – nicht ein einzelnes gemeinsames Homepage-Canonical. -
metadatawird nur aus Server Components exportiert, niemals aus einer'use client'-Datei. -
generateStaticParamsdeckt alle wichtigen dynamischen Routen ab. -
app/sitemap.ts(odernext-sitemap) erzeugt eine aktuelle Sitemap;generateSitemaps()teilt Websites mit über 50 000 URLs in Shards auf. -
app/robots.ts/public/robots.txtexistiert und blockiert nicht.jsoder.css. - Bilder verwenden
next/imagemitwidth/heightoderfill; das LCP-Bild hatpriority; alle habenalt. - Interne Links verwenden
next/link(echtes<a href>) – keine Navigation nur überonClick. - 404-Ansichten rufen
notFound()auf und geben eine echte404zurück (keine Soft-404s). - JSON-LD wird in einem Server Component
<head>/Body injiziert und besteht den Rich Results Test. - Permanente Weiterleitungen leben in
redirects()innext.config.js(308 /permanent).
Die mentalen Modelle
1. Der Rendering-Modus ist das Produkt. Bevor Sie irgendetwas in einer Next.js-Website debuggen, beantworten Sie eine Frage: Wie wird diese Route gerendert? Server Components / SSG / SSR / ISR liefern Inhalte im HTML und sind risikoarm; CSR ist die riskante Variante. Fast jedes Next.js-SEO-Problem lässt sich darauf zurückführen.
2. Das Framework liefert Infrastruktur, nicht Inhalte. Next.js bringt die Metadata-API, Sitemap-/Robots-Konventionen und die Image-Komponente mit – aber es schreibt keine Ihrer Titel, Beschreibungen, Canonicals oder strukturierten Daten. „Next.js übernimmt SEO automatisch“ ist der teuerste Mythos hier.
3. Eine einzige Quelle der Wahrheit für URLs.
Setzen Sie metadataBase einmal und bauen Sie Canonicals, OG-Bilder und Sitemap-Einträge darauf auf (absolut, niemals relativ). Eine Basis-URL eliminiert die Klasse von Fehlern mit relativen Canonicals und defekten OG-Bildern.
4. Server Components zuerst, Client Components nur wo nötig.
Nutzen Sie standardmäßig Server Components, damit Inhalte und Metadaten im HTML landen. Greifen Sie nur für Interaktivität auf 'use client' zurück – und denken Sie daran, dass metadata nicht aus einer Client Component kommen kann.
5. Die Entscheidungsregel für das Rendering. Überwiegend statisch (Blogs, Doku, Marketing) → SSG (oder ISR mit Timer). Immer aktuell / volatil (Preise, Bestände) → SSR. Ändert sich stündlich/täglich, statische Geschwindigkeit gewünscht → ISR (Achtung vor der Stale-First-Request-Falle). Interaktiv, hinter Login, nicht indexiert → CSR ist in Ordnung. Öffentliche Inhalte, die ranken sollen → niemals CSR.
Next.js-SEO – Spickzettel
Rendering-Modi
| Modus | Wo HTML erstellt wird | SEO | Am besten für | Achtung |
|---|---|---|---|---|
| SSG | Build-Zeit → statisch | ✅ Am besten | Überwiegend statische Inhalte | Veraltet bis zum Rebuild |
| Server Components | Server (App Router Standard) | ✅ Am besten | Die meisten Inhalte | Interaktivität erfordert Client Components |
| ISR | Statisch + zeitgesteuerte Regenerierung | ✅ Gut | Stündliche/tägliche Inhalte | Erster Request nach Revalidierung ist veraltet |
| SSR | Server, pro Request | ✅ Gut | Immer aktuelle Daten | Höhere TTFB / Infrastrukturkosten |
| CSR | Im Browser | ⚠️ Riskant | Eingeloggte Dashboards | Leere Seite für Nicht-Google-Crawler |
App Router vs. Pages Router
| Funktion | App Router | Pages Router |
|---|---|---|
| Metadaten | metadata / generateMetadata | next/head + next-seo |
| Server-Komponenten | Standard | Nicht verfügbar |
| Streaming-Metadaten (bot-bewusst) | Ja | Nein |
| Sitemap | app/sitemap.ts | next-sitemap / manuell |
| Robots | app/robots.ts | public/robots.txt |
| Canonical | alternates.canonical | <link rel="canonical"> in <Head> |
| Datenabruf | asynchrone Server-Komponenten | getStaticProps / getServerSideProps |
Schnelle Regeln
- Setzen Sie
metadataBaseoder Canonicals/OG-Bilder werden relativ. metadataist nur für Server-Komponenten –'use client'-Exporte bewirken nichts.openGrapheines untergeordneten Segments ersetzt das des übergeordneten (keine Zusammenführung).priorityauf dem LCP-Bild = der größte CWV-Gewinn.- Interne Links =
next/link(echtes<a href>); keine Navigation nur überonClick. - 404 →
notFound()aufrufen (echtes404, kein Soft-404). - Niemals
.js/.cssdisallowen. - Streaming-Metadaten → blockierend für Bingbot, Twitterbot, Slackbot, facebookexternalhit.
- Dynamisches Rendering: veraltet – SSR / SSG / ISR / Server-Komponenten verwenden.
Schnellchecks für einen Next.js-Build
Ein paar Befehlszeilen-Checks, bevor Sie zu einem vollständigen Crawler greifen.
Ist Ihr Inhalt im rohen HTML (oder erst nach Ausführung von JS)?
macOS / Linux:
# Raw HTML as the server sends it — the "first fetch", before any client JS
curl -sL -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" \
https://example.com/page/ -o raw.html
# Is your headline actually in the raw HTML? (empty result = CSR / JS-dependent)
grep -o "Your headline text" raw.html
# Did metadataBase do its job? Canonical and OG URLs should be absolute, not relative
grep -iE 'rel="canonical"|og:(url|image)' raw.htmlWindows (PowerShell):
$ua = "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
Invoke-WebRequest -Uri "https://example.com/page/" -UserAgent $ua -OutFile raw.html
Select-String -Path raw.html -Pattern "Your headline text"
Select-String -Path raw.html -Pattern 'rel="canonical"','og:url','og:image'Wenn die Überschrift in raw.html fehlt, aber in Ihrem Browser angezeigt wird, ist diese Route
clientgerendert. Wenn Canonical- oder OG-Bild-URLs relativ ausgegeben werden, haben Sie
metadataBase vergessen.
Bestätigen Sie, dass Sie JS/CSS nicht blockieren (einschließlich des Next.js _next-Verzeichnisses)
macOS / Linux:
curl -sL https://example.com/robots.txt | \
grep -iE "disallow.*\.(js|css)|Disallow:\s*/_next"Windows (PowerShell):
(Invoke-WebRequest "https://example.com/robots.txt").Content |
Select-String -Pattern "Disallow.*\.(js|css)","Disallow:\s*/_next"Jede Übereinstimmung hier ist fast immer ein Fehler – Google rendert nicht aus blockierten Dateien. Ein einfaches
curl kann kein JavaScript ausführen, daher für das gerenderte DOM die URL-Inspektion “View Crawled
Page → rendered HTML” verwenden.
Tools zur Überprüfung einer Next.js-Site
- URL Inspection (Google Search Console) – die Quelle der Wahrheit. Führen Sie einen Live-Test durch,
und zeigen Sie dann das gerenderte HTML, den Screenshot und die Seitenressourcen an (was geladen vs.
was blockiert wurde), um CSR-Lücken und blockierte
_next-Ressourcen zu erkennen. - Rich Results Test – bestätigen Sie, dass JSON-LD nach jeder Rendering-Änderung in der gerenderten Ausgabe gelandet ist.
- Lighthouse / Chrome DevTools – messen Sie LCP, CLS und INP; prüfen Sie, ob Ihr Hero-Bild
vorgeladen ist (
priority). - Ahrefs Site Audit – crawlt mit JavaScript-Rendering und deckt fehlende/relative Canonicals, defekte Metadaten, Redirect-Ketten und Indexierbarkeitsprobleme im Frontend auf.
- Screaming Frog SEO Spider – crawlen Sie mit JS-Rendering an/aus, um rohes vs. gerendertes HTML zu vergleichen, und erstellen Sie Vorher/Nachher-Crawl-Vergleiche für Migrationen.
- Bing Webmaster Tools – Bings URL-Inspektion und wo IndexNow-Einreichungen erscheinen.
Fehler, die Sie bei Next.js vermeiden sollten
Konkrete Muster, die SEO auf echten Next.js-Builds leise brechen – verhindern Sie diese, bevor sie ausgeliefert werden, anstatt sie nach einem Traffic-Einbruch zu debuggen.
Versand ohne metadataBase im Root-Layout
Warum das falsch ist: Ohne metadataBase werden alternates.canonical und openGraph.images
zu relativen Pfaden statt absoluten URLs aufgelöst. Ein relativer Canonical kann
Kanonisierungssignale verwirren, und relative OG-Bild-URLs brechen Linkvorschauen in sozialen
und Messaging-Apps.
Was Sie stattdessen tun sollten: Setzen Sie metadataBase: new URL('https://example.com') einmal in
app/layout.tsx und lassen Sie jede Seite es erben. Überprüfen Sie es mit grep -iE 'rel="canonical"|og:(url|image)' gegen einen rohen HTML-Abruf – die URLs sollten mit https:// beginnen.
Überschreiben des openGraph eines Layouts aus einem untergeordneten Segment
Warum das falsch ist: Metadaten werden flach vom Layout zur Seite zusammengeführt. Ein
openGraph: { title: 'Home' } auf Seitenebene wird nicht mit den openGraph.images des Layouts zusammengeführt – es
ersetzt das gesamte Objekt und verwirft die Bilder stillschweigend.
Was Sie stattdessen tun sollten: Wiederholen Sie entweder das vollständige openGraph-Objekt (einschließlich Bilder) auf
jeder Ebene, die es überschreibt, oder überschreiben Sie nur die spezifischen Top-Level-Metadatenfelder, die Sie
tatsächlich ändern müssen, und lassen Sie openGraph unangetastet, wo der Standard des Layouts ausreicht.
Exportieren von metadata aus einer Client-Komponente
Warum das falsch ist: Die Metadata-API ist nur für Server-Komponenten. Fügen Sie 'use client' zu einer Datei hinzu,
die auch metadata exportiert, und der Export bewirkt nichts – kein Fehler, keine Warnung, nur eine
Seite ohne Titel oder Beschreibung.
Was Sie stattdessen tun sollten: Behalten Sie metadata / generateMetadata-Exporte in einer einfachen Server-
Komponentendatei (page.tsx oder layout.tsx ohne 'use client'). Wenn eine Seite Client-
Interaktivität benötigt, setzen Sie diese in eine separate untergeordnete Komponente und importieren Sie sie – fügen Sie nicht
'use client' zu der Datei hinzu, die den Metadaten-Export besitzt.
Abrufen von Primärinhalten in useEffect (oder Verlassen auf vollständiges CSR)
Warum das falsch ist: Inhalte, die nur im Browser gerendert werden, sind nicht im initialen HTML. Google wird sie irgendwann rendern, aber die mediane Renderverzögerung ist real und das 90. Perzentil zieht sich über Stunden hin – und Nicht-Google-Crawler (Bing, Social-Preview-Bots, die meisten KI-Crawler) rendern JavaScript oft gar nicht, sodass sie eine leere Seite sehen.
Was Sie stattdessen tun sollten: Verwenden Sie standardmäßig Server-Komponenten, SSG, ISR oder SSR für alles, was Sie
indexieren möchten. Reservieren Sie 'use client' und useEffect-Datenabruf für interaktive UI, die
nicht crawlbar sein muss – ein Filter-Widget, nicht den Artikeltext.
Rückgabe von 200 für eine “nicht gefunden”-Ansicht
Warum das falsch ist: Das Rendern einer “nicht gefunden”-Nachricht ohne Aufruf von notFound() gibt einen
normalen 200-Status zurück. Das ist ein Soft-404 – Google kann die Seite mit leerem Inhalt indexieren, statt sie
als fehlend zu erkennen, und Soft-404s sind eines der häufigsten realen Next.js-SEO-
Probleme.
Was Sie stattdessen tun sollten: Rufen Sie die eingebaute notFound()-Funktion auf, damit die Route eine echte
404 zurückgibt. Bestätigen Sie mit curl -I auf einer bekanntermaßen fehlenden URL und prüfen Sie den Statuscode direkt,
nicht nur, was im Browser gerendert wird.
Überspringen von generateStaticParams bei wichtigen dynamischen Routen
Warum das falsch ist: Ohne sie fallen dynamische Routen auf bedarfsgesteuertes Rendering (SSR) zurück, was für SEO immer noch funktioniert, aber bei jeder ersten Anfrage für diese URL Serverlatenz hinzufügt – einschließlich der von Googlebot.
Was Sie stattdessen tun sollten: Zählen Sie die URLs, die wichtig sind (Produktseiten, Blogbeiträge,
Kategorieseiten) in generateStaticParams() auf, damit sie vorgebaut werden, und kombinieren Sie es mit
revalidate (ISR) für Inhalte, die sich nach dem Start ändern.
Testen Sie sich selbst: Next.js-SEO
Fünf kurze Fragen, um eine Next.js-Site crawlbar, indexierbar und schnell zu machen. Wählen Sie eine Antwort für jede, dann prüfen Sie.
Ressourcen, die Ihre Zeit wert sind
Meine verwandten Artikel
- JavaScript-SEO: Ein umfassender Leitfaden – mein vollständiger Leitfaden zu Rendering, DOM-Parität, Kanonisierung in JS, Sitemaps und den Rendering-Modus-Kompromissen, auf denen Next.js aufbaut. Dieser Next.js-Leitfaden ist die frameworkspezifische Ebene darüber.
- Der Anfängerleitfaden für technisches SEO – wo Rendering und Crawling in das größere Bild passen.
Meine Vorträge
- JavaScript SEO — Ungagged 2019 (SlideShare) — meine Erläuterung, wie Frameworks Frontend und Backend trennen und wie Googlebot rendert. (Hinweis: Die Empfehlung zu Dynamic Rendering in diesem Vortrag ist inzwischen veraltet — Google hat sie eingestellt.)
Aus der Branche
- Metadata and OG Images (Next.js-Dokumentation) — das App-Router-Metadatensystem,
metadataBaseund die Generierung von OG-Bildern. - generateMetadata API Reference (Next.js-Dokumentation) — statische vs. dynamische Metadaten und das Verhalten bei HTML-begrenzten Bots / Streaming-Metadaten.
- sitemap.xml File Convention (Next.js-Dokumentation) —
app/sitemap.ts,generateSitemaps()sowie lokalisierte und Bild-Sitemaps. - Common SEO Issues on Next.js Websites (Salt Agency) — eine Audit-Studie über 50 Websites mit echten Daten zu Soft-404-Fehlern und LCP-Problemen.
- How Google Handles JavaScript Throughout the Indexing Process (Vercel) — Render-Zeitdaten aus den Server-Beacons von nextjs.org.
- The Complete Next.js SEO Guide (Strapi) — eine gründliche Framework-Anleitung, die Rendering-Modi, Metadaten und strukturierte Daten abdeckt.
- App Router vs Pages Router for SEO (Wisp) — ein fokussierter Vergleich der beiden Router aus SEO-Sicht.
- r/TechSEO — die Community für Rendering- und Indexierungs-Debugging.
Statistiken, die sich zu zitieren lohnen
- Die Render-Zeit ist meist schnell, gelegentlich sehr langsam. Vercels Analyse von über 37 000 Server-Beacon-Paaren auf nextjs.org ergab eine mediane Render-Zeit von etwa 10 Sekunden, aber ein 90. Perzentil von etwa 3 Stunden und ein 99. Perzentil von etwa 18 Stunden — genau deshalb sollten Sie primäre Inhalte nicht auf die Render-Warteschlange warten lassen. Quelle
- CWV und Soft-404-Fehler sind auf echten Next.js-Websites weit verbreitet. Salt Agencys Audit von 50
Next.js-Websites ergab 41/50 mit Soft-404-Fehlern (404-Ansichten bei einem
200-Status) und nur 3/50, die die LCP-Schwellenwerte erreichen — eine Erinnerung daran, dass die CWV-Vorteile des Frameworks nur helfen, wenn Sienext/imagemitpriorityverwenden und echte Statuscodes zurückgeben. Quelle
Änderungsprotokoll
Aktualisiert am 18. Juli 2026.
Redaktionelle Zusammenfassung und aufgezeichnete Änderungsdetails.Änderungsdetails
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
Vollständiger Vergleich nicht verfügbar — für diese Version wurde kein früherer Schnappschuss archiviert.