esbuild: JavaScript bundler 100 times faster

esbuild (January 2020, stable 0.12 June 2021) by Evan Wallace (Figma): JavaScript/TypeScript bundler written in Go, 10-100× faster than Webpack/Rollup. Foundation of Vite, tsup, Bun. JSX/TS transformations in ms.

Open SourceWeb esbuildEvan WallaceGoBundlerJavaScriptTypeScriptOpen Source

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.

Need support? Under attack? Service Status
Need support? Under attack? Service Status