Next.js bietet integrierte Unterstützung für das Messen und Berichten von Leistungsmetriken. Sie können entweder den useReportWebVitals-Hook verwenden, um die Berichterstattung selbst zu verwalten, oder alternativ bietet Vercel einen Managed Service an, der Metriken automatisch sammelt und visualisiert.
Für erweiterte Analyse- und Monitoring-Anforderungen bietet Next.js eine instrumentation-client.js|ts-Datei, die ausgeführt wird, bevor der Frontend-Code Ihrer Anwendung startet. Dies ist ideal für die Einrichtung globaler Analyse-, Fehlerverfolgungs- oder Performance-Monitoring-Tools.
Um sie zu verwenden, erstellen Sie eine instrumentation-client.js oder instrumentation-client.ts-Datei im Stammverzeichnis Ihrer Anwendung:
instrumentation-client.js
// Initialisieren Sie Analytics, bevor die App startetconsole.log('Analytics initialisiert')// Richten Sie die globale Fehlerverfolgung einwindow.addEventListener('error', (event) => { // Senden Sie den Fehler an Ihren Fehlerverfolgungsdienst reportError(event.error)})
Zusätzlich zu den oben aufgeführten Kernmetriken gibt es einige benutzerdefinierte Metriken, die die Zeit messen, die die Seite für die Hydration und das Rendering benötigt:
Next.js-hydration: Dauer, die die Seite für den Start und Abschluss der Hydration benötigt (in ms)
Next.js-route-change-to-render: Dauer, die eine Seite nach einer Routenänderung für den Render-Start benötigt (in ms)
Next.js-render: Dauer, die eine Seite nach einer Routenänderung für den Render-Abschluss benötigt (in ms)
Sie können alle Ergebnisse dieser Metriken separat verarbeiten:
export function reportWebVitals(metric) { switch (metric.name) { case 'Next.js-hydration': // Hydration-Ergebnisse 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.
Gut zu wissen: Wenn Sie Google Analytics verwenden, können Sie mit dem id-Wert manuell Metrikverteilungen erstellen (um Perzentile etc. zu berechnen).
useReportWebVitals((metric) => { // Verwenden Sie `window.gtag`, wenn Sie Google Analytics wie in diesem Beispiel initialisiert haben: // https://github.com/vercel/next.js/blob/canary/examples/with-google-analytics 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, die für den aktuellen Seitenladen eindeutig ist non_interaction: true, // vermeidet Auswirkungen auf die Absprungrate. })})