May 20th, 2026

Bundle budget gate: JS бандл уменьшен с 645KB до 354KB

Что изменилось

  • JS бандл уменьшен с 645KB до 354KB — снижение на 45%, достигнутое за одну sprint-итерацию
  • Бюджет установлен в 398KB; CI gate автоматически блокирует PR, превышающий порог
  • Запас до порога сейчас 44KB — достаточно для нескольких новых добавлений без нарушения gate
  • Lazy loading DesignPanel: тяжёлые компоненты дизайн-системы (~120KB) загружаются только при первом открытии панели
  • CSP hardening: убраны inline-стили без nonce, Content-Security-Policy настроены со strict-dynamic
  • Benchmark встроен в CI: LCP и INP метрики фиксируются в комментарии каждого PR
  • Tree-shaking audit: 8 пакетов с ненужными side-effects исправлены через sideEffects: false

Где попробовать

Первый запуск приложения стал заметно быстрее. Откройте DevTools → Network и убедитесь, что начальная загрузка менее 400KB. DesignPanel и артефакт-просмотрщики загружаются по требованию — увидите waterfall с отложенными chunk-ами.

Методология: анализ выполнялся через webpack-bundle-analyzer и source-map-explorer. Крупнейшие победы: удаление moment.js в пользу date-fns (tree-shakeable, -38KB), замена lodash на lodash-es с named imports (-29KB), lazy split для всех viewer-адаптеров (-95KB из initial bundle). Performance budget теперь фиксируется как часть CI: при любом превышении порога PR получает автоматический комментарий с breakdown по chunk-ам — видно, какой импорт вызвал рост. LCP target — 2.5s, INP target — 200ms согласно Core Web Vitals; текущие показатели: LCP 1.8s, INP 140ms на референсном ноутбуке.

Связанное

Дорожная карта: Тестирование и CI. Дальнейшая оптимизация (lazy router splits, image compression) запланирована на v1.1.0.