Benchmarks
The same React + TypeScript app built by every tool, installed from npm, in one session. HMR is the time from saving App.tsx to Chromium showing the change.
lunx 1.2.0
Small app
| Tool | Dev boot | HMR | Build (cold) | Build (warm) | JS (gzip) |
|---|---|---|---|---|---|
| lunx | 248 ms | 30 ms | 369 ms | 385 ms | 66.2 KB |
| Vite 8 | 409 ms | 40 ms | 663 ms | 487 ms | 66.4 KB |
| Rsbuild 2 | 432 ms | 86 ms | 511 ms | 487 ms | 67.6 KB |
| Rspack 2 | 376 ms | 208 ms | 386 ms | 370 ms | 67.4 KB |
| Parcel | 1449 ms | 35 ms | 1693 ms | 1761 ms | 68.0 KB |
| webpack | 1578 ms | 275 ms | 4313 ms | 4066 ms | 68.7 KB |
| esbuild | – | – | 66 ms | 65 ms | 67.3 KB |
| Bun | – | – | 41 ms | 46 ms | 64.0 KB |
Large app: 2,000 components
| Tool | Dev boot | HMR | Build (cold) | Build (warm) | JS (gzip) |
|---|---|---|---|---|---|
| lunx | 243 ms | 151 ms | 583 ms | 547 ms | 83.4 KB |
| Vite 8 | 389 ms | 161 ms | 829 ms | 651 ms | 83.7 KB |
| Rsbuild 2 | 944 ms | 440 ms | 777 ms | 754 ms | 88.5 KB |
| Rspack 2 | 700 ms | 656 ms | 804 ms | 878 ms | 89.3 KB |
| Parcel | 4523 ms | 177 ms | 5042 ms | 5060 ms | 88.9 KB |
| webpack | 4268 ms | 1113 ms | 8763 ms | 8715 ms | 87.3 KB |
| esbuild | – | – | 145 ms | 144 ms | 85.2 KB |
| Bun | – | – | 106 ms | 82 ms | 80.5 KB |
An unchanged lunx build of the large app takes about 150 ms with the build cache.
Where lunx is behind
- esbuild and Bun bundle several times faster, without a dev server, HMR or framework support.
- Bun's JS is 3–4% smaller: it removes more unused code inside React's CommonJS files.
- Rspack's warm build of the small app is 15 ms faster, within run-to-run noise.
Run it yourself
In the lunx repository:
npx tsx scripts/bench-arena.mjs --hmr [--scale 2000]. Results are written to reports/BENCH_ARENA*.json. Compare ratios, not absolute times; they depend on the machine.