Модуль 15 · Урок 58

Performance: Core Web Vitals, Profiler і release budgets

Спершу виміряйте user-visible symptom і root cause. Field distribution, controlled lab, browser trace, React Profiler та bundle size відповідають на різні питання.

LCPINPCLSProfiler

Field vs lab contract

EvidenceРішення
Field/RUM 75th percentileРеальний distribution за page/device context
Lighthouse labReproducible diagnosis і experiment
DevTools traceMain-thread/network/render root cause
React ProfilerCommit cost конкретного subtree

Current good targets: LCP ≤2.5s, INP ≤200ms, CLS ≤0.1 на 75-му percentile. Це quality targets, не гарантія conversion; один lab score не є field evidence.

Measurement before optimization

Зафіксуйте interaction, build/device/network, actual/base duration, commits і user symptom. Лише потім перевіряйте image/font priority, main-thread work, component ownership, code split, memo/useMemo. Optimization без bottleneck може додати memory/complexity й не покращити UX.

Versioned budget

Lab gate: emitted JS ≤250000 Б, CSS ≤50000 Б. Budget ловить regression, але не замінює compression/cache/execution/field evidence. Після зміни повторіть behavior, accessibility, build, monitoring і rollback checks.

Завантажити testing/performance lab →

Офіційні джерела

Практична перевірка · урок 58 з 60

Закріпіть матеріал уроку

Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.

1. Чим field data відрізняється від lab?
2. Що вимірює LCP?
3. Що вимірює INP?