Web Vitals предоставляет стандартизированные метрики для оценки пользовательского опыта на веб-страницах, среди которых особое место занимает INP (Interaction to Next Paint) — показатель интерактивности. INP измеряет задержку отклика интерфейса после действий пользователя и является ключевой метрикой для анализа производительности сайтов, особенно в сценариях с высокой интерактивной нагрузкой.
INPAttribution — это механизм, позволяющий связывать каждое событие взаимодействия с конкретными частями интерфейса или элементами страницы. Он обеспечивает детальную атрибуцию задержек и позволяет разработчикам идентифицировать узкие места в обработке событий.
Отслеживание событий взаимодействия Каждое взаимодействие пользователя с интерфейсом (клики, скроллы, нажатия клавиш) фиксируется с точной привязкой ко времени и DOM-элементу. Библиотека Web Vitals автоматически регистрирует:
click, keydown,
scroll и др.)target), идентифицируемый через
селектор или уникальный идентификаторАнализ задержки отклика INP измеряет разницу
между моментом пользовательского действия и временем, когда браузер
отрисовывает следующий кадр (next paint). INPAttribution
связывает эту задержку с конкретным элементом, что позволяет определить,
какие компоненты страницы создают наибольшие задержки.
Контекстная атрибуция Помимо прямой связи с DOM-элементом, INPAttribution сохраняет контекст взаимодействия:
Это обеспечивает комплексное понимание причин задержки.
Для интеграции INPAttribution используется метод getINP,
который позволяет собирать метрики интерактивности с привязкой к
элементам:
import { getINP } from 'web-vitals';
getINP((inpMetric) => {
console.log('INP value:', inpMetric.value);
console.log('Attribution:', inpMetric.attribution);
});
Объяснение полей:
inpMetric.value — числовое значение INP в
миллисекундах
inpMetric.attribution — объект, содержащий:
eventType — тип событияtarget — CSS-селектор или уникальный идентификатор
элементаnodeId — внутренний идентификатор DOM-узлаtimeStamp — время взаимодействияprocessingStart и processingEnd —
временные метки обработки событияГруппировка по элементам Анализ задержек по отдельным компонентам интерфейса позволяет выявить наиболее проблемные участки. Например, кнопки, формы и интерактивные виджеты с высоким INP требуют оптимизации JavaScript-логики или снижения количества ререндеров.
Кластеризация событий Для страниц с большим количеством интерактивных элементов рекомендуется объединять события по типу или группе компонентов. Это упрощает визуализацию данных и выявление системных проблем.
Анализ долгосрочных метрик Сбор исторических данных INPAttribution позволяет отслеживать влияние изменений интерфейса или новых функциональных модулей на интерактивность и своевременно выявлять деградацию производительности.
attribution вместе с другими Web Vitals
метриками (CLS, LCP) для комплексного анализа
UX.Для удобного анализа атрибуции INP можно использовать:
requestAnimationFrame или
микротаски для точной фиксации рендера.