Das metric-Objekt, das als Argument des Hooks übergeben wird, besteht aus mehreren Eigenschaften:
id: Eindeutiger Identifikator für die Metrik im Kontext des aktuellen Seitenladevorgangs
name: Der Name der Leistungsmetrik. Mögliche Werte umfassen Namen von Web Vitals-Metriken (TTFB, FCP, LCP, FID, CLS), die spezifisch für eine Webanwendung sind.
delta: Die Differenz zwischen dem aktuellen und dem vorherigen Wert der Metrik. Der Wert ist typischerweise in Millisekunden und stellt die Änderung des Metrikwerts über die Zeit dar.
entries: Ein Array von Performance Entries, die mit der Metrik verknüpft sind. Diese Einträge liefern detaillierte Informationen über die mit der Metrik verbundenen Leistungsereignisse.
navigationType: Gibt den Typ der Navigation an, der die Metrik-Sammlung ausgelöst hat. Mögliche Werte sind "navigate", "reload", "back_forward" und "prerender".
rating: Eine qualitative Bewertung des Metrikwerts, die eine Einschätzung der Leistung liefert. Mögliche Werte sind "good", "needs-improvement" und "poor". Die Bewertung wird typischerweise durch den Vergleich des Metrikwerts mit vordefinierten Schwellenwerten bestimmt, die akzeptable oder suboptimale Leistung anzeigen.
value: Der tatsächliche Wert oder die Dauer des Performance-Eintrags, typischerweise in Millisekunden. Der Wert liefert ein quantitatives Maß für den von der Metrik verfolgten Leistungsaspekt. Die Quelle des Werts hängt von der spezifischen gemessenen Metrik ab und kann aus verschiedenen Performance APIs stammen.
Zusätzlich zu den oben aufgeführten Kernmetriken gibt es einige benutzerdefinierte Metriken, die die Zeit bis zur Hydratation und zum Rendern der Seite messen:
Next.js-hydration: Zeit, die die Seite benötigt, um mit der Hydratation zu beginnen und sie abzuschließen (in ms)
Next.js-route-change-to-render: Zeit, die eine Seite nach einer Routenänderung benötigt, um mit dem Rendern zu beginnen (in ms)
Next.js-render: Zeit, die eine Seite nach einer Routenänderung benötigt, um das Rendern abzuschließen (in ms)
Sie können alle Ergebnisse dieser Metriken separat verarbeiten:
export function reportWebVitals(metric) { switch (metric.name) { case 'Next.js-hydration': // Hydratationsergebnisse verarbeiten break case 'Next.js-route-change-to-render': // Route-Change-zu-Render-Ergebnisse verarbeiten break case 'Next.js-render': // Render-Ergebnisse verarbeiten break default: break }}
Diese Metriken funktionieren in allen Browsern, die die User Timing API unterstützen.
Vercel Speed Insights sind auf Vercel-Deployments automatisch konfiguriert und erfordern keine Verwendung von useReportWebVitals. Dieser Hook ist nützlich für die lokale Entwicklung oder wenn Sie einen anderen Analysedienst verwenden.
Gut zu wissen: Wenn Sie Google Analytics verwenden, können Sie mit dem id-Wert Metrikverteilungen manuell erstellen (um Perzentile etc. zu berechnen).
useReportWebVitals(metric => { // `window.gtag` verwenden, wenn Sie Google Analytics wie in diesem Beispiel initialisiert haben: // https://github.com/vercel/next.js/blob/canary/examples/with-google-analytics/pages/_app.js window.gtag('event', metric.name, { value: Math.round(metric.name === 'CLS' ? metric.value * 1000 : metric.value), // Werte müssen Ganzzahlen sein event_label: metric.id, // id eindeutig für aktuellen Seitenladevorgang non_interaction: true, // vermeidet Auswirkungen auf die Absprungrate. });}