PassFront
  1. PassFront
  2. База знаний
  3. Компоненты

Какие исключения есть в Bundle React?

Компоненты

Вопрос сформулирован нестандартно; на собеседовании его стоит уточнить. Разумных прочтений два: что не попадает в бандл React-приложения и исключения (ошибки) при загрузке чанков.

Прочтение 1: что исключается из бандла

  • Серверный код: серверные компоненты (RSC) и их зависимости никогда не едут в браузер; код внутри if (typeof window === 'undefined') вырезается сборщиком.
  • peerDependencies библиотек: React из UI-пакета не бандлится — берётся из приложения (иначе два React ломают хуки).
  • devDependencies и тесты: не входят в production-бандл.
  • Dead code: tree-shaking выбрасывает неиспользуемые экспорты (при sideEffects: false и ESM); dev-only ветки (process.env.NODE_ENV !== 'production') — вырезаются минификатором вместе с dev-предупреждениями React.
  • Отложенный код: React.lazy/динамические импорты выносят чанки из основного бандла — грузятся по требованию.
  • externals: библиотеки, подключаемые из CDN, исключаются конфигом сборщика.

Прочтение 2: исключения при загрузке чанков

Ленивый чанк может не загрузиться: сеть, старый деплой (файл с прежним хешем удалён). Ошибка всплывает в Error Boundary — типовое лечение: fallback с перезагрузкой страницы и retry-обёртка над import().

Коротко для собеседования

Уточнить вопрос. Из бандла исключаются: серверный код и RSC, React в peerDependencies библиотек, dev-зависимости и dev-ветки (NODE_ENV), неиспользуемые экспорты (tree-shaking), лениво загружаемые чанки (React.lazy) и externals из CDN. Если речь про исключения-ошибки — падение загрузки чанка ловится Error Boundary, лечится retry/перезагрузкой.

Другие вопросы раздела