ADR-003 - Bun comme runtime JavaScript
- Statut : Accepté
- Date : 2026-04-05
Contexte
Le projet nécessite un runtime JavaScript pour exécuter le serveur Fastify et les scripts du monorepo. L’équipe cherche à maximiser la rapidité de démarrage, la performance des scripts de build et la simplicité de la chaîne d’outils (un seul outil pour runtime, package manager et bundler).
Décision
Nous utilisons Bun comme runtime JavaScript, package manager et bundler pour l’ensemble du monorepo.
Alternatives considérées
- Node.js + npm/pnpm : écosystème mature, large communauté, tooling bien documenté
- Node.js + pnpm workspaces : meilleure gestion des monorepos que npm, mais performances inférieures à Bun
- Deno : sécurité by default, support natif TypeScript, mais compatibilité limitée avec l’écosystème npm
Conséquences
- Démarrage du serveur et exécution des scripts significativement plus rapides qu’avec Node.js
- Compatibilité native TypeScript sans étape de transpilation séparée
- Package manager intégré avec support des workspaces et catalog
- Compilation du serveur en binaire natif possible via
bun build --compile - Runtime encore jeune : certaines APIs Node.js ne sont pas encore totalement compatibles
- Communauté et documentation moins matures que Node.js
- Certains packages npm peuvent présenter des comportements inattendus sous Bun
- L’équipe doit rester vigilante aux breaking changes entre versions de Bun