INP (Interaction to Next Paint) — новая метрика, добавленная в Core Web Vitals в марте 2024. Заменила старый FID. INP измеряет, насколько быстро сайт откликается при взаимодействии пользователя (клик, тап, клавиатура). Метрика напрямую влияет на UX, и Google учитывает её в ранжировании.
Почему вместо FID INP
FID работал с 2018 и измерял только первое взаимодействие на странице. Этого недостаточно — пользователь взаимодействует много раз, и второе-третье могут быть медленными.
INP измеряет все взаимодействия за время жизни страницы и берёт худшие (75-перцентиль). Так Google видит реальный уровень UX.
Значения INP
Google: Good — менее 200 мс. Хорошо. Needs Improvement — 200-500 мс. Можно лучше. Poor — больше 500 мс. Заметная медлительность, штраф ранжированию.
Главные факторы INP
Первое — время выполнения JavaScript. Если функция работает 200ms+, INP плохой. Главное: большие JS-файлы, тяжёлые вычисления, много DOM-обновлений.
Второе — рендер-блокировка. Если main thread занят, браузер не может ответить. Long Tasks (50ms+) — главный враг INP.
Третье — third-party JS. Analytics, Pixel, chat — всё добавляет JS. Чем больше, тем хуже INP.
Стратегии улучшения
1. JS-оптимизация: code splitting, tree shaking, dynamic import.
2. Разбиение long tasks. Функция 50+ мс — разбить через setTimeout, requestIdleCallback, scheduler.yield.
3. Web Workers — тяжёлые вычисления в отдельный поток. Main thread свободен для взаимодействий.
Управление third-party
Только нужные third-party теги. Defer/async чтобы не блокировали.
Лучше — server-side integration. GA4 через GTM Server Container, Facebook Conversions API. Сложнее, но эффективно.
Измерение INP
Реальные значения через Chrome User Experience Report (CrUX) — в GSC \"Core Web Vitals\". Lab tests (Lighthouse, PageSpeed) — симулированные.
Chrome DevTools Performance panel — для отладки.
INP и SPA
В SPA INP обычно хуже — client-side routing и динамика увеличивают JS. React, Vue — переход страниц требует большой JS-работы.
Оптимизация: React Server Components, Vue Streaming. Сложно, но снижает JS-нагрузку.
Сайт.uz INP
INP Сайт.uz — 120ms, зелёная зона. Результат PHP с полным HTML и минимума JS. 95% взаимодействий менее 150ms.
Это сигнал Google и буст ранжирования за прохождение Core Web Vitals.