INP (Interaction to Next Paint) — это метрика, которая измеряет задержку между взаимодействием пользователя с сайтом (клик, тап, нажатие клавиши) и отрисовкой следующего кадра в браузере. Низкий INP обеспечивает мгновенную обратную связь и воспринимается как высокая отзывчивость интерфейса. Оптимизация INP требует контроля за выполнением JavaScript, избегания блокировки основного потока и сокращения времени обработки событий.

Что такое INP и почему это важно

INP стал частью Core Web Vitals в 2024 году, заменив FID (First Input Delay). Метрика оценивает всю цепочку обработки взаимодействия, а не только задержку ввода. INP учитывает время от первого события до завершения отрисовки следующего кадра. Целевое значение — ниже 200 миллисекунд. Превышение приводит к ощущению «зависания» интерфейса.

Как измерить INP

INP можно измерить с помощью инструментов Google: PageSpeed Insights, Search Console (отчет Core Web Vitals) и Chrome DevTools. В полевых данных метрика агрегируется по 75-му перцентилю для всех пользовательских сессий. Для лабораторных тестов подходит симуляция в DevTools или WebPageTest.

Инструменты для измерения INP
Инструмент Тип данных Точность
Лабораторные и полевые Высокая
Лабораторные Точная диагностика
Полевые Агрегированная по сайту

Основные причины высокого INP

Высокий INP обычно вызван длительным выполнением JavaScript в основном потоке браузера. Типичные проблемы: тяжелые обработчики событий, неоптимизированные анимации, частые перерисовки DOM и микрозадачи (например, Promises). Блокировка основного потока на время более 50 мс уже создает заметную задержку.

Как оптимизировать INP: практические методы

Оптимизация начинается с анализа самых медленных взаимодействий через DevTools (вкладка Performance). Разбейте длинные задачи на меньшие с помощью или . Перенесите тяжелые вычисления в Web Workers. Минимизируйте работу в обработчиках событий — делегируйте события, используйте пассивные слушатели для скролла.

Типовые ошибки и ограничения оптимизации

Распространенная ошибка — попытка оптимизировать INP без полевых данных. Лабораторные тесты не всегда отражают реальные устройства пользователей. Другая проблема — избыточная оптимизация редких взаимодействий вместо частых. Учтите, что на слабых устройствах INP всегда выше, и это нормально.

Чек-лист по оптимизации INP

— Анализируйте полевыми данными из Search Console.
— Выявляйте самые частые взаимодействия с высоким INP.
— Разделяйте длинные задачи на асинхронные chunks.
— Используйте Web Workers для тяжелой логики.
— Тестируйте на средних и слабых устройствах.