Функция onFID предназначена для измерения показателя
First Input Delay (FID), который оценивает время
задержки реакции страницы на первое взаимодействие пользователя. В
контексте legacy-версий библиотеки Web Vitals она реализована как
основной способ отслеживания этого показателя на страницах, где не
используется современный API Performance Observer с метриками типа
first-input.
onFID отслеживает первое событие ввода,
которое пользователь инициирует на странице: клик, нажатие клавиши или
касание на сенсорном экране. Функция измеряет промежуток времени между
моментом, когда браузер зарегистрировал событие, и моментом, когда
браузер фактически начал обработку этого события.
Порядок действий функции:
Инициализация слушателей событий ввода (mousedown,
keydown, touchstart,
pointerdown).
Фильтрация событий для выбора первого события, которое не было обработано заранее.
Рассчет задержки:
FID = время начала обработки события - время его регистрацииВызов переданного callback-функции с объектом метрики:
{
name: 'FID',
value: <число в миллисекундах>,
entries: [ PerformanceEventTiming ]
}Legacy-версия Web Vitals использует Performance API,
но с учётом того, что не все старые браузеры поддерживают
PerformanceEventTiming. В таких случаях библиотека
возвращает FID с приблизительной оценкой или вовсе игнорирует метрику,
если событие невозможно корректно отследить.
Важно учитывать:
Простейший пример вызова onFID:
import { onFID } from 'web-vitals';
onFID(metric => {
console.log('FID:', metric.value);
console.log('События:', metric.entries);
});
Разбор объекта metric:
metric.name — имя метрики ('FID').metric.value — численное значение задержки в
миллисекундах.metric.entries — массив объектов
PerformanceEventTiming, содержащих подробную информацию о
событии, включая startTime, processingStart,
duration.Реальная ценность FID заключается в интеграции с системами аналитики и мониторинга производительности:
onFID(metric => {
fetch('/analytics', {
method: 'POST',
body: JSON.stringify({
metricName: metric.name,
metricValue: metric.value,
timestamp: Date.now(),
}),
headers: { 'Content-Type': 'application/json' },
});
});
Рекомендации по отправке:
navigator.sendBeacon для надежной отправки
данных перед выгрузкой страницы.В legacy-версии Web Vitals onFID часто используется
вместе с onCLS и onLCP. Порядок регистрации
слушателей критичен:
onFID следует вызывать как можно
раньше в скрипте, чтобы гарантировать регистрацию первого ввода
до других обработчиков.Современные версии Web Vitals используют
PerformanceObserver с типом first-input:
Legacy-реализация же ограничивается фиксированным первым событием и применяет полифиллы для старых браузеров. Несмотря на это, она остается важной для совместимости с устаревшими проектами, где невозможно внедрить новые API.
PerformanceEventTiming и
предусматривать fallback.Функция onFID обеспечивает ключевую метрику
интерактивности на старых проектах и позволяет собрать важные
данные о восприятии страницы пользователем даже без современного API. Ее
правильная интеграция дает объективную картину задержек реакции
интерфейса.