JavaScript Build Tooling and Bundlers
Parent: JavaScript and Node.js · researched 2026-06-02T17:14:34.691Z· 6 sources · 15 concepts · skill javascript-build-tooling-bundlers
programming-languages hub reference for the JavaScript/TypeScript build toolchain: bundlers, parsers/transpilers, minifiers, linters, and formatters — and the 2025-2026 Rust/Go rewrite wave reshaping
JavaScript Build Tooling & Bundlers
- programming-languages hub reference for the JavaScript/TypeScript build toolchain: bundlers, parsers/transpilers, minifiers, linters, and formatters - and the 2025-2026 Rust/Go rewrite wave reshaping all of them. Sibling to javascript-nodejs (language/runtime), javascript-runtimes-deno-bun-edge (non-Node runtimes), and typescript-expert (type system). [source]
- TRIGGER: choosing or migrating a bundler/build tool; Vite/Rolldown/VoidZero questions; Rspack↔webpack or Turbopack↔Next.js decisions; Oxc/oxlint/Biome vs ESLint/Prettier; "why is my build slow"; configuring tree-shaking, code-splitting, HMR, or source maps. [source]
- SKIP: Node/Deno/Bun runtime semantics → javascript-runtimes-deno-bun-edge / javascript-nodejs; TypeScript type-system → typescript-expert; package install / workspaces / monorepo task-orchestration → package-management (concept-tree gap, not yet built). [source]
The 2026 landscape: Rust is eating the toolchain
- The fastest tool in every toolchain category is now written in Rust or Go. The pivotal driver is VoidZero (Evan You's company, founded late 2024) building a unified Rust toolchain under one parser. [source]
- Rolldown - Rust bundler, drop-in replacement for both esbuild (dev) and Rollup (prod) inside Vite. Hit 1.0 Release Candidate in Jan 2026; API stable, production-ready for early adopters. [source]
- Oxc (Oxidation Compiler) - the Rust parser/transformer/resolver underneath Rolldown. oxlint is ~50-100× ESLint; Oxc formatting ~30× Prettier. [source]
- Vite 8 - runs on Rolldown by default, replacing the historical esbuild+Rollup two-engine split (which caused dev/prod output divergence bugs). [source]
- > Single-parser convergence (Oxc) under one bundler (Rolldown) inside one dev tool (Vite) is the structural story: it removes the class of bugs where dev (esbuild) and prod (Rollup) disagreed. [source]
Bundlers
- Migration rule of thumb: Rspack for webpack migrations (compat) · Turbopack for Next.js · Vite for everything else. [source]
Parsers / transpilers / minifiers
- Oxc - Rust parser/transformer/minifier/resolver; the new substrate. [source]
- SWC - Rust; powers Next.js compilation and many transforms; Parcel's transformer. [source]
- esbuild - Go; transpile + minify, extremely fast, the prior speed king. [source]
- Babel - JS; still the most plugin-extensible transpiler (custom syntax, legacy targets), but slow - being displaced for plain transpilation. [source]
- tsc - TypeScript's own compiler; use for type-checking (--noEmit), not bundling. The transpile-vs-typecheck split matters: bundlers strip types fast but don't type-check (see javascript-nodejs native-TS notes). [source]
- Terser - JS minifier; legacy default, now outpaced by esbuild/Oxc minify. [source]
Linters & formatters
- Common 2026 pattern: oxlint or Biome for the fast 90% in CI/pre-commit, ESLint + typescript-eslint retained for type-aware rules the Rust linters don't yet implement. [source]
Mental model: dev server vs production build
- Dev optimizes for startup + HMR latency: native ESM, on-demand transform, no full bundle (Vite's historical esbuild role; now Rolldown). [source]
- Prod optimizes for output: tree-shaking, code-splitting, chunking, minification, source maps, asset hashing (historically Rollup; now Rolldown). [source]
- Keeping one engine for both (Rolldown) is why Vite 8 matters - it ends dev/prod output drift. [source]
Decision checklist
- Framework lock-in? Next.js → Turbopack. Otherwise → Vite. [source]
- Migrating webpack? → Rspack (compat) before considering a rewrite to Vite. [source]
- Library, not app? → Rollup/Rolldown (clean ESM) or tsup/esbuild for speed. [source]
- Lint/format speed pain? → add oxlint/Biome to CI; keep ESLint for type-aware rules. [source]
- "Build is slow" → identify the stage (transpile vs bundle vs typecheck vs lint); move transpile to esbuild/SWC/Oxc, move typecheck to a separate tsc --noEmit job, parallelize. [source]
Anti-patterns
- Running Babel for plain TS/JS transpile when esbuild/SWC/Oxc do it 20-100× faster. [source]
- Treating the bundler as a type-checker - bundlers strip types, they don't verify them. [source]
- Adopting a bleeding-edge RC (e.g. Rolldown 1.0 RC) for a critical legacy app without a fallback path. [source]
- Mixing ESLint legacy .eslintrc and flat eslint.config.js - pick flat config. [source]
Sources
- "Rust Is Eating the JavaScript Toolchain: Rolldown, Oxc, Rspack" - dev.to (2026) [source]
- "Vite 8, Rolldown, and Oxc: Rust Is Taking Over the JavaScript Toolchain" - dev.to / alexcloudstar (2026) [source]
- "The Current State of JavaScript Bundlers" - blog.openreplay.com [source]
- "Vite vs Turbopack vs Rspack Benchmark [2026]" - kunalganglani.com [source]
- State of JavaScript 2024 - Build Tools - 2024.stateofjs.com [source]
- rstackjs/build-tools-performance benchmarks - github.com [source]
Children
- Vite and Rolldown (frontier)
- esbuild (frontier)
- Rollup (frontier)
- Webpack (frontier)
- Rspack (frontier)
- Turbopack (frontier)
- Oxc and oxlint (frontier)
- SWC (frontier)
- Babel (frontier)
- Biome (frontier)
- ESLint Flat Config (frontier)
- Prettier (frontier)
- Dev Server vs Production Build (frontier)
- Bundler Migration (frontier)
- Rust Toolchain Wave (VoidZero) (frontier)
Frontier under this node: Babel, Biome, Bundler Migration, Dev Server vs Production Build, ESLint Flat Config, Oxc and oxlint, Prettier, Rollup, Rspack, Rust Toolchain Wave (VoidZero), SWC, Turbopack, Vite and Rolldown, Webpack, esbuild