performance

Benchmarks

The same fixture source runs under both frameworks and bun bench measures them side by side. Every number below is one full run's output — no estimates, no best-of cherry-picking.

  1. First-page client JS (gzip)9.5–65× less
  2. Framework install size — 7.1 MB vs 420.7 MB59× smaller
  3. First page, cold10–12× faster
  4. Production build7.2–8.8× faster
  5. Warm request (dev)1.6–4.7× faster
  6. Dev server ready3.8–4.3× faster
  7. Dev server memory3.4–4.1× less
  8. Warm request (prod)2–3.4× faster

Ranges span all three fixtures. Absolute numbers per fixture are below. pnext trails on two metrics: dev warm requests on the larger fixtures, and production idle memory (~112 MB vs Next's ~86–91 MB, Bun's runtime baseline).

Category
Run

Payload metrics are measured on the built output, so they are neither a cold nor a warm run. Set Run back to All to see them.

pnextNext.js

hello-worldA single page.

Dev server ready
56.4 ms212.3 ms
3.76×
Dev first page HTML
79.9 ms993.5 ms
12.44×
Dev warm request (p50 of 7)
3.0 ms14.0 ms
4.69×
HMR save → visible
21.9 ms44.8 ms
2.04×
Production build (wall)
291.3 ms2569.4 ms
8.82×
Prod start (ready)
60.7 ms110.9 ms
1.83×
Prod warm request (p50 of 7)
0.6 ms1.2 ms
2.05×
Dev server RSS (ready + 7 warm)
130.8 MB536.4 MB
4.10×
Prod build peak RSS
124.2 MB455.8 MB
3.67×
Prod server RSS (ready + 7 warm)
85.2 MB85.7 MB
1.01×
Framework install size
7.1 MB420.7 MB
59.14×
First-page client JS (gzip)
2.19 KB141.78 KB
64.67×
First-page client JS (raw)
4.43 KB502.47 KB
113.36×
First-page JS files
35
1.67×
Zero-island route client JS
4.43 KB502.47 KB
113.36×

ssrA server-rendered site.

Dev server ready
56.0 ms212.8 ms
3.80×
Dev first page HTML
93.5 ms1043.3 ms
11.16×
Dev warm request (p50 of 7)
16.5 ms26.4 ms
1.60×
HMR save → visible
264.3 ms68.3 ms
0.26×
Production build (wall)
310.5 ms2738.8 ms
8.82×
Prod start (ready)
57.1 ms105.5 ms
1.85×
Prod warm request (p50 of 7)
0.5 ms1.3 ms
2.50×
Dev server RSS (ready + 7 warm)
151.3 MB553.6 MB
3.66×
Prod build peak RSS
136.8 MB456.6 MB
3.34×
Prod server RSS (ready + 7 warm)
86.0 MB85.9 MB
1.00×
Framework install size
7.1 MB420.7 MB
59.14×
First-page client JS (gzip)
11.39 KB142.03 KB
12.47×
First-page client JS (raw)
27.36 KB502.78 KB
18.37×
First-page JS files
46
1.50×
Zero-island route client JS
4.46 KB502.47 KB
112.56×

dashboardA mid-size admin app — 30 routes, 18 client islands.

Dev server ready
57.1 ms246.4 ms
4.31×
Dev first page HTML
127.0 ms1285.8 ms
10.12×
Dev warm request (p50 of 7)
21.6 ms34.1 ms
1.58×
HMR save → visible
300.4 ms97.6 ms
0.32×
Production build (wall)
637.5 ms4566.3 ms
7.16×
Prod start (ready)
55.6 ms128.8 ms
2.32×
Prod warm request (p50 of 7)
0.5 ms1.7 ms
3.41×
Dev server RSS (ready + 7 warm)
168.6 MB577.1 MB
3.42×
Prod build peak RSS
188.0 MB569.0 MB
3.03×
Prod server RSS (ready + 7 warm)
87.3 MB90.6 MB
1.04×
Framework install size
7.1 MB420.7 MB
59.14×
First-page client JS (gzip)
15.26 KB144.85 KB
9.50×
First-page client JS (raw)
38.51 KB507.42 KB
13.18×
First-page JS files
69
1.50×

Ratio is Next.js ÷ pnext, so above 1.00× means pnext is ahead. Lower is better for every metric here.

Client runtime bundles

RuntimeRawGzipBrotli
router-prefetch-only473 B348 B283 B
combined-router-hydrator10.47 KB4.47 KB4.07 KB

Method

  • Run of 2026-08-20 on CI — Blacksmith 4 vCPU (Intel Xeon), 16 GB RAM, Ubuntu 22.04 x64. Bun 1.3.10, Next.js 16.2.12. 5 per metric (first discarded), medians reported.
  • Every fixture runs unmodified on both frameworks (via compat.next), same app from the same source.
  • Cold starts include on-demand compilation; memory is measured across the whole process tree at a fixed point, never sampled arbitrarily.
  • Full details, targets, and the exact commands are in the performance reference.