Web Vitals — это набор метрик, которые помогают оценивать качество пользовательского опыта на веб-странице. Среди них FID (First Input Delay) и INP (Interaction to Next Paint) являются ключевыми показателями интерактивности, однако между ними существуют принципиальные различия, влияющие на методологию измерений и интерпретацию результатов.
Определение: FID измеряет задержку между первой пользовательской интеракцией с веб-страницей (например, клик, нажатие клавиши, тап на сенсорном экране) и моментом, когда браузер начинает обработку обработчика этого события.
Особенности метрики:
Фокус на первой интеракции. FID учитывает исключительно первый ввод, игнорируя все последующие действия пользователя. Это делает его полезным для оценки первоначальной отзывчивости страницы после загрузки.
Измеряется в миллисекундах (ms). Чем меньше FID, тем быстрее страница реагирует на пользовательский ввод. Рекомендуемые значения:
Зависимость от блокирующих скриптов. Любой JavaScript, выполняющийся в момент первой интеракции, напрямую увеличивает FID, так как браузер не может обработать событие, пока скрипт блокирует поток основного потока (main thread).
Пример ситуации, влияющей на FID: Пользователь пытается нажать кнопку на странице сразу после загрузки. Если в это время выполняется тяжелый скрипт, обработка клика задерживается на 200 ms, что отражается в FID.
Определение: INP измеряет время отклика для всех интеракций пользователя на странице, а не только первую. Это более комплексная метрика, которая оценивает, насколько быстро страница обрабатывает действия пользователя в течение всего жизненного цикла сессии.
Особенности метрики:
Учитывает все интеракции. INP собирает данные по каждому клику, тапу и нажатии клавиши, а затем вычисляет «плохое» или «медленное» взаимодействие по наихудшему или 98-му процентилю задержки.
Показывает реальный пользовательский опыт. Даже если первая интеракция была быстрой, а последующие медленные, INP зафиксирует проблему, чего FID не делает.
Измеряется как время до следующей перерисовки (Next Paint). INP включает не только задержку в обработке события, но и время до визуальной реакции на экране.
Рекомендуемые значения:
Пример ситуации, влияющей на INP: Пользователь кликает на несколько кнопок в приложении. Некоторые клики обрабатываются быстро, другие — с задержкой из-за фоновых задач. INP фиксирует медленную интеракцию и отражает её в общей оценке страницы.
| Характеристика | FID | INP |
|---|---|---|
| Объект измерения | Только первая интеракция | Все интеракции на странице |
| Фокус метрики | Задержка до начала обработки события | Задержка до следующей визуальной реакции |
| Показывает реальный UX | Частично, только начальная интерактивность | Полностью, учитывает всю интерактивность |
| Зависимость от скриптов | Высокая, блокирующие JS увеличивают FID | Высокая, учитывает задержки всех интеракций |
| Статистический метод | Медиана или отдельное событие | 98-й перцентиль всех событий |
| Применимость | Быстрая диагностика первичной отзывчивости | Глубокий анализ реального поведения пользователя |
Для работы с этими метриками в браузере используется библиотека web-vitals:
import { getFID, getINP } from 'web-vitals';
// Отслеживание первой интеракции
getFID(metric => {
console.log('FID:', metric.value, 'ms');
});
// Отслеживание всех интеракций
getINP(metric => {
console.log('INP:', metric.value, 'ms');
});
Дополнительно можно отправлять данные на аналитические платформы для постоянного мониторинга и оптимизации JavaScript, CSS и загрузки ресурсов.
web-vitals
позволяет гибко собирать и анализировать данные для оптимизации
производительности.