Monitorización de usuarios reales y Web Vitals
Capture LCP, FID, CLS y marcas de rendimiento personalizadas como métricas de OTel mediante la biblioteca web-vitals.
Monitorización de usuarios reales y Web Vitals es una lección gratuita de React Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de React Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de React Academy incluye 4 lecciones en total.
La biblioteca web-vitals
El paquete npm web-vitals de Google proporciona una API sencilla para medir los Core Web Vitals en navegadores de usuarios reales. Instálelo con npm install web-vitals e importe los callbacks individuales de las métricas: onLCP, onFID (en desuso), onCLS, onFCP, onTTFB y el moderno onINP para Interaction to Next Paint.
Callbacks de métricas y objetos de métricas
Cada callback (onLCP, onCLS, onINP, etc.) recibe un objeto de métrica que contiene: name ('LCP'), value (milisegundos o una puntuación sin unidad), rating ('good', 'needs-improvement', 'poor') e id (un identificador único para eliminar duplicados). El callback se ejecuta cuando el valor de la métrica queda finalizado.
Envío de Web Vitals a un endpoint de analítica
Use la API Navigator.sendBeacon o fetch para informar de las métricas a su endpoint de analítica. Se prefiere sendBeacon porque continúa funcionando incluso después de que se descargue la página, algo fundamental para métricas como CLS, que se finalizan cuando la página se oculta. Agrupe todos los informes de métricas en un único beacon siempre que sea posible.
Envío de Web Vitals como métricas de OTel
Para integrar Web Vitals en OpenTelemetry, cree instrumentos Gauge para cada métrica: const lcp = meter.createObservableGauge('web_vitals.lcp'). En cada callback onLCP, registre el valor con los atributos relevantes (ruta de la página, tipo de dispositivo). A continuación, su backend de observabilidad podrá generar alertas sobre regresiones del P75 de LCP.
Marcas de rendimiento personalizadas de React
Para medir el rendimiento específico de React que Web Vitals no captura, use la User Timing API: performance.mark('render-start') antes de renderizar, performance.mark('render-end') después y, a continuación, performance.measure('component-render', 'render-start', 'render-end'). Estas mediciones aparecen en la pestaña Performance de Chrome DevTools.
API React Profiler
El componente React Profiler envuelve un subárbol y llama a su callback onRender con datos de temporización: id (identificador de Profiler), phase ('mount' o 'update'), actualDuration (tiempo de renderizado) y baseDuration (tiempo de renderizado estimado sin memoización). Use esta API durante el desarrollo para identificar los componentes lentos.
Seguimiento de errores como spans de OTel
Los errores no controlados y los rechazos de Promise pueden capturarse como spans de OTel con un estado de error. Configure listeners globales: window.addEventListener('error', handler) y window.addEventListener('unhandledrejection', handler). Cree un span, establezca span.setStatus({ code: SpanStatusCode.ERROR }), añada el mensaje de error y el stack trace como atributos y, a continuación, finalice el span.
Integración con React Error Boundaries
React Error Boundaries capturan los errores de renderizado en el árbol de componentes. En el método componentDidCatch, cree un span de OTel que represente el error, establezca su estado en ERROR, adjunte error.message y componentStack como atributos y llame a span.end(). De este modo, los errores de renderizado de React se incorporan a su canalización de trazas distribuidas.
Source Maps para resolver stack traces
El JavaScript de producción minimizado genera stack traces ilegibles como "a.b at bundle.min.js:1:84721". Cargue los source maps en Sentry, Datadog o su canalización de OTel durante el proceso de compilación de CI/CD para que los stack traces sin procesar se resuelvan automáticamente en los nombres de archivo y números de línea originales de TypeScript.
Muestreo de sesiones de RUM
Enviar los datos completos de las trazas de cada sesión es costoso. Implemente el muestreo de sesiones: asigne aleatoriamente un indicador sessionSampled durante la primera carga de la página y almacénelo en sessionStorage. Inicialice el SDK de OTel y envíe trazas únicamente para las sesiones muestreadas (por ejemplo, el 10 %). Muestree siempre al 100 % las sesiones que contengan errores.
Alertas sobre regresiones de Web Vitals
Informar de Web Vitals como métricas de OTel permite generar alertas basadas en SLO: si el P75 de LCP supera los 2,5 segundos en más del 5 % de las sesiones durante un periodo de 1 hora, active una alerta. Esto proporciona a los equipos de ingeniería señales prácticas directamente relacionadas con la experiencia del usuario, en lugar de métricas de la infraestructura del backend.
Callback onLCP de Web Vitals
¿Cuándo se ejecuta el callback onLCP de la biblioteca web-vitals?
Resumen de la lección
La biblioteca web-vitals proporciona callbacks sencillos para medir LCP, INP, CLS, FCP y TTFB en navegadores de usuarios reales. Informe de estas métricas como métricas de OTel para generar alertas basadas en SLO, capture errores mediante listeners globales y React Error Boundaries como spans de OTel, y cargue source maps para resolver los stack traces minimizados. Muestree las sesiones para controlar el volumen de datos y conservar una cobertura del 100 % de los errores.
Preguntas frecuentes
¿La lección «Monitorización de usuarios reales y Web Vitals» es gratis?
Sí — el texto completo de «Monitorización de usuarios reales y Web Vitals» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de React Academy, actualiza a CoddyKit PRO. El curso de React Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Monitorización de usuarios reales y Web Vitals»?
Capture LCP, FID, CLS y marcas de rendimiento personalizadas como métricas de OTel mediante la biblioteca web-vitals. Practicas React Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar React Academy?
No se requiere experiencia previa. React Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Monitorización de usuarios reales y Web Vitals»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de React Academy?
Sí. Cada lección de React Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Observabilidad del frontend: qué es y por qué importa
- Trazas de OpenTelemetry desde el navegador
- Monitorización de usuarios reales y Web Vitals
- Correlación de trazas del frontend y el backend