/impeccable optimize
Optimize
Диагностика и исправление производительности UI от LCP до размера бандла.
Когда использовать
/impeccable optimize — для интерфейсов, которые ощущаются медленными. Первая отрисовка длится вечность, прокрутка дёргается, изображения появляются с опозданием, взаимодействия ощущаются вялыми, бандл поставляет 800KB JavaScript. Используйте, когда Web Vitals плохие или когда пользователи жалуются на медлительность.
Не используйте как преждевременную оптимизацию. Если LCP 1.1s и INP 80ms, остановитесь. Дизайнерская работа важнее.
Как это работает
Навык проходит через пять измерений производительности:
- Загрузка и Web Vitals: LCP, INP, CLS. Определение, что блокирует первую отрисовку, что задерживает взаимодействие, что сдвигает макет.
- Рендеринг: ненужные перерендеры, отсутствующая мемоизация, тяжёлое согласование, перекомпоновка макета в циклах.
- Анимации: анимирует ли что-то свойства макета, являются ли transform и opacity единственными затрагиваемыми свойствами, помогает или вредит
will-change. - Изображения и ресурсы: ленивая загрузка, адаптивные изображения (
srcset,sizes), современные форматы (WebP, AVIF), заданные размеры для предотвращения CLS. - Размер бандла: неиспользуемые импорты, слишком большие зависимости, отсутствующее разделение кода, мёртвый код.
Навык измеряет до и после. Каждое исправление квантифицировано. Если изменение не двигает метрику, оно откатывается.
Попробуйте
/impeccable optimize the homepage
Ожидаемый результат:
LCP: 3.2s → 1.4s
- Hero-изображение предзагружено (-800ms)
- Удалён блокирующий рендеринг font stylesheet (-240ms)
- Отложен скрипт аналитики (-180ms)
INP: 240ms → 90ms
- Debounced обработчик прокрутки
- Мемоизирован тяжёлый рендер списка
- Удалён синхронный layout read в цикле событий
CLS: 0.18 → 0.02
- Заданы размеры hero-изображения и логотипа
- Зарезервировано место для асинхронного значка в шапке
Bundle: 340KB → 180KB
- Удалён неиспользуемый импорт lodash (52KB)
- Разделён код маршрута playground (78KB)
- Удалён устаревший набор иконок (30KB)
Подводные камни
- Оптимизация без измерений. Без базовых метрик вы не можете сказать, что помогло. Запускайте
/impeccable optimizeс конкретными числами Web Vitals, а не на ощущениях. - Погоня за мелкими улучшениями. Улучшение INP на 20ms, занимающее неделю, редко того стоит. Optimize имеет убывающую отдачу; знайте, когда остановиться.
- Забывание повторно измерять после каждого изменения. Сборка могла ухудшить всё так, как навык не предсказал. Проверяйте.