Бюджет, который никто не соблюдает
Все согласны, что скорость важна, и никто её не сторожит. Пороги простые: LCP < 2.5с, INP < 200мс, CLS < 0.1. Мы сделали бюджет гейтом сборки: превысил вес JS или LCP на эталонном профиле — билд красный, мердж не проходит. Не «потом оптимизируем», а «не уехало».
// budget.json — нарушение валит CI
{
"resourceSizes": [
{ "resourceType": "script", "budget": 170 },
{ "resourceType": "total", "budget": 400 }
],
"timings": [
{ "metric": "largest-contentful-paint", "budget": 2500 },
{ "metric": "interaction-to-next-paint", "budget": 200 }
]
}Тестируем на дешёвом Android, не на M3
Ноутбук разработчика врёт. Мы гоняем замеры на реальном бюджетном Android под троттлингом 3G — там, где сидит половина аудитории клиента. Главный злодей 2025-го — INP: работа главного потока от гидратации, которую на маке не видно вообще.
Что реально двигает цифры
- ▍Серверные компоненты по умолчанию — меньше JS в браузере
- ▍Третьесторонние скрипты — отложенно или никак
- ▍Один сабсет шрифта, а не пять начертаний
- ▍Резервируем место под поздние изображения — нулевой CLS
На Aurora LCP вышел 1.2с на мобайле, на остальных проектах держим 95+. Это не достижение — это порог, ниже которого мы не сдаём.
«Производительность — не настройка в конце. Это бюджет, который ты тратишь с первой строки.»
Что бы сделали иначе
Слишком поздно начали мерить INP — только после релиза, когда жалобы уже шли. Теперь INP в бюджете с нулевого дня, наравне с LCP.