Interaction to Next Paint (INP)

Fecha de publicación: 6 de mayo de 2022; última actualización: 9 de septiembre de 2025

Browser Support

  • Chrome: 96.
  • Edge: 96.
  • Firefox Technology Preview: supported.
  • Safari: not supported.

Source

Los datos de uso de Chrome muestran que el 90% del tiempo que un usuario pasa en una página se dedica después de que se carga. Por lo tanto, es importante medir cuidadosamente la capacidad de respuesta durante todo el ciclo de vida de la página. Esto es lo que evalúa la métrica del INP.

Una buena capacidad de respuesta significa que una página responde rápidamente a las interacciones. Cuando una página responde a una interacción, el navegador presenta comentarios visuales en el siguiente fotograma que renderiza. Los comentarios visuales te indican si, por ejemplo, se está agregando un elemento que agregas a un carrito de compras en línea, si se abrió un menú de navegación para dispositivos móviles, si el servidor está autenticando el contenido de un formulario de acceso, etcétera.

Algunas interacciones tardan más que otras de forma natural, pero, en el caso de las interacciones especialmente complejas, es importante presentar rápidamente algunos comentarios visuales iniciales para indicarle al usuario que algo está sucediendo. El próximo fotograma que pintará el navegador es la oportunidad más temprana para hacerlo.

Por lo tanto, el objetivo del INP no es medir todos los efectos eventuales de una interacción (como las recuperaciones de red y las actualizaciones de la IU de otras operaciones asíncronas), sino el tiempo durante el que se bloquea la siguiente pintura. Si se retrasa la respuesta visual, es posible que los usuarios tengan la impresión de que la página no responde lo suficientemente rápido, por lo que se desarrolló el INP para ayudar a los desarrolladores a medir esta parte de la experiencia del usuario.

En el siguiente video, el ejemplo de la derecha proporciona comentarios visuales inmediatos que indican que se está abriendo un acordeón. En el ejemplo de la izquierda, se muestra una mala capacidad de respuesta y cómo puede generar experiencias negativas para los usuarios.

Ejemplo de capacidad de respuesta deficiente y buena. A la izquierda, las tareas largas impiden que se abra el acordeón. Esto hace que el usuario haga clic varias veces, pensando que la experiencia no funciona. Cuando el subproceso principal se pone al día, procesa las entradas retrasadas, lo que provoca que el acordeón se abra y cierre de forma inesperada. A la derecha, una página más responsiva abre el acordeón rápidamente y sin problemas.

En esta guía, se explica cómo funciona el INP, cómo medirlo y se proporcionan recursos para mejorarlo.

¿Qué es el INP?

El INP es una métrica que evalúa la capacidad de respuesta general de una página ante las interacciones del usuario observando la latencia de todas las interacciones de clic, presión y teclado que se producen durante la visita del usuario a la página. El valor final de la INP es la interacción más larga observada, sin tener en cuenta los valores atípicos.

Detalles sobre cómo se calcula el INP

El INP se calcula observando todas las interacciones que se realizan con una página. En la mayoría de los sitios, la interacción con la peor latencia se registra como INP.

Sin embargo, en el caso de las páginas con una gran cantidad de interacciones, los problemas aleatorios pueden generar una interacción con una latencia inusualmente alta en una página que, de otro modo, responde bien. Cuantas más interacciones se produzcan en una página determinada, más probable será que esto suceda.

Para brindar una mejor medición de la capacidad de respuesta real de las páginas con una gran cantidad de interacciones, ignoramos la interacción más alta por cada 50 interacciones. La gran mayoría de las experiencias en la página no tienen más de 50 interacciones, por lo que, con mayor frecuencia, se informa la peor interacción. Luego, se informa el percentil 75 de todas las vistas de página como de costumbre, lo que quita aún más los valores atípicos para proporcionar un valor que la gran mayoría de los usuarios experimentan o mejoran.

Una interacción es un grupo de controladores de eventos que se activan durante el mismo gesto lógico del usuario. Por ejemplo, las interacciones de "toque" en un dispositivo con pantalla táctil incluyen varios eventos, como pointerup, pointerdown y click. Una interacción puede estar impulsada por JavaScript, CSS, controles integrados del navegador (como elementos de formulario) o una combinación de estos.

La latencia de una interacción consta de la duración más larga de un grupo de controladores de eventos que impulsan la interacción, desde el momento en que el usuario comienza la interacción hasta el momento en que el navegador puede volver a pintar un fotograma. En casos excepcionales, es posible que no haya ningún fotograma para pintar, pero la interacción finaliza cuando el navegador podría pintar un fotograma.

