Vite 6 vs. esbuild vs. Bun 1.1 — Bundler-Benchmark 2026
Vite 6 mit Rolldown, esbuild 0.24, Bun 1.1, Turbopack und Webpack 5 im direkten Vergleich. Eine messbare Standortbestimmung für 2026.
Die Bundler-Landschaft hat sich seit dem Webpack-zentrierten 2019 fundamental verändert: Esbuild hat gezeigt, dass Bundling in Go-Geschwindigkeit möglich ist, Vite hat das Dev-Server-Konzept aus dem Native-ESM-Browser auf den Build-Tool-Markt übertragen, Bun packt Bundler, Test-Runner und Runtime in eine Binary, und Webpack hält in Enterprise-Umgebungen weiterhin den Großteil der bestehenden Konfigurationen am Leben. 2026 lohnt ein nüchterner Blick auf die Performance- und Feature-Lage.
Vite 6 und der Rolldown-Übergang
Vite 6 (Release November 2024) hat den Dev-Server-First-Ansatz beibehalten: Im Development läuft kein Bundler, sondern ein nativer ESM-Server mit On-Demand-Transformation. Erst der Production-Build geht durch Rollup. Genau hier setzt 2025/2026 die wichtigste Verschiebung an: Rollup wird schrittweise durch Rolldown ersetzt — einen API-kompatiblen Rust-Port, der intern OXC als Parser und einen Webpack-kompatiblen Module-Resolver nutzt.
Das Rolldown-Vite-Preview-Paket (rolldown-vite) liefert seit Anfang 2025 die meisten Vite-Plugins kompatibel, der voll-stabile Wechsel ist für Vite 7 oder 8 geplant. Die Performance-Auswirkung ist beträchtlich: ein typischer Production-Build, der in Vite 6 mit Rollup 22 Sekunden braucht, läuft mit Rolldown in unter 10 Sekunden.
esbuild — die Geschwindigkeits-Referenz
Esbuild 0.24 ist nach wie vor das schnellste General-Purpose-Bundling-Tool. Die Go-Implementierung mit aggressivem Parallelisieren über Goroutinen erreicht Build-Zeiten, die ein bis zwei Größenordnungen unter JS-basierten Bundlern liegen. Der Trade-off ist bekannt: Esbuild macht bewusst nicht alles. Kein CSS-Code-Splitting, kein vollständiges Tree-Shaking auf Property-Ebene, keine integrierte Bibliothek für HMR — wer das braucht, baut esbuild als Sub-Tool in einen größeren Bundler ein (so wie Vite es für die Pre-Bundling-Phase tut).
Für Library-Bundling und für CLI-Tools, die ein eigenes Build-System mitbringen müssen, ist esbuild 2026 weiterhin die offensichtliche Wahl.
Bun 1.1 — Bundler plus Test-Runner plus Package-Manager plus Runtime
Bun verfolgt einen radikal anderen Ansatz: Eine einzige Binary, die JavaScript ausführt (auf JavaScriptCore-Basis), Pakete installiert (mit einem Lockfile, das schneller parsed als npm), Tests läuft (bun test mit Jest-kompatibler API) und bundlet (bun build). Die Implementierung in Zig liefert Bench-Werte, die nah an esbuild liegen, mit dem Vorteil einer in sich konsistenten API.
# Komplettes Build- und Test-Setup ohne weitere Tools
bun install
bun build ./src/index.tsx --outdir ./dist --minify
bun test
Der Schwachpunkt ist die Plugin-Reife: Das Bun-Bundler-Plugin-System orientiert sich an esbuild, aber viele etablierte Vite-/Rollup-Plugins haben keinen offiziellen Bun-Port. Für reines App-Bundling reicht das Ökosystem 2026 in der Regel, für komplexere Setups mit MDX, mit Vue-Single-File-Components oder mit speziellen Asset-Pipelines greift man dann doch wieder zu Vite.
Turbopack — Next.js-spezifisch, aber relevant
Turbopack ist die Rust-Antwort von Vercel auf den Bundler-Druck und ist 2026 im Next.js-Dev-Server stabil. Der Production-Build ist seit Next 15.2 in Beta. Architektonisch ist Turbopack ein incrementeller Bundler mit aggressivem Caching auf Function-Ebene — Re-Builds nach kleinen Änderungen sind dadurch besonders schnell. Außerhalb von Next.js ist Turbopack nicht direkt einsetzbar, was die Reichweite limitiert.
Webpack 5 — das Enterprise-Legacy
Webpack 5 ist 2026 nicht tot, sondern in vielen Enterprise-Setups weiterhin der Standard. Module Federation als Pattern für Micro-Frontends ist weiterhin Webpack-zentriert, auch wenn esbuild und Vite mittlerweile Federation-Adapter haben. Der Webpack-Vorteil ist die Plugin-Tiefe und die Stabilität: Setups, die seit 2019 produktiv laufen, müssen nicht migriert werden, nur weil ein neueres Tool 30-mal schneller ist.
Benchmark — eine typische React-App
Die folgenden Werte sind für eine repräsentative React-App gemessen: etwa 1000 Komponenten, 50 npm-Dependencies, TypeScript, Tailwind CSS, SVG-Imports. Test-Maschine: M2 Pro, 32 GB RAM, Node 22 / Bun 1.1 / Deno 2.0.
| Bundler | Dev-Start | Dev-HMR | Production-Build | Output-Size (gzipped) |
|---|---|---|---|---|
| Vite 6 (Rollup) | 850 ms | 45 ms | 22,0 s | 184 kB |
| Vite 6 (Rolldown) | 720 ms | 38 ms | 8,1 s | 182 kB |
| esbuild 0.24 | 12 ms | 18 ms | 3,2 s | 198 kB |
| Bun 1.1 | 18 ms | 22 ms | 4,1 s | 195 kB |
| Turbopack (Next 15) | 1100 ms | 28 ms | 14,8 s | 178 kB |
| Webpack 5 | 4200 ms | 380 ms | 45,2 s | 192 kB |
Die Werte zeigen das übliche Muster: Esbuild und Bun gewinnen bei reinen Build-Zeiten, Vite gewinnt bei HMR-Latenz im Dev-Server (weil der ESM-Native-Ansatz fast keine Arbeit zu tun hat), Webpack ist überall langsamer, liefert aber konkurrenzfähige Output-Größen.
Die Output-Differenzen sind weniger relevant als sie scheinen: Esbuild verzichtet auf einige Optimierungen, die Vite und Webpack vornehmen, was zu 6-8 Prozent größeren Bundles führt — bei einer 184-kB-Baseline sind das ~12 kB, die meist im Rauschen der Anwendungs-spezifischen Optimierung verschwinden.
Code-Splitting
Vite und Webpack splitten an Dynamic-Import-Boundaries, an Route-Boundaries (wenn das Framework es signalisiert) und nach konfigurierbaren Heuristiken für gemeinsame Chunks. Esbuild splittet nur an Dynamic-Imports — das reicht für die meisten Apps, ist aber weniger granular. Bun folgt dem esbuild-Pattern. Rolldown bringt einen Webpack-kompatibleren Code-Splitter mit, der in der Vite-Integration aktiv ist.
Tree-Shaking
Modernes Tree-Shaking arbeitet auf Modul- und auf Export-Ebene. Vite (mit Rollup oder Rolldown) und Webpack 5 mit usedExports: true schaffen es, einzelne Funktionen aus einer Library zu entfernen, wenn der Import explizit benannt ist. Esbuild schafft das ebenfalls, ist aber konservativer bei Side-Effects-Annotationen — Libraries, die sideEffects: false in ihrer package.json nicht setzen, werden vollständig importiert.
Property-Level-Tree-Shaking („remove unused properties from imported object literals”) beherrscht keiner der hier verglichenen Bundler vollständig. Closure Compiler im ADVANCED-Mode war 2014 das letzte Tool, das das ernsthaft konnte — und das ist für die meisten Workflows zu invasiv.
Source-Maps
Source-Map-Generierung kostet bei allen Bundlern messbar Zeit, in der Größenordnung von 10-30 Prozent zusätzlicher Build-Dauer. Esbuild generiert sie standardmäßig sehr schnell, mit der Einschränkung, dass die Maps weniger präzise sind als die von Rollup oder Webpack (esbuild mappt auf Token-Ebene, nicht auf Expression-Ebene). Für Production-Debugging über Sentry oder ähnliche Tools ist die Vite/Rollup-Variante präziser.
Plugin-Ökosystem-Reife
| Bundler | Plugin-Reife | npm-Pakete (2026) |
|---|---|---|
| Webpack 5 | Sehr hoch | ~12.000 |
| Vite 6 | Hoch | ~3.800 |
| esbuild | Mittel | ~1.500 |
| Rolldown | Mittel (Rollup-kompatibel) | ~3.000 (geerbt) |
| Bun | Niedrig-Mittel | ~450 |
| Turbopack | Niedrig (proprietär) | n. a. |
Die Zahl der Plugins korreliert mit dem Alter des Tools, nicht mit der technischen Qualität — Webpack hat einfach einen Vorlauf von zehn Jahren.
Empfehlung 2026
Für neue Anwendungs-Projekte ist Vite 6 (auf dem Migrations-Pfad zu Rolldown) der pragmatische Standard. Für Library-Bundling oder eigene Build-Pipelines ist esbuild die effizienteste Wahl. Für reine Bun-Stacks mit bun test und bun run als Standard-Toolchain ergibt Bun 1.1 als Bundler Sinn — aber nicht als Ersatz für Vite in einer Vite-zentrierten App. Webpack 5 bleibt der richtige Weg, wenn Module Federation als Architektur-Pattern gesetzt ist oder bestehende Configs nicht angefasst werden sollen.
Die Wahl hängt 2026 weniger an der Performance — alle modernen Bundler sind „schnell genug” — als an Plugin-Reife, an Framework-Integration und an dem, was das Team gewohnt ist. Esbuild hat den Markt aufgemischt, Vite hat ihn neu sortiert, Bun und Turbopack drücken weiter — aber die produktiven Defaults für 2026 sind klar verteilt.