The bundling bottleneck
Webpack, Rollup, Parcel are written in JavaScript and run single-threaded. Builds of large frontend projects take 30s-5min. During development, hot-reload of every change adds latency. A paradigm shift is needed.
The release
esbuild is published in January 2020 by Evan Wallace, cofounder and CTO of Figma, as a side project. Version 0.12 (June 2021) marks API stabilisation. Written in Go, MIT licence. Parallel-first, zero JS dependencies.
Features
- Extreme speed — 10-100× faster than Webpack/Rollup
- TypeScript stripping (not type-checking)
- JSX transform
- Aggressive tree shaking
- Code splitting and lazy loading
- ESM + CommonJS output
- Built-in minification (Terser alternative)
- Source maps
- Plugin API for custom extensions
- CLI, JS API (Node), Go API
esbuild app.tsx --bundle --minify --outfile=out.js
Typical benchmarks
Build of a 10,000 module React app:
- Webpack: ~40s
- Rollup: ~30s
- Parcel 2: ~15s
- esbuild: ~0.5s
Use as dependency
esbuild is not only used standalone, but as foundation of:
- Vite — dev server and pre-bundle with esbuild, production with Rollup
- tsup — TypeScript library bundler
- Bun — uses esbuild-like core
- Next.js — SWC/esbuild in parts
- Remix — pre-build
- Snowpack — legacy
- Sveltekit — bundling
- Astro — part of toolchain
Limits
- No TypeScript type-checking — needs separate
tsc --noEmit - Small plugin ecosystem vs Webpack
- Basic CSS handling (via PostCSS plugin)
Competitors
- SWC (2019) — Rust, similar speed, used in Next.js
- Rollup (2015) — standard for libraries
- Turbopack (2022, Vercel) — Rust-based webpack successor, for Next.js
- Rspack (2023, ByteDance) — Rust, Webpack-compatible
- Parcel 2 (2021) — swc + native
In the Italian context
esbuild is omnipresent in modern Italian frontend projects, usually indirectly via Vite, Astro, Next.js. Directly used by:
- Italian library maintainers (tsup)
- TypeScript monorepos (Turborepo)
- CI pipelines requiring fast builds
- Serverless deployment (Lambda, Cloudflare Workers)
The impact has been seismic: median build times of React projects went from minutes to seconds post-esbuild adoption (via Vite).
References: esbuild (Evan Wallace, Figma, January 2020). 0.12 stabilisation (June 2021). MIT licence. Written in Go. Used as foundation in Vite, tsup, Bun. Competitors SWC (Rust), Turbopack, Rspack.