¿Qué es una buena puntuación de INP?

Es difícil asignar etiquetas como "buena" o "mala" a una métrica de capacidad de respuesta. Por un lado, quieres fomentar prácticas de desarrollo que prioricen una buena capacidad de respuesta. Por otro lado, debes tener en cuenta que existe una variabilidad considerable en las capacidades de los dispositivos que usan las personas para establecer expectativas de desarrollo alcanzables.

Para asegurarte de ofrecer experiencias del usuario con buena capacidad de respuesta, un buen umbral para medir es el percentil 75 de las cargas de páginas registradas en el campo, segmentadas entre los dispositivos móviles y las computadoras de escritorio:

  • Un INP inferior o igual a 200 milisegundos significa que una página tiene una buena capacidad de respuesta.
  • Un INP superior a 200 milisegundos y menor o igual a 500 milisegundos significa que la capacidad de respuesta de una página necesita mejorar.
  • Un INP superior a 500 milisegundos significa que la página tiene una capacidad de respuesta deficiente.
Los valores de INP buenos son de 200 milisegundos o menos, los valores deficientes son superiores a 500 milisegundos y los valores intermedios deben mejorarse.
Los valores de INP buenos son de 200 milisegundos o menos. Los valores deficientes son superiores a 500 milisegundos.

¿Qué incluye una interacción?

Un diagrama que representa una interacción en el subproceso principal. El usuario ingresa datos mientras se ejecutan tareas de bloqueo. La entrada se retrasa hasta que se completan esas tareas, después de lo cual se ejecutan los controladores de eventos pointerup, mouseup y click, y luego se inicia el trabajo de renderización y pintura hasta que se presenta el siguiente fotograma.
El ciclo de vida de una interacción. Se produce una demora en la entrada hasta que comienzan a ejecutarse los controladores de eventos, lo que puede deberse a factores como tareas prolongadas en el subproceso principal. Luego, se ejecutan las devoluciones de llamada del controlador de eventos de la interacción y se produce una demora antes de que se presente el siguiente fotograma.

El principal impulsor de la interactividad suele ser JavaScript, aunque los navegadores proporcionan interactividad a través de controles no potenciados por JavaScript, como casillas de verificación, botones de selección y controles potenciados por CSS.

Como objetivos del INP, solo se observan los siguientes tipos de interacciones:

  • Hacer clic con un mouse
  • Presionar un dispositivo con pantalla táctil
  • Presionar una tecla en un teclado físico o en pantalla

Las interacciones se producen en el documento principal o en los elementos iframe incorporados en el documento, por ejemplo, cuando se hace clic en reproducir en un video incorporado. Los usuarios finales no sabrán qué hay en un iframe o no, por lo que se necesita el INP dentro de los iframes para medir la experiencia del usuario en la página de nivel superior. Dado que las APIs web de JavaScript no tienen acceso al contenido de los elementos iframe, esto puede mostrar una diferencia entre CrUX y RUM.

Las interacciones pueden constar de varios eventos. Por ejemplo, una pulsación de tecla incluye los eventos keydown, keypress y keyup. Las interacciones de presión contienen eventos pointerup y pointerdown. El evento con la duración más larga dentro de la interacción es el que contribuye a la latencia total de la interacción.

Representación de una interacción más compleja que contiene dos interacciones. El primero es un evento mousedown, que produce un fotograma antes de que se suelte el botón del mouse, lo que inicia más trabajo hasta que se presenta otro fotograma como resultado.
Representación de una interacción con varios controladores de eventos. La primera parte de la interacción recibe una entrada cuando el usuario presiona un botón del mouse. Sin embargo, antes de soltar el botón del mouse, se presenta un fotograma. Cuando el usuario suelta el botón del mouse, se deben ejecutar otra serie de controladores de eventos antes de que se presente el siguiente fotograma.

Como se muestra en el diagrama, la duración del procesamiento del INP incluye todas las devoluciones de llamada del controlador de eventos dentro de ese fotograma. Esto hace que la demora de entrada sea el tiempo anterior a que se controle cualquier devolución de llamada para una interacción, la duración del procesamiento el tiempo para que se ejecuten todas las devoluciones de llamada y la demora de presentación el tiempo posterior a que se ejecutan las devoluciones de llamada hasta que se presenta el fotograma en la pantalla del usuario.

