Tree Shaking

JavaScript 🟡 Mid

Définition

Élimination du code mort par les bundlers grâce à l'analyse statique des imports ESM : seuls les exports réellement importés restent dans le bundle. Outils actuels : Rollup, esbuild, webpack et Rolldown, le bundler Rust qui remplace le duo esbuild + Rollup dans Vite 8 (12 mars 2026) avec des builds annoncés 10 à 30 fois plus rapides.

Analogie

Secouer un arbre pour ne garder que les fruits murs (code utilise) et laisser tomber les feuilles mortes (code inutilisé).

Exemple de code

// utils.js
export const used = () => 'kept';
export const unused = () => 'removed';

// app.js
import { used } from './utils';
// unused est elimine du bundle

Cas d'usage

Réduire la taille des bundles en production, surtout avec de grosses librairies comme lodash.

Anti-pattern

import * as lib ou re-exports via barrel files qui empêchent le tree shaking.
#core#performance#modules#vite8

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre