Web Vitals — это набор метрик, разработанных Google для измерения качества пользовательского опыта на веб-странице. Основные показатели включают Largest Contentful Paint (LCP), First Input Delay (FID) и Cumulative Layout Shift (CLS). Каждая метрика отражает конкретный аспект взаимодействия пользователя с сайтом:
Дополнительно существуют Total Blocking Time (TBT) и Interaction to Next Paint (INP), которые помогают более детально анализировать интерактивность и отзывчивость интерфейса.
Для работы с Web Vitals в клиентском коде используется официальная
библиотека web-vitals. Установка через npm:
npm install web-vitals
Импортирование необходимых функций в Jav * aScript:
import { getLCP, getFID, getCLS } fr om 'web-vitals';
Функции принимают колбэк, в который передается объект метрики:
getLCP(metric => {
console.log('LCP:', metric.value);
});
getFID(metric => {
console.log('FID:', metric.value);
});
getCLS(metric => {
console.log('CLS:', metric.value);
});
Каждая метрика возвращает объект вида:
{
name: 'LCP', // имя метрики
value: 2450.3, // численное значение в миллисекундах
delta: 0, // изменение значения с момента предыдущей записи
id: 'v1-123456' // уникальный идентификатор измерения
}
Chrome User Experience Report (CrUX) предоставляет агрегационные данные о производительности сайтов, собранные с реальных пользователей Chrome. Эти данные можно напрямую импортировать в BigQuery, что позволяет строить аналитические запросы и мониторить ключевые метрики Web Vitals в масштабах всей аудитории.
Создание проекта в Google Cloud Необходимо иметь проект с включенной биллинг-учетной записью.
Подключение публичного набора данных CrUX Google
предоставляет открытый датасет chrome-ux-report.all.* с
ежедневными или ежемесячными сводками. Пример SQL-запроса:
SEL ECT
origin,
FIRST_CONTENTFUL_PAINT_BUCKET,
LARGEST_CONTENTFUL_PAINT_BUCKET,
CUMULATIVE_LAYOUT_SHIFT_BUCKET
FR OM
`chrome-ux-report.all.2026_03`
WH ERE
origin = 'https://example.com';
Здесь используется bucketed representation, где показатели агрегированы по диапазонам для упрощения анализа.
Помимо BigQuery, можно обращаться к CrUX через REST API. Основные шаги:
https://chromeuxreport.googleapis.com/v1/records:queryRecord?key=API_KEY
origin и метрик:const payload = {
"origin": "https://example.com",
"metrics": ["largest_contentful_paint", "first_input_delay", "cumulative_layout_shift"]
};
fetch('https://chromeuxreport.googleapis.com/v1/records:queryRecord?key=YOUR_API_KEY', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => {
console.log(data.record.metrics);
});
Ответ содержит сводные данные по каждому показателю, включая медиану, 75-й процентиль и распределение по категориям.
Комбинирование реальных данных пользователей с клиентским измерением Web Vitals позволяет:
Пример архитектуры:
Эта схема позволяет построить комплексную систему мониторинга производительности, где Web Vitals измеряются на стороне клиента, а CrUX и BigQuery дают широкую картину поведения пользователей, объединяя индивидуальные и агрегированные данные.