Chapter 2 of 6

How we got here

Six eras. Each one solved a problem the last one could not. The tools changed — but the five jobs stayed the same.

2013 — 2015Era 01

The manual era

React ships with JSX, but browsers cannot run it. You assemble your own pipeline: Babel transforms JSX and modern JS into browser-compatible ES5, Webpack bundles your files and handles code splitting, Grunt or Gulp orchestrates the whole thing, and ESLint catches mistakes. There is no official guide — configuring this pipeline from scratch can take a full day, and every project does it differently. Browserify predates Webpack but has no code-splitting support.

BabelWebpackBrowserifyGruntGulpESLint
2016 — 2017Era 02

Zero-config arrives

Create React App hides the entire Babel, Webpack, and Jest configuration behind one command. For new developers this is the difference between getting started in minutes versus a day. The limitation: CRA traps you. Ejecting gives you back the raw config files, but you then own a 1,000-line Webpack config with no upgrade path. For years, this is how most people start React.

Create React Appreact-scriptsWebpackBabelJest
2018 — 2020Era 03

Frameworks & first speedups

Next.js and Gatsby show what framework-level control over the build looks like. Rollup gains traction for library authors because it produces smaller bundles via tree-shaking. React 17 ships a new JSX transform that removes the need to import React in every file, which also shrinks bundles. esbuild, written in Go by Evan Wallace, benchmarks at 10× to 100× Webpack speed for simple cases and proves that native-language tooling is achievable. The ecosystem starts paying attention.

Next.jsGatsbyRollupesbuildReact 17 JSX transform
2020 — 2022Era 04

Vite and Rust arrive

Vite serves files over native ES modules during development rather than bundling them first, which makes HMR nearly instant. For production it uses Rollup for reliable tree-shaking. Vite becomes the new default for SPAs. Next.js replaces Babel with SWC, a Rust compiler, and cuts large-project build times roughly in half. Vercel announces Turbopack at Next.js Conf 2022: a Rust bundler built specifically for the Next.js ecosystem.

ViteSWCTurbopackParcel 2
2023 — 2024Era 05

The Rust wave

Rome, which aimed to replace the entire toolchain in a single project, ships two incompatible versions and never reaches stable 1.0. A fork called Biome ships instead and becomes the Rust-based lint and format alternative. Oxc appears as a modular Rust toolkit covering parsing, transformation, and minification. Rspack appears as a Webpack-compatible Rust bundler from ByteDance. Rolldown starts as a Rollup replacement in Rust. VoidZero forms to build an integrated native pipeline around Vite, Rolldown, and Oxc. React Compiler enters beta, drawing attention because it eliminates most manual useMemo and useCallback calls. React 19 ships.

BiomeOxcRspackRolldownVoidZeroReact Compiler betaReact 19
2025 — 2026Now

Consolidation & native pipelines

CRA is officially deprecated (February 2025). oxlint 1.0 ships in June 2025 with 500+ rules. React Compiler 1.0 and Next.js 16 both ship in October 2025. Vite 8 (March 2026) makes Rolldown the default bundler. In May 2026, Meta opens a draft PR porting React Compiler to Rust (facebook/react #36173): all 1,725 test fixtures pass. The OXC project opens a parallel draft PR to integrate it natively into Oxc. When stable, the Vite/Rolldown/Oxc pipeline will include a native React Compiler with no Babel plugin needed. TypeScript 7 beta ports the compiler to Go. React Native 0.84 makes Hermes V1 the default engine.

CRA deprecatedoxlint 1.0React Compiler 1.0Next.js 16Vite 8Rolldown 1.0RC Rust portTypeScript 7 betaHermes V1
What replaced what

Each era solved the last one's main pain

Before
After
CRA + WebpackJS bundler
Vite + RolldownRust bundler
BabelJS compiler
Oxc / SWCRust, in Vite & Next.js
ESLintJS linter, slow starts
oxlintRust, 50–100× faster
tscslowest CI step
tsgoGo, 10× faster, in beta

You now have the historical arc. The next chapter decodes every tool name: what Babel, Oxc, SWC, Rolldown, and Turbopack actually do, grouped by job.