El INP de la página se calcula cuando el usuario la abandona. El resultado es un solo valor que representa la capacidad de respuesta general de la página a lo largo de su ciclo de vida. Un INP bajo significa que una página respondió de forma confiable a las entradas del usuario.

¿En qué se diferencia el INP del First Input Delay (FID)?

El INP es la métrica sucesora del retraso de primera entrada (FID). Si bien ambas son métricas de capacidad de respuesta, el FID solo medía el retraso de entrada de la primera interacción en una página. El INP mejora el FID, ya que observa todas las interacciones en una página, desde el retraso de entrada hasta el tiempo que se tarda en ejecutar los controladores de eventos y, finalmente, hasta que el navegador pinta el siguiente fotograma.

Estas diferencias significan que el INP y el FID son diferentes tipos de métricas de respuesta. Mientras que el FID era una métrica de capacidad de respuesta de carga diseñada para evaluar la primera impresión de la página en el usuario, el INP es un indicador más confiable de la capacidad de respuesta general, independientemente del momento en que se producen las interacciones en la vida útil de una página.

¿Qué sucede si no se informa ningún valor del INP?

Es posible que una página no muestre ningún valor del INP. Esto puede suceder por varios motivos, entre los que se incluyen los siguientes:

  • La página se cargó, pero el usuario nunca hizo clic, presionó ni tocó una tecla en su teclado.
  • Se cargó la página, pero el usuario interactuó con ella usando gestos que no se miden, como desplazarse o colocar el cursor sobre los elementos.
  • Un bot, como un rastreador de búsqueda o un navegador sin interfaz gráfica, accede a la página sin que se haya creado una secuencia de comandos para interactuar con ella.

Cómo medir el INP

El INP se puede medir tanto en el campo como en el laboratorio, en la medida en que puedas simular interacciones realistas del usuario.

En el campo

Lo ideal es que tu recorrido para optimizar el INP comience con los datos de campo. En el mejor de los casos, los datos de campo del Monitoreo de usuarios reales (RUM) te proporcionarán no solo el valor del INP de una página, sino también datos contextuales que destacan qué interacción específica fue responsable del valor del INP, si la interacción ocurrió durante la carga de la página o después, el tipo de interacción (clic, presión de tecla o presión) y otros tiempos valiosos que pueden ayudarte a identificar qué parte de la interacción afectaba la capacidad de respuesta.

Si tu sitio web cumple con los requisitos para incluirse en el Informe sobre la experiencia del usuario en Chrome (CrUX), puedes obtener rápidamente datos de campo sobre el INP a través de CrUX en PageSpeed Insights (y otras Métricas web esenciales). Como mínimo, puedes obtener una imagen a nivel del origen del INP de tu sitio web, pero, en algunos casos, también puedes obtener datos a nivel de la URL.

Sin embargo, si bien CrUX puede indicarte si hay un problema, no puede decirte qué lo causó. Una solución de RUM puede ayudarte a descubrir más detalles sobre las páginas, los usuarios o las interacciones de los usuarios que experimentan problemas de capacidad de respuesta. Poder atribuir el INP a interacciones individuales evita las conjeturas y el desperdicio de esfuerzos.

En el laboratorio

Lo ideal es que comiences a realizar pruebas en el laboratorio una vez que tengas datos de campo que sugieran que una página tiene interacciones lentas. Los datos de campo harán que el trabajo de reproducir interacciones problemáticas en el lab sea una tarea mucho más sencilla.

Sin embargo, es muy posible que no tengas datos de campo. Si bien la INP se puede medir en algunas herramientas de laboratorio, el valor de INP resultante para una página durante las pruebas de laboratorio dependerá de las interacciones que se realicen durante el período de medición. Los comportamientos de los usuarios pueden ser impredecibles y muy variables, lo que significa que las pruebas en el laboratorio pueden no revelar interacciones problemáticas de la misma manera que los datos de campo. Además, algunas herramientas de Lab no informarán el INP de una página porque solo observan la carga de una página sin ninguna interacción. En esos casos, el Tiempo de bloqueo total (TBT) puede ser una métrica de proxy razonable para el INP, pero no es un sustituto del INP en sí.

Si bien las herramientas de laboratorio tienen limitaciones a la hora de evaluar el INP de una página, existen algunas estrategias para reproducir interacciones lentas en el laboratorio. Las estrategias incluyen seguir los flujos de usuarios comunes y probar las interacciones a lo largo del proceso, así como interactuar con la página a medida que se carga (cuando el subproceso principal suele estar más ocupado) para identificar las interacciones lentas durante esa parte crucial de la experiencia del usuario.

