The classic JS compiler, written in JavaScript. A plugin system lets each plugin make its own pass over the AST — highly flexible but slow on large codebases. Still the default in React Native via Metro, and in legacy projects. Most web toolchains are actively replacing it with SWC or Oxc.
Transform & compile
01 / 05These tools turn JSX, TypeScript, and modern JS into code the runtime can run.
A Rust-based compiler by Donny. Next.js replaced Babel with SWC and cut large-project build times roughly in half — typically ~20× faster than Babel on the same code. The tradeoff is a smaller plugin ecosystem, though the most common plugins do have equivalents.
A Go tool by Evan Wallace. The first to prove native-speed JS tooling was achievable, benchmarking at 10–100× Webpack speed. Vite used esbuild for dev transforms and Rollup for production until Vite 8; since then Rolldown handles both.
The Oxidation Compiler, built by Boshen Chen. A Rust toolkit providing the parser, transformer, minifier, and resolver that power Rolldown's internals. A Rust port of React Compiler is in active development to integrate natively into Oxc — making the full Vite/Rolldown/Oxc pipeline native without a separate Babel step.
A build-time compiler from Meta that analyzes your component code and automatically inserts memoization — what you’d otherwise write by hand with useMemo and useCallback. Stable since October 2025, works on React 17+. A Rust port is in development for native OXC and SWC integration.
Meta's JavaScript engine for React Native. It compiles JS to bytecode at build time so the device skips JS parsing on startup, cutting cold-launch time significantly. Default since RN 0.70; Hermes V1 shipped with RN 0.84 as the stable, fully-featured version.
Bundle
02 / 05These tools combine your many files into packages the browser or device can load.
The dominant bundler from 2014 to ~2022. Its massive plugin ecosystem can handle almost any build requirement, and it's still common in enterprise codebases. The downside: cold builds on large projects routinely take minutes. Most new projects skip it for Vite or Turbopack.
Popularized tree-shaking: removing unused exports by analyzing import chains statically. Still the standard for authoring npm libraries, where small output size matters. Rolldown is its successor for application builds.
A dev server and build tool, not just a bundler. The key insight: in development it serves files over native ES modules rather than bundling, so only the changed module reloads on HMR. Since Vite 8, Rolldown handles production builds, replacing the old esbuild/Rollup split.
A Rust bundler built by VoidZero with a Rollup-compatible plugin API. Default bundler in Vite 8. It does parsing, transformation, and bundling in a single Rust pass rather than chaining separate JS tools — where the 10–30× speed improvement comes from. Uses Oxc internally.
Vercel's Rust bundler, built on the Turbo Engine incremental computation framework. It only recomputes the modules that changed, keeping dev builds fast in large projects. Stable and default in Next.js 16 for dev and production — designed specifically for the Next.js use case.
A Rust bundler from the ByteDance infrastructure team, built to handle their large monorepo. Has a Webpack-compatible API, so migrating is mostly a package swap — a practical speed upgrade for teams tied to Webpack-specific plugins or config.
The bundler for React Native, maintained by Meta. Handles mobile-specific module resolution including platform file extensions (.ios.js, .android.js). Runs on Node on your dev machine and talks to the device over a socket. You don’t use Vite or Webpack in React Native projects.
A zero-config bundler — simpler than Webpack with less to configure. The React team recommends it alongside Vite as a CRA replacement for simple apps. Less commonly chosen for new projects in 2026 than Vite, but still valid.
Lint & format
03 / 05These tools catch bugs, enforce style, and keep code consistent.
The standard JavaScript linter with an unmatched rule and plugin ecosystem: React, accessibility, TypeScript, imports, and hundreds more. Still the default in many stacks. The reason teams move to oxlint is startup and per-file analysis time on large repos — not missing rules.
Opinionated code formatter with almost no configuration by design, which eliminates style debates. Formats JS, TS, JSX, CSS, HTML, JSON, and more. Often paired with ESLint: Prettier handles formatting, ESLint handles logic and quality.
A Rust linter from the Oxc project. 50–100× faster than ESLint because it parallelizes file analysis across CPU cores. Reached stable 1.0 in June 2025 with 500+ ESLint-compatible rules. Many teams run it alongside ESLint: oxlint for fast feedback, ESLint for rules it doesn't yet cover.
A Rust tool that handles both linting and formatting — a fork of Rome, which shipped two incompatible versions and never reached stable 1.0. 97% compatible with Prettier output. One config file, one CI step, no ESLint/Prettier version conflicts; coverage is good but not as complete as the full ESLint ecosystem.
Type-check
04 / 05These tools verify your types without changing your code.
The original TypeScript compiler, written in TypeScript. An important distinction: most build tools (SWC, esbuild, Oxc) strip types without checking them, so you still run tsc separately for actual verification. On large projects this is often the slowest step in CI — sometimes longer than the full build.
The native TypeScript compiler, ported to Go by Microsoft. Often 10× faster than tsc because Go's concurrency model maps well to parallel type-checking. Available via @typescript/native-preview. The goal: type-checking fast enough to run on every keystroke. Part of TypeScript 7, currently in beta.
Frameworks
+Full-stack options that sit on top of the toolchain.
Full-stack React on Vite and TanStack Router. Offers SSR, streaming, server functions, and API routes. Deploys to any JavaScript host (Cloudflare Workers, Node, Netlify). Uses the same Vite/Rolldown/Oxc pipeline as a plain Vite SPA, so switching is straightforward.
Full-stack routing framework for React. Remix merged into React Router v7, bringing file-based routing, loaders, actions, and SSR to the router. Vite-based with the same Rolldown/Oxc pipeline as TanStack Start — the more mature option for Remix-style data conventions.
Full-stack React framework from Vercel. Uses Turbopack and SWC instead of the Vite/Rolldown pipeline. Turbopack became the stable default in Next.js 16 (October 2025). The most widely deployed React framework in production — and the only major one not on the Vite stack.
Umbrella projects
+The teams and orgs bundling multiple tools into one pipeline.
The company behind Vite, Rolldown, and Oxc, building an integrated native JS toolchain. Evan You (creator of Vite) leads it. The goal: a single end-to-end pipeline covering dev server, bundling, transforms, and linting without switching tools or languages.
Behind Next.js, Turbopack, and heavy SWC investment. A parallel ecosystem to VoidZero: SWC compiles, Turbopack bundles, Next.js orchestrates. Most of this work is designed specifically for Next.js rather than as general-purpose tools.
Behind TanStack Start, Router, Query, Table, and Form — all Vite-based. The library layer (Query, Router) is framework-agnostic and works with Vue, Solid, and others, but Start is React-specific.
Behind React, React Compiler, Metro, and Hermes. Owns the mobile toolchain and the auto-memoization compiler. The React Compiler Rust port (draft, in progress) aims to bring native performance to the compiler step and integrate with OXC and SWC.
With the vocabulary in place, the next chapter compares how these tools assemble into real stacks: Vite SPAs, TanStack Start, Next.js, and React Native.