Core Web Vitals für Next.js
Von Christian Schreiber · Aktualisiert am
Next.js ist das Framework hinter vielen der größten Markenseiten, Portale und Headless-Shops, die wir messen. Es kann Seiten auf dem Server rendern, HTML streamen, Bilder und Schriften optimieren und sehr wenig JavaScript an den Browser liefern. Es kann auch das Gegenteil: eine ganze Seite aus Client-Komponenten hydrieren, ein Megabyte Bibliotheken in den ersten Ladevorgang packen und das Hero-Bild im Browser rendern. Beide Muster gibt es in Produktion, weshalb Next.js-Websites in unseren Daten auf einer einzigen Plattform von den schnellsten bis zu den langsamsten reichen. Dieser Ratgeber zeigt, wo Next.js-Websites stehen, warum der INP ihre Schwachstelle ist und welche Framework-Funktionen das Bild verändern.
Aus den Messungen von PerfDelta: 41 % der 529 gemessenen Next.js-Websites bestehen alle drei Core Web Vitals (alle gemessenen Websites: 49 %). Gut sind 70 % beim LCP, 62 % beim INP und 72 % beim CLS. Alle Werte, weitere Plattformen und Regionen zeigt die Next.js Pagespeed-Statistik. Mehr dazu im Datenblock unten.
Wo Next.js-Websites stehen
In unseren Messungen bestehen Next.js-Websites die Core Web Vitals seltener als die durchschnittliche Website, und der Abstand liegt fast vollständig beim INP. LCP und CLS sind oft in Ordnung; der Hauptthread ist es nicht. Der Datenblock unten zeigt die aktuellen Werte, die Next.js Pagespeed-Statistik ergänzt Seitengewicht, Drittanbieter und Lighthouse-Befunde, dazu einen Regionsvergleich für Deutschland, Österreich und die Schweiz und Großbritannien. Die regionalen Unterschiede sind groß, was mehr darüber sagt, wer in welchem Markt mit Next.js baut, als über das Framework.
Was Next.js-Websites typischerweise bremst
Hydrierung großer Client-Komponentenbäume
Das serverseitig gerenderte HTML kommt schnell an, dann führt React den Komponentencode im Browser erneut aus, um Event-Handler anzuhängen. Auf einer Seite, deren Komponenten überwiegend Client-Komponenten sind, ist die Hydrierung ein einziger langer Task, der jedes Tippen blockiert, bis er fertig ist. Das ist der Mechanismus hinter den meisten schlechten INP-Werten bei Next.js, und er wächst mit der Zahl der Komponenten und der Größe ihrer Props.
Bundle-Größe
Barrel-Imports, die für eine Funktion eine ganze Bibliothek ziehen, UI-Kits mit hunderten Komponenten im gemeinsamen Chunk, Datums- und Diagrammbibliotheken auf jeder Route und Polyfills für Browser, die niemand nutzt. Jedes Kilobyte wird geparst und ausgeführt; siehe Ausführungszeit und nicht verwendetes JavaScript.
Im Client gerenderte LCP-Bilder
Ein Hero-Bild in einer Client-Komponente, die erst nach der Hydrierung rendert, oder ein Hintergrundbild per CSS-in-JS ist für den HTML-Parser unsichtbar. Der Browser entdeckt es spät, und der LCP leidet. Verzögertes Laden, das eine generische Bildkomponente auch auf das Hero-Bild anwendet, verschlimmert es.
Drittanbieter-Tags
Next.js-Websites großer Unternehmen tragen Tag Manager, Consent-Werkzeuge, A/B-Tests und Personalisierung wie jede andere Unternehmensseite, und diese Skripte konkurrieren mit der Hydrierung um den Hauptthread. Der Ratgeber zu Drittanbieter-Code gilt in vollem Umfang.
Datenabruf im Client
Seiten, die ein Skelett rendern, dann in useEffect Daten holen und erst dann den echten Inhalt rendern, schieben den LCP um einen vollen Hin- und Rückweg nach hinten und verursachen oft Layout-Verschiebungen, wenn der Inhalt eintrifft.
Maßnahmen innerhalb des Frameworks
- Komponenten standardmäßig als Server Components. Im App Router ist eine Komponente eine Server-Komponente, solange sie kein
'use client'deklariert. Schieben Sie die Client-Grenze nach unten zu den Blättern, die Interaktivität brauchen (ein Button, ein Formular, ein Karussell), und lassen Sie Layout, Text und Datenabruf auf dem Server. Weniger Client-Code heißt weniger Hydrierung und ein kleineres Bundle. - Das LCP-Bild mit next/image und priority.
<Image priority />rendert das Hero-Bild im HTML, lädt es vorab, setztfetchpriority="high"und schaltet das verzögerte Laden ab. Alle anderen Bilder behalten das verzögerte Laden. Geben Sie Bildern feste Maße oderfillin einem Container mit Größe, um Layout-Verschiebungen zu vermeiden. - next/font nutzen. Es hostet Schriften selbst, lädt sie vorab, setzt
font-displayund erzeugt eine größenangepasste Ersatzschrift. Das beseitigt schriftbedingten CLS und einen externen Ursprung in einem Schritt. - Bundle analysieren und aufteilen. Lassen Sie den Bundle-Analyzer laufen, ersetzen Sie Barrel-Imports durch direkte Importe (oder aktivieren Sie die Import-Optimierung des Frameworks für große Bibliotheken), laden Sie schwere Komponenten mit
next/dynamic, mitssr: falsenur dort, wo sie wirklich nur im Client laufen, und lagern Sie selten genutzte Routen in eigene Chunks aus. - Daten auf dem Server abrufen. Server Components und Route Handler holen Daten während des Renderns, sodass das HTML vollständig ankommt. Nutzen Sie Streaming mit
Suspense-Grenzen für langsame Daten, damit die Hülle zuerst erscheint, ohne Wasserfall im Client. - Drittanbieter-Skripte mit next/script laden. Die Strategien
afterInteractiveundlazyOnloadhalten Tags vom kritischen Pfad fern;beforeInteractiveist für das seltene Skript, das zuerst laufen muss, etwa einen Consent-Manager. - Lange Tasks im Client-Code aufteilen. Wo Interaktivität schwer bleibt, geben Sie zwischen den Schritten an den Hauptthread ab (siehe Ausführungszeit) und vermeiden Sie synchrone Layout-Abfragen in Event-Handlern.
- Cachen und nah am Publikum hosten. Statische und inkrementell regenerierte Seiten vom Netzwerkrand halten die TTFB niedrig; vollständig dynamisches Server-Rendering in einer einzigen Region nicht.
Das Ergebnis messen
Verfolgen Sie den INP im Feld je Route, denn Startseite und eine Produkt- oder Artikelroute hydrieren sehr unterschiedlich. Im Labor beobachten Sie die Total Blocking Time und die Hauptthread-Aufschlüsselung in Lighthouse; die Hydrierung erscheint als ein breiter Task, der dem Framework-Chunk zugeordnet ist. Das Monitoring von PerfDelta zeigt den INP im Feld je URL neben dem Next.js-Median, sodass die Wirkung einer verschobenen Client-Grenze binnen des 28-Tage-Fensters sichtbar wird.
Häufige Fragen
Ist Next.js schlecht für die Core Web Vitals?
Nein. Das Framework bietet alles, was zum Bestehen nötig ist. Die Websites, die scheitern, liefern meist große Client-Komponentenbäume und schwere Bundles aus, was das Framework erlaubt, aber nicht verlangt.
App Router oder Pages Router für die Performance?
Der App Router mit Server Components gibt mehr Kontrolle darüber, wie viel JavaScript den Browser erreicht. Eine gut gebaute Pages-Router-Website kann ebenfalls bestehen; der Unterschied liegt in den Voreinstellungen, nicht in der Obergrenze.
Warum ist der INP schlecht, obwohl der LCP gut ist?
Schnelles HTML vom Server bringt den Inhalt auf den Bildschirm, dann belegen Hydrierung und Drittanbieter-Skripte den Hauptthread. Der Besucher sieht die Seite schnell, kann aber nicht mit ihr interagieren. Weniger Client-Code und aufgeteilte lange Tasks beheben das.
Hilft next/image immer?
Für das LCP-Bild nur mit priority; sonst lädt es das Hero-Bild verzögert und verschiebt den LCP. Für alles unterhalb des sichtbaren Bereichs sind die Voreinstellungen richtig.
Was die Messdaten von PerfDelta zeigen
41 % der 529 gemessenen Next.js-Websites bestehen alle drei Core Web Vitals (alle gemessenen Websites: 49 %). Gut sind 70 % beim LCP, 62 % beim INP und 72 % beim CLS. Alle Werte, weitere Plattformen und Regionen zeigt die Next.js Pagespeed-Statistik.
Eine Next.js-Startseite überträgt im Median 4,1 MB, davon 2,0 MB JavaScript; der häufigste Lighthouse-Befund sind renderblockierende Ressourcen.
Datenstand 16.10.2026, täglich neu berechnet. Quelle: eigene Messungen von PerfDelta (Chrome UX Report und Lighthouse), Details in den Website Speed Statistiken und in der Methodik.
Grenzwerte und Quellen
Bewertung in den Felddaten (Chrome UX Report, 75. Perzentil):
| Metrik | Gut | Verbesserungswürdig | Schlecht |
|---|---|---|---|
| LCP | ≤ 2,5 s | 2,5 bis 4,0 s | > 4,0 s |
| INP | ≤ 200 ms | 200 bis 500 ms | > 500 ms |
| CLS | ≤ 0,1 | 0,1 bis 0,25 | > 0,25 |
Quellen:
Alle Quellen abgerufen am 09.10.2026. Grenzwerte und Dokumentation ändern sich; maßgeblich ist die verlinkte Seite.
Eigene Werte testen
Ein kostenloser Scan zeigt, wie Ihre Seiten bei diesen Werten abschneiden, mobil und stationär, mit Feld- und Labdaten nebeneinander.
Kostenlosen Test startenMit einem kostenlosen Konto speichern Sie Ihre Messungen und sehen, wie sich die Werte von Test zu Test verändern. Tägliches Monitoring mit Felddaten und Benachrichtigung gibt es ab dem Tarif Solo.
Verwandte Themen
- Core Web Vitals: Definition, Werte und Optimierung
- Interaction to Next Paint (INP): Werte und Optimierung
- JavaScript-Ausführungszeit reduzieren: Lighthouse-Befund beheben, TBT und INP senken
- Nicht verwendetes JavaScript reduzieren: Warnung beheben
- Core Web Vitals Benchmark: Websites und CMS vergleichen