Cómo medir el INP en JavaScript

Para medir el INP en JavaScript, debes medir los tiempos de los eventos de todas las interacciones y, luego, tomar el percentil 98 de todas estas interacciones en la descarga de la página. Puedes consultar el código fuente de la biblioteca de JavaScript de web vitals, que contiene una implementación de referencia sobre cómo se calcula el INP.

En la mayoría de los casos, el valor actual del INP en el momento en que se descarga la página es el valor final del INP para esa página, pero hay algunas excepciones importantes, como se indica en la siguiente sección. La biblioteca de JavaScript de web vitals tiene en cuenta estos factores en la mayor medida posible, dentro de las limitaciones de las APIs web.

Diferencias entre la métrica y la API

  • Las entradas de event inferiores a 104 milisegundos no se registran de forma predeterminada con los observadores de rendimiento. Este valor predeterminado se puede cambiar cuando se registra un observador de rendimiento con el parámetro durationThreshold, pero incluso este tiene un valor mínimo de 16 milisegundos. Por este motivo, se recomienda observar también la entrada first-input, que también es una entrada de Event Timing, pero se garantiza que se puede observar incluso cuando su duración es inferior a durationThreshold. Esto ayuda a garantizar que las páginas con interacciones siempre registren algún valor del INP.
  • Técnicamente, para calcular los percentiles de forma perfecta, es necesario mantener todas las muestras en la memoria, lo que puede resultar costoso. Sin embargo, puedes aproximar los percentiles, especialmente los muy altos, como el p98, con solo mantener una pequeña lista de las peores N interacciones. 10 es una opción común.
  • Si se restablece una página desde la caché atrás/adelante, su valor del INP debe restablecerse a cero, ya que los usuarios experimentan esto como una visita a la página distinta.
  • La API no registra entradas de event para las interacciones que ocurren dentro de los iframes, pero la métrica sí lo hace, ya que forman parte de la experiencia del usuario en la página. Esto puede mostrarse como una diferencia entre CrUX y RUM. Para medir correctamente el INP, debes tenerlos en cuenta. Los subframes pueden usar la API para informar sus entradas de event-timing al frame principal.

Además de estas excepciones, el INP tiene cierta complejidad adicional debido a que mide todo el ciclo de vida de una página:

  • Es posible que los usuarios mantengan una pestaña abierta durante un tiempo muy prolongado: días, semanas o meses. De hecho, es posible que un usuario nunca cierre una pestaña.
  • En los sistemas operativos para dispositivos móviles, los navegadores no suelen ejecutar devoluciones de llamada de descarga de página para las pestañas en segundo plano, lo que dificulta informar el valor "final".

Para controlar estos casos, el INP se debe informar cada vez que una página se ejecute en segundo plano, además de cada vez que se descargue (el evento visibilitychange abarca ambos casos). Luego, los sistemas de análisis que reciban estos datos deberán calcular el valor final del INP en el backend.

En lugar de memorizar y analizar todos estos casos por tu cuenta, los desarrolladores pueden usar la biblioteca de JavaScript web-vitals para medir el INP, que tiene en cuenta todo lo mencionado anteriormente, excepto el caso de iframe:

import {onINP} from 'web-vitals';

// Measure and log INP in all situations
// where it needs to be reported.
onINP(console.log);

Cómo mejorar el INP

Hay disponible una colección de guías para optimizar el INP que te ayudarán a identificar las interacciones lentas en el campo y a usar los datos del lab para identificar las causas y optimizarlas.

Registro de cambios

En ocasiones, se descubren errores en las APIs que se usan para medir las métricas y, a veces, en las definiciones de las métricas mismas. Como resultado, a veces se deben realizar cambios, y estos pueden aparecer como mejoras o regresiones en tus informes y paneles internos.

Para ayudarte a administrar esto, todos los cambios en la implementación o la definición de estas métricas se mostrarán en este Registro de cambios.

Si tienes comentarios sobre estas métricas, envíalos al grupo de Google web-vitals-feedback.

Ponga a prueba sus conocimientos

¿Cuál es el objetivo principal de la métrica INP?

