Monitorowanie rzeczywistych użytkowników i Web Vitals
Zarejestrują Państwo LCP, FID, CLS oraz własne znaczniki wydajności jako metryki OTel za pomocą biblioteki web-vitals.
Monitorowanie rzeczywistych użytkowników i Web Vitals to bezpłatna lekcja React Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej React Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs React Academy zawiera 4 lekcji w sumie.
Biblioteka web-vitals
Pakiet npm web-vitals firmy Google udostępnia prosty interfejs API do pomiaru Core Web Vitals w prawdziwych przeglądarkach użytkowników. Należy zainstalować go za pomocą npm install web-vitals i importować osobne callbacki metryk: onLCP, onFID (przestarzały), onCLS, onFCP, onTTFB oraz nowoczesny onINP dla Interaction to Next Paint.
Callbacki metryk i obiekty metryk
Każdy callback (onLCP, onCLS, onINP itd.) otrzymuje obiekt metryki zawierający: name ('LCP'), value (milisekundy lub wynik bez jednostki), rating ('good', 'needs-improvement', 'poor') oraz id (unikatowy identyfikator służący do usuwania duplikatów). Callback jest wywoływany po ustaleniu ostatecznej wartości metryki.
Raportowanie Web Vitals do endpointu analitycznego
Do raportowania metryk do endpointu analitycznego należy użyć interfejsu Navigator.sendBeacon lub fetch. sendBeacon jest preferowany, ponieważ kontynuuje działanie nawet po rozładowaniu strony — ma to kluczowe znaczenie w przypadku metryk takich jak CLS, których wartość końcowa jest ustalana po ukryciu strony. Jeśli to możliwe, należy grupować wszystkie raporty metryk w jednym beaconie.
Wysyłanie Web Vitals jako metryk OTel
Aby zintegrować Web Vitals z OpenTelemetry, należy utworzyć instrumenty Gauge dla każdej metryki: const lcp = meter.createObservableGauge('web_vitals.lcp'). W każdym callbacku onLCP należy zarejestrować wartość wraz z odpowiednimi atrybutami (ścieżka strony, typ urządzenia). Backend obserwowalności może wtedy generować alerty dotyczące regresji P75 LCP.
Niestandardowe znaczniki wydajności React
Do pomiaru wydajności specyficznej dla Reacta, której nie obejmują Web Vitals, należy użyć User Timing API: performance.mark('render-start') przed renderowaniem, performance.mark('render-end') po renderowaniu, a następnie performance.measure('component-render', 'render-start', 'render-end'). Pomiary te pojawią się na karcie Performance w Chrome DevTools.
React Profiler API
Komponent React Profiler opakowuje poddrzewo i wywołuje callback onRender z danymi pomiarowymi: id (identyfikator Profilera), phase ('mount' lub 'update'), actualDuration (czas renderowania), baseDuration (szacowany czas renderowania bez memoizacji). Należy używać tego rozwiązania w fazie tworzenia aplikacji, aby identyfikować wolne komponenty.
Śledzenie błędów jako spanów OTel
Nieobsłużone błędy i odrzucenia obietnic Promise można przechwytywać jako spany OTel ze statusem błędu. Należy skonfigurować globalne listenery: window.addEventListener('error', handler) i window.addEventListener('unhandledrejection', handler). Następnie należy utworzyć span, ustawić jego status za pomocą span.setStatus({ code: SpanStatusCode.ERROR }), dodać komunikat błędu i stack trace jako atrybuty, a na końcu zakończyć span.
Integracja React Error Boundaries
React Error Boundaries przechwytują błędy renderowania w drzewie komponentów. W metodzie componentDidCatch należy utworzyć span OTel reprezentujący błąd, ustawić jego status na ERROR, dołączyć error.message i componentStack jako atrybuty, a następnie wywołać span.end(). Dzięki temu błędy renderowania React trafiają do potoku rozproszonych trace.
Mapy źródeł do rozwiązywania stack trace
Zminifikowany produkcyjny JavaScript generuje nieczytelne stack trace, takie jak "a.b at bundle.min.js:1:84721". Podczas procesu kompilacji CI/CD należy przesłać mapy źródeł do Sentry, Datadog lub potoku OTel, aby surowe stack trace były automatycznie odwzorowywane na oryginalne nazwy plików TypeScript i numery wierszy.
Próbkowanie sesji RUM
Wysyłanie pełnych danych trace dla każdej sesji jest kosztowne. Należy zaimplementować próbkowanie sesji: przy pierwszym załadowaniu strony losowo przypisać flagę sessionSampled i zapisać ją w sessionStorage. OTel SDK należy inicjalizować i wysyłać trace tylko dla próbkowanych sesji (np. 10%). Sesje, w których wystąpiły błędy, należy zawsze próbkować w 100%.
Alerty dotyczące regresji Web Vitals
Web Vitals raportowane jako metryki OTel umożliwiają tworzenie alertów opartych na SLO: jeśli P75 LCP przekracza 2,5 sekundy dla ponad 5% sesji w ciągu godziny, należy wygenerować alert. Zapewnia to zespołom inżynieryjnym praktyczne sygnały bezpośrednio związane z doświadczeniem użytkownika, a nie tylko z metrykami infrastruktury backendu.
Callback onLCP Web Vitals
Kiedy jest wywoływany callback onLCP z biblioteki web-vitals?
Podsumowanie lekcji
Biblioteka web-vitals udostępnia proste callbacki do pomiaru LCP, INP, CLS, FCP i TTFB w prawdziwych przeglądarkach użytkowników. Należy raportować te wartości jako metryki OTel na potrzeby alertów opartych na SLO, przechwytywać błędy za pomocą globalnych listenerów i React Error Boundaries jako spany OTel oraz przesyłać mapy źródeł, aby rozwiązywać zminifikowane stack trace. Należy próbkować sesje w celu kontrolowania ilości danych, zachowując jednocześnie 100% pokrycia błędów.
Często zadawane pytania
Czy lekcja „Monitorowanie rzeczywistych użytkowników i Web Vitals” jest bezpłatna?
Tak — pełny tekst „Monitorowanie rzeczywistych użytkowników i Web Vitals” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu React Academy, przejdź na CoddyKit PRO. Kurs React Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Monitorowanie rzeczywistych użytkowników i Web Vitals”?
Zarejestrują Państwo LCP, FID, CLS oraz własne znaczniki wydajności jako metryki OTel za pomocą biblioteki web-vitals. Ćwiczysz React Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć React Academy?
Nie wymagamy żadnego doświadczenia. React Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Monitorowanie rzeczywistych użytkowników i Web Vitals”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji React Academy?
Tak. Każda lekcja React Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Obserwowalność frontendu: co to jest i dlaczego jest ważna
- Ślady OpenTelemetry z przeglądarki
- Monitorowanie rzeczywistych użytkowników i Web Vitals
- Korelowanie śladów frontendu i backendu