First Contentful Paint (FCP) — ключевой показатель
производительности, фиксирующий момент, когда пользователь видит первый
визуальный контент на странице. В библиотеке Web Vitals измерение FCP
реализуется с помощью функции onFCP, которая обеспечивает
точное отслеживание этого события в реальном времени и предоставляет
детализированные метрики через объект FCPMetric.
onFCPФункция onFCP используется для регистрации обратного
вызова, который вызывается, когда браузер зафиксировал первый контентный
элемент на странице. Она имеет следующий сигнатурный вид:
import { onFCP } from 'web-vitals';
onFCP(callback: (metric: FCPMetric) => void, reportAllChanges?: boolean);
Параметры функции:
FCPMetric. Это основной способ получения
данных о FCP.false) — если установлен в true, обратный
вызов будет вызываться при каждом изменении метрики, а не только при
первом измерении. Это полезно для динамических страниц с подгружаемым
контентом.FCPMetricОбъект FCPMetric содержит все данные, необходимые для
аналитики и мониторинга производительности. Его структура:
interface FCPMetric {
name: 'FCP';
value: number;
delta: number;
id: string;
entries: PerformanceEntry[];
rating?: 'good' | 'needs-improvement' | 'poor';
}
Описание полей:
'FCP', указывает тип
метрики.PerformanceEntry, предоставляющий низкоуровневые данные
производительности, включая точное время каждого зарегистрированного
события.'good' (до 1.8 с),
'needs-improvement' (1.8–3 с), 'poor' (более 3
с).onFCPПростой пример регистрации FCP:
import { onFCP } from 'web-vitals';
onFCP((metric) => {
console.log('FCP:', metric.value);
console.log('ID метрики:', metric.id);
console.log('Performance entries:', metric.entries);
if (metric.rating) {
console.log('Рейтинг FCP:', metric.rating);
}
});
В этом примере при срабатывании события FCP в консоль выводятся:
Если страница подгружает контент асинхронно, одно измерение FCP может быть недостаточным. В этом случае можно включить повторные отчёты:
onFCP((metric) => {
console.log('Обновлённый FCP:', metric.value);
}, true);
Параметр true заставляет onFCP отправлять
новые значения при каждом обновлении метрики, что полезно для Single
Page Applications (SPA), где контент может загружаться после
первоначального рендера.
Объект FCPMetric легко интегрируется с другими метриками
Web Vitals, такими как LCP или CLS. Поскольку каждая метрика имеет
уникальный идентификатор и массив entries, их можно
объединять для построения полного профиля производительности
страницы:
import { onFCP, onLCP } from 'web-vitals';
onFCP((fcp) => console.log('FCP:', fcp.value));
onLCP((lcp) => console.log('LCP:', lcp.value));
Такой подход позволяет:
onFCP
помогает выявлять проблемные зависимости.onFCP вместе с объектом FCPMetric
предоставляет детализированный инструмент для анализа пользовательского
опыта. Он фиксирует ключевой момент отображения контента, позволяет
классифицировать производительность и интегрируется с остальными
метриками Web Vitals, что делает его незаменимым для профессионального
мониторинга веб-приложений.