Был ли опыт оптимизации бандла
Что проверяют
Был ли у вас реальный опыт или вы пересказываете статью. Хотят услышать цепочку: как заметили проблему, чем измерили, что сделали и что получилось в цифрах. Следом почти всегда спрашивают, как вы не дали бандлу разрастись снова.
Как отвечать
Стройте рассказ вокруг своего проекта и своих чисел. Каркас такой:
- симптом и метрика: медленный LCP на мобильных, плохой INP, отчёт Lighthouse. Назовите размер JS до работы в килобайтах после gzip или brotli;
- диагностика:
webpack-bundle-analyzer,rollup-plugin-visualizerдля Vite,@next/bundle-analyzerдля Next.js илиsource-map-explorer. Что нашли: целиком импортированныйlodash,momentсо всеми локалями, две версии одной библиотеки; - разделение кода: динамический
import(),React.lazyиSuspenseдля маршрутов и тяжёлых виджетов вроде графиков и редакторов; - tree shaking: работает только с ES-модулями, отсюда переход на
lodash-esили точечные импорты и проверка поляsideEffectsвpackage.json; - замены и транспиляция:
momentнаdate-fnsилиdayjs, пересмотрbrowserslist, чтобы не тащить полифилы для браузеров, которых нет в аудитории; - закрепление: лимит размера в CI через
size-limitили бюджеты сборщика, чтобы регрессия ловилась ещё на PR.
Результат называйте честно: сколько килобайт ушло из стартового чанка и как изменились метрики у реальных пользователей, если вы их собираете.
Если такой задачи у вас не было, так и скажите и покажите подход: как бы вы измерили текущее состояние и что проверили бы первым. Хорошо работает разбор собственного пет-проекта с цифрами до и после.
Где спотыкаются
Называют круглые проценты без базы: «бандл уменьшился на 40%». Без исходного размера и способа измерения это звучит выдуманно, и первый же уточняющий вопрос это вскрывает.
Приводят минификацию как своё достижение. В production-сборке она включена по умолчанию и в webpack, и в Vite, это не оптимизация, а отсутствие ошибки.
Дробят код на десятки мелких чанков и получают каскад запросов, из-за которого первый экран грузится дольше. Делить стоит по маршрутам и тяжёлым модулям, а не всё подряд.