Wie Sie Analytics zu Ihrer Next.js-Anwendung hinzufügen

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.

Client-Instrumentierung

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 startet
console.log('Analytics initialisiert')

// Richten Sie die globale Fehlerverfolgung ein
window.addEventListener('error', (event) => {
  // Senden Sie den Fehler an Ihren Fehlerverfolgungsdienst
  reportError(event.error)
})

Eigenes Setup erstellen

app/_components/web-vitals.js
'use client'

import { useReportWebVitals } from 'next/web-vitals'

export function WebVitals() {
  useReportWebVitals((metric) => {
    console.log(metric)
  })
}
app/layout.js
import { WebVitals } from './_components/web-vitals'

export default function Layout({ children }) {
  return (
    <html>
      <body>
        <WebVitals />
        {children}
      </body>
    </html>
  )
}

Da der useReportWebVitals-Hook die 'use client'-Direktive erfordert, ist der performanteste Ansatz, eine separate Komponente zu erstellen, die vom Root-Layout importiert wird. Dies begrenzt die Client-Boundary ausschließlich auf die WebVitals-Komponente.

Weitere Informationen finden Sie in der API-Referenz.

Web Vitals

Web Vitals sind eine Sammlung nützlicher Metriken, die die Nutzererfahrung einer Webseite erfassen sollen. Folgende Web Vitals sind enthalten:

Sie können alle Ergebnisse dieser Metriken über die name-Eigenschaft verarbeiten.

'use client'

import { useReportWebVitals } from 'next/web-vitals'

export function WebVitals() {
  useReportWebVitals((metric) => {
    switch (metric.name) {
      case 'FCP': {
        // FCP-Ergebnisse verarbeiten
      }
      case 'LCP': {
        // LCP-Ergebnisse verarbeiten
      }
      // ...
    }
  })
}

Ergebnisse an externe Systeme senden

Sie können Ergebnisse an beliebige Endpunkte senden, um die Leistung realer Nutzer auf Ihrer Website zu messen und zu verfolgen. Beispiel:

useReportWebVitals((metric) => {
  const body = JSON.stringify(metric)
  const url = 'https://example.com/analytics'

  // Verwenden Sie `navigator.sendBeacon()`, falls verfügbar, andernfalls `fetch()`.
  if (navigator.sendBeacon) {
    navigator.sendBeacon(url, body)
  } else {
    fetch(url, { body, method: 'POST', keepalive: true })
  }
})

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.
  })
})

Lesen Sie mehr über das Senden von Ergebnissen an Google Analytics.

On this page