Choosing a Bundler

Every tool in this section can ship a fast site; the differences lie in defaults, ecosystem and how much configuration you want to own. To compare defaults, the same small app (one module, one stylesheet, one SVG logo) was built with each tool in production mode:

Output of one demo app built by five bundlers with near-default settings
Tool JavaScript CSS How the CSS and SVG ship
esbuild 0.28 126 132 B 58 B Separate files
Parcel 2.16 195,638 119 B 108 B Separate files
Rspack 2.2 879 B 148 B Separate files, small runtime
Vite 8.3 25,978 939 B 58 B SVG inlined as data URI
webpack 5.111 3,824 5,963 B none CSS injected by style-loader

The numbers show defaults, not limits: webpack with mini-css-extract-plugin also writes a separate CSS file, and Vite's extra bytes are the inlined logo and a small polyfill for <link rel="modulepreload">. On real applications, build time and plugin support matter far more than a few hundred bytes.

Use these rules of thumb:

Interviews usually probe concepts rather than tools: what tree shaking requires, why content hashes allow long-term caching, and why Vite's dev server does not bundle your source.