represents a distinct facet of the user experience, is measurable in the field, and reflects the real-world experience of a critical user-centric outcome. @guaca #BCNWebPerf
de texto más grande visible dentro del viewport. ▹ <img> ▹ <image> dentro de un <svg> ▹ Atributo “poster” de un tag <video> ▹ Una imagen de background que se carga con url() ▹ Elementos a nivel de bloque que contienen nodos de texto @guaca #BCNWebPerf
de cambio de diseño para cada cambio de diseño inesperado que se produce durante toda la vida útil de una página. @guaca #BCNWebPerf fracción de impacto * fracción de distancia
la interacción de acciones discretas: ▹ Clic ▹ Tap ▹ Presionar una tecla Es una métrica que no podemos medir en datos de laboratorio. Mide el tiempo desde que un usuario interactúa por primera vez con una página hasta que el navegador puede comenzar a procesar esa interacción. @guaca #BCNWebPerf
a las interacciones que un usuario hace con una página. ▹ Objetivo: garantizar que el tiempo desde que se inicia una interacción hasta que se pinta el siguiente frame sea lo más corto posible. ▹ Reporta un valor por debajo del cual ocurrieron todas o casi todas las interacciones. @guaca #BCNWebPerf
el usuario. ▹ Reporta cuándo el hilo principal puede empezar a procesar la interacción. ▹ Todas las interacciones durante toda la vida útil de la página. ▹ Es perceptible para el usuario. ▹ Reporta el valor de la interacción más larga*. INP vs FID * Percentil 100 si hay < 50 interacciones, percentil 98 o 99 si hay > 50 interacciones @guaca #BCNWebPerf
métrica de campo - no está disponible en herramientas de synthetic monitoring. ▹ CrUX registra datos del INP desde febrero de 2022. ▹ PageSpeed Insights muestra datos de INP. ▹ No está disponible en Search Console. ▹ Empieza a estar disponible en algunas herramientas RUM. @guaca #BCNWebPerf
install web-vitals ▪ Como <script> desde un CDN ▸ Enviar los datos a: ▪ Google Analytics (UA/GA4) ▪ Google Tag Manager bit.ly/webvitals-js bit.ly/webvitals-report @guaca #BCNWebPerf ▹ Librería web-vitals.js
Dividir una long task en varias tasks. ▹ Usar Scheduler API para priorizar tareas críticas y diferir las no críticas. ▹ Valorar el usar isInputPending para comprobar si hay algún input del usuario pendiente de atender. Identificar posibles tasks que estén provocando un elevado input delay puede ayudarnos a reducir el INP.
a una interacción se completan lo más rápido posible. ¿Cómo optimizar el INP? Minimizar el Processing time @guaca #BCNWebPerf ▹ Limitar el código que se ejecuta a la lógica necesaria para actualizar el siguiente frame. ▹ Diferir todo lo demás a una tarea posterior.
a tener. ¿Cómo optimizar el INP? Minimizar el Presentation delay @guaca #BCNWebPerf ▹ Evitar el uso de requestAnimationFrame() para tareas que no están relacionadas con el renderizado. ▹ Cuidado con el uso de async/await. ▹ Cuidado con el uso de ResizeObserver.
respuesta. ▹ Mide el tiempo por debajo del cual han sucedido (casi) todas las interacciones. ▹ Está previsto que pueda sustituir al FID como CWV. ▹ Mide y optimiza desde ya. @guaca #BCNWebPerf