Philosophy

The core approach behind each JavaScript bundler.

Webpack

The original general-purpose module bundler, prioritizing flexibility and an enormous, mature plugin/loader ecosystem able to handle almost any asset or workflow, at the cost of configuration complexity.

Rollup

Prioritizes producing small, clean output through aggressive ES module tree-shaking, originally aimed at bundling libraries rather than applications, where minimal output size matters most.

Parcel

Prioritizes true zero-configuration bundling — point it at an HTML file and it figures out the rest, aiming to remove config files from the bundler experience entirely.

esbuild

Prioritizes raw speed above almost everything else, achieved by being written in Go and designed from the ground up for parallelism, at the cost of some of the deep plugin flexibility older bundlers offer.

Vite

Prioritizes developer experience during development by not bundling at all in dev mode — serving native ES modules directly over HTTP — while still producing an optimized bundled build for production.

Turbopack

Built by Vercel specifically for Next.js, prioritizing incremental, function-level caching so that only what actually changed gets rebuilt, aiming to make large application rebuilds close to instant.

Rspack

Prioritizes drop-in compatibility with webpack’s configuration and plugin API while replacing its slow JavaScript core with a much faster Rust implementation, easing migration for existing webpack projects.

Bun

Bundling is one part of a broader all-in-one JavaScript runtime and toolchain, prioritizing simplicity and speed as a built-in feature rather than a separate tool to configure.

Rolldown

A ground-up Rust rewrite of Rollup, prioritizing Rollup-compatible plugin APIs and output behavior while closing the performance gap with Go/Rust-based tools, designed to become Vite’s production bundler.