Контекст
Для объективной оценки качества фронтенда необходимо внедрить количественный сбор данных. Это включает как технические показатели (Core Web Vitals), так и кастомные бизнес-метрики (взаимодействие с формами, время загрузки тяжелых модулей). Сбор метрик через Faro позволит визуализировать реальный опыт пользователей (RUM) на дашбордах Grafana.
Технические требования
- Локация логики:
shared/lib/metrics, интеграция через WebVitals API в Next.js.
- Инструменты:
@grafana/faro-web-sdk, пакет web-vitals.
- Логика работы:
- Автоматический сбор: Инициализация стандартных инструментов для замера LCP, FID, CLS, TTFB и FCP.
- Кастомные события: Реализация хелпера
trackEvent(name, attributes) для отправки произвольных метрик.
- Батчинг: Настройка интервала отправки данных для минимизации количества сетевых запросов.
Цель и критерии приемки (Definition of Done)
Важные указания
- Производительность: Использовать
requestIdleCallback для отправки накопленных метрик в моменты простоя браузера.
- Ошибки: Предусмотреть бесшумный отказ (silent fail) — если сборщик недоступен, приложение должно продолжать работу без ошибок в консоли.
- Безопасность: Запрещено включать чувствительные данные (например, значения из полей ввода) в аттрибуты событий.
Прикладные примеры и документация
Контекст
Для объективной оценки качества фронтенда необходимо внедрить количественный сбор данных. Это включает как технические показатели (Core Web Vitals), так и кастомные бизнес-метрики (взаимодействие с формами, время загрузки тяжелых модулей). Сбор метрик через Faro позволит визуализировать реальный опыт пользователей (RUM) на дашбордах Grafana.
Технические требования
shared/lib/metrics, интеграция черезWebVitalsAPI в Next.js.@grafana/faro-web-sdk, пакетweb-vitals.trackEvent(name, attributes)для отправки произвольных метрик.Цель и критерии приемки (Definition of Done)
Next.js Web Vitalsчерез встроенный методuseReportWebVitals(илиreportWebVitalsв Pages Router).env,release,browser,os).Важные указания
requestIdleCallbackдля отправки накопленных метрик в моменты простоя браузера.Прикладные примеры и документация