Для измерения ключевых метрик пользовательского опыта в JavaScript используется библиотека Web Vitals, предоставляемая Google. Основной способ подключения — через npm или CDN:
// Через npm
import { getCLS, getFID, getLCP, getFCP, getTTFB } from 'web-vitals';
// Через CDN
<script src="https://unpkg.com/web-vitals/dist/web-vitals.iife.js"></script>
После подключения доступны функции для измерения каждой метрики: CLS, FID, LCP, FCP, TTFB.
Каждая из этих метрик измеряется отдельной функцией, которая принимает колбэк для обработки результатов.
console для вывода метрикДля отладки и мониторинга в процессе разработки часто применяют консоль браузера. Пример кода для всех основных метрик:
import { getCLS, getFID, getLCP, getFCP, getTTFB } from 'web-vitals';
function logMetric(metric) {
console.log(`[Web Vitals] ${metric.name}:`, metric.value, metric);
}
getCLS(logMetric);
getFID(logMetric);
getLCP(logMetric);
getFCP(logMetric);
getTTFB(logMetric);
В этом примере:
delta, id, entries, которые
позволяют глубже исследовать события, влияющие на метрику.Каждая метрика передает в колбэк объект с ключевыми свойствами:
Пример анализа CLS через консоль:
getCLS((metric) => {
console.log('CLS:', metric.value);
metric.entries.forEach((entry) => {
console.log('Layout shift:', entry.startTime, entry.sources);
});
});
Это позволяет увидеть не только итоговое значение, но и конкретные элементы, вызвавшие сдвиг макета.
Для удобства отладки можно применять:
console.table() — отображение массива метрик или
событий в виде таблицы.console.group() / console.groupEnd() —
структурирование вывода по группам метрик.console.warn() / console.error() —
выделение проблемных значений, превышающих пороговые лимиты.Пример с группировкой:
getLCP((metric) => {
console.group(`LCP metric (${metric.id})`);
console.log('Value:', metric.value);
console.table(metric.entries);
console.groupEnd();
});
Для разработки важно сразу видеть метрики, которые выходят за рекомендуемые пороги:
Пример условного вывода в консоль с предупреждением:
getFID((metric) => {
if (metric.value > 100) {
console.warn(`FID превышен: ${metric.value} мс`);
} else {
console.log(`FID в норме: ${metric.value} мс`);
}
});
console для анализа паттерновПри комплексной разработке метрики Web Vitals можно логировать на разных этапах:
С помощью консоли легко отслеживать, какие изменения кода или новые компоненты вызывают ухудшение показателей производительности.
Консоль можно комбинировать с Performance API:
getLCP((metric) => {
console.log('LCP:', metric.value);
console.log('Performance marks:', performance.getEntriesByType('mark'));
});
Это позволяет сопоставить события mark и
measure с метриками Web Vitals, выявляя узкие места в
рендеринге.
Хотите, я подготовлю следующую часть, посвящённую автоматической отправке Web Vitals на сервер для аналитики?