Как улучшить INP
Вопрос
Объясни, из чего складывается INP и как ты его улучшал бы в большом SPA.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
INP складывается из задержки ввода, времени обработчиков и задержки отрисовки
Задержку ввода создают длинные задачи, которые уже идут в момент клика
Разбивать работу и уступать главный поток: scheduler.yield или setTimeout
Сначала дать визуальный отклик, тяжёлое делать после
Сокращать JS, гидрацию и ререндеры: код-сплиттинг, startTransition, мемоизация, виртуализация
Мерить в поле с атрибуцией, чтобы знать конкретные медленные взаимодействия
Что могут спросить следом
- Чем INP отличается от FID?
- Как startTransition помогает отзывчивости?
- Почему гидрация может портить INP?
Разбор
INP это время от действия пользователя до кадра, где виден результат. Оно состоит из трёх частей. Задержка ввода: в момент клика главный поток уже занят другой задачей, например гидрацией или таймером аналитики. Время обработки: сами обработчики и ререндер. Задержка отрисовки: пересчёт стилей, раскладки и отрисовка большого DOM. В SPA я бы начал с полевых данных с атрибуцией, чтобы видеть, какие взаимодействия медленные. Дальше: разбить длинные задачи и уступать поток через scheduler.yield, сначала показывать отклик, а тяжёлое делать после кадра. В React неважные обновления оборачиваю в startTransition, длинные списки виртуализирую, убираю лишние ререндеры. Уменьшаю JS и сторонние скрипты, тяжёлые вычисления выношу в воркер. Отдельно смотрю на размер DOM, потому что огромное дерево дорого пересчитывать.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Производительность и Web Vitals»
- CLS
- INP
- LCP
- Длинная задача
- Главная причина CLS у картинок
- Состав Core Web Vitals в 2026
- async и defer у скриптов
- Чем INP лучше FID