Web Vitals — это набор метрик, разработанных Google для оценки качества пользовательского опыта на веб-страницах. Основная цель библиотеки — дать количественные показатели, которые позволяют понять, насколько сайт отзывчивый, быстрый и стабильный визуально. Ключевыми метриками являются:
Дополнительно, расширение Web Vitals для Chrome позволяет отслеживать эти показатели в реальном времени на любом сайте, предоставляя разработчику удобный инструмент для анализа производительности.
Расширение Web Vitals доступно в Chrome Web Store и устанавливается как обычное расширение браузера. После установки оно отображает иконку в панели инструментов Chrome, по клику на которую можно получить текущие метрики страницы:
Для более точного анализа и интеграции с веб-приложением используется
официальная библиотека web-vitals. Она позволяет получать
метрики напрямую из кода и отправлять их на сервер для дальнейшего
анализа.
import { getCLS, getFID, getLCP } from 'web-vitals';
Можно также подключить библиотеку через тег
<script>:
<script src="https://unpkg.com/web-vitals@2.1.4/dist/web-vitals.umd.js"></script>
getCLS(console.log);
getFID(console.log);
getLCP(console.log);
Каждая функция принимает колбэк, который вызывается с объектом метрики:
{
name: 'LCP',
value: 1234.56,
id: 'v1-1234567890'
}
Для сбора статистики на сервер можно использовать функцию
sendToAnalytics:
function sendToAnalytics(metric) {
fetch('/analytics', {
method: 'POST',
body: JSON.stringify(metric),
headers: { 'Content-Type': 'application/json' },
});
}
getCLS(sendToAnalytics);
getFID(sendToAnalytics);
getLCP(sendToAnalytics);
Web Vitals предоставляет возможность фильтровать и настраивать сбор метрик:
getLCP(metric => {
if (metric.value > 2500) {
console.warn('LCP превышен', metric.value);
}
});
load, DOMContentLoaded или
после интерактивного состояния страницы.window.addEventListener('load', () => {
getFID(console.log);
});
Web Vitals легко интегрируются с Google Analytics, Firebase или сторонними решениями:
import { getCLS, getFID, getLCP } from 'web-vitals';
function sendToGA(metric) {
gtag('event', metric.name, {
event_category: 'Web Vitals',
value: Math.round(metric.value),
event_label: metric.id,
non_interaction: true,
});
}
getCLS(sendToGA);
getFID(sendToGA);
getLCP(sendToGA);
fetch
или axios.Расширение Web Vitals в связке с библиотекой JavaScript становится мощным инструментом для анализа и оптимизации веб-страниц, позволяя выявлять узкие места производительности и визуальной стабильности.