INP (Interaction to Next Paint) измеряет время отклика страницы на пользовательские взаимодействия и фиксирует задержку до следующего визуального обновления. Этот показатель особенно важен для оценки реальной отзывчивости интерфейса.
web-vitals позволяет программно отслеживать INP. Пример
кода:import { getINP } from 'web-vitals';
getINP((metric) => {
console.log('INP value:', metric.value);
console.log('INP entries:', metric.entries);
});
metric.value — числовое значение задержки в
миллисекундах.metric.entries — массив событий
EventTiming, которые вызвали задержку.Chrome DevTools Performance Panel Для глубокой отладки INP следует использовать вкладку Performance:
Типичные причины высокой задержки:
Long Tasks) > 50 мс.requestAnimationFrame.Использование Event Timing API для диагностики:
new PerformanceObserver((list) => {
for (const entry of list.getEntries()) {
if (entry.entryType === 'event') {
console.log('Event type:', entry.name);
console.log('Duration:', entry.duration);
console.log('StartTime:', entry.startTime);
}
}
}).observe({ type: 'event', buffered: true });
entry.name — название события (click,
keydown, input).entry.startTime — момент начала события относительно
загрузки страницы.entry.duration — задержка обработки события, напрямую
влияющая на INP.Запись трассировки (Tracing)
.json файл трассировки для анализа.Детальный анализ с Long Tasks
В панели Main Thread ищутся задачи длительностью >50 мс.
Каждое событие, связанное с INP, можно разложить на:
Выявляются блокировки, которые задерживают визуальный отклик.
Применение фильтров по Event Timing
click,
keydown).setTimeout
или requestIdleCallback.Можно включить экспериментальный флаг Web Vitals in DevTools:
chrome://flags/#web-vitals-in-devtools.Это позволяет сопоставить значения INP с конкретными событиями и визуальными кадрами, ускоряя процесс оптимизации.
Хотя INP измеряется автоматически, глубокая отладка с использованием DevTools и Event Timing позволяет выявлять конкретные узкие места и принимать целевые меры для улучшения отзывчивости страницы.