Что это
Tree shaking — оптимизация бандлера: по статической структуре ESM + анализу side effects выкинуть код, недостижимый из entry points.
import/export делают анализ возможным, но не гарантируют удаление:
- side effects на top-level;
- динамический доступ;
- metadata пакета (
sideEffects в package.json);
- транспиляция в CJS;
- настройки бандлера.
Практика
Пишите ESM с чистыми модулями, помечайте side-effect-free пакеты корректно, смотрите production bundle — не верьте «должно вытрястись».
Итог: tree shaking удаляет доказанно мёртвый код; ESM помогает, проверка артефакта обязательна.