Medir el tiempo que tarda en mostrarse el primer contenido de una página
Incorrecto: Describe el First Contentful Paint
Cuantificar la estabilidad visual de una página y minimizar los cambios de diseño inesperados
Incorrecto: Describe el cambio de diseño acumulado
Evaluar el tiempo que tarda una página en ser totalmente interactiva
Incorrecta: Se relaciona con el Tiempo hasta la interactividad, pero el INP se enfoca específicamente en la capacidad de respuesta a la entrada del usuario.
Minimizar el tiempo que transcurre desde que un usuario inicia una interacción hasta que se procesa el siguiente fotograma, para todas o la mayoría de las interacciones que inicia el usuario
Correcto.

¿Cuáles de los siguientes tipos de interacciones se observan para calcular el INP? (Selecciona todas las opciones que correspondan).

Hacer clic con un mouse
Correcto.
Desplazarse por la página con la rueda del mouse o el panel táctil
Incorrecto: El INP no tiene en cuenta el desplazamiento
Presionar una pantalla táctil
Correcto.
Colocar el cursor del mouse sobre los elementos
Incorrecto: El INP no tiene en cuenta el desplazamiento del cursor.
Presionar una tecla en un teclado
Correcto.
Acercar o alejar la página
Incorrecto: El INP no tiene en cuenta el zoom

¿Cómo se define la "latencia" de una interacción para el INP?

Es la cantidad de tiempo que el navegador tarda en procesar los controladores de eventos de una interacción.
Incorrecto: Solo tiene en cuenta la duración del procesamiento, no la demora de entrada ni el tiempo para presentar el siguiente fotograma.
Es el tiempo promedio que tardan todas las interacciones de una página en producir una respuesta visual.
Incorrecto: La INP se enfoca en la interacción más larga, no en el promedio.
Es el tiempo que tarda el navegador en comenzar a procesar los controladores de eventos asociados con una interacción.
Incorrecto: Solo tiene en cuenta la demora de entrada, no el tiempo de procesamiento y renderización.
Es el tiempo que transcurre desde el inicio de la interacción hasta el momento en que se presenta por completo el siguiente fotograma.
Correcto.

¿Cuál es la diferencia entre el INP y el FID?

El INP mide el tiempo que tarda en mostrarse el primer contenido de una página, mientras que el FID mide la capacidad de respuesta a la entrada del usuario.
Incorrecta: Describe el First Contentful Paint, no el INP.
El INP considera la duración completa de todas las interacciones, mientras que el FID solo mide el retraso de entrada de la primera interacción.
Correcto.
La INP y el FID miden diferentes marcas de tiempo en las que una página se vuelve interactiva.
Incorrecto: El INP y el FID son medidas de la rapidez con la que la página responde a las interacciones, independientemente de cuándo se produzcan.
No hay diferencia. El INP y el FID son solo dos nombres diferentes para la misma métrica.
Incorrecto: Tienen definiciones distintas.

¿En qué circunstancias es posible que los datos del INP no estén disponibles para una página en herramientas como PageSpeed Insights?

La página usa una biblioteca de medición del rendimiento personalizada que no informa datos del INP.
Incorrecto: El INP se mide automáticamente con las APIs de la plataforma web y no depende de que las páginas informen su rendimiento a través de bibliotecas personalizadas.
No hay suficientes datos de interacción de los usuarios de Chrome para calcular un valor significativo del INP en el conjunto de datos de CrUX.
Correcto.
Los usuarios interactuaron con la página solo a través del desplazamiento y el desplazamiento del cursor, que no se consideran para el INP.
Correcto.
La página se creó con un framework que se optimiza automáticamente para el INP, por lo que no es necesario informarlo.
Incorrecto: Los frameworks pueden ayudar con el INP, pero la métrica sigue siendo pertinente y se informa si hay datos disponibles.

¿Cuál es la estrategia más eficaz para reproducir interacciones lentas en un entorno de laboratorio?

Simular un dispositivo de alta gama con una conexión de red lenta y poco confiable para crear condiciones desafiantes
Incorrecto: Si bien la red puede influir, es más probable que las capacidades del dispositivo expongan interacciones lentas.
Probar las interacciones solo después de que la página se haya cargado por completo y esté inactiva
Incorrecto: Es posible que se pierdan las interacciones que son lentas durante la carga.
Interactuar con la página durante la carga y seguir los flujos de usuarios comunes para identificar posibles cuellos de botella
Correcto.
Enfocarse en interacciones complejas y casos extremos que es poco probable que la mayoría de los usuarios experimenten
Incorrecto: Los flujos de usuarios comunes son más relevantes para identificar problemas típicos del INP.

Gemini 1.5 generó este cuestionario, y personas lo revisaron. Comparte tus comentarios