Performance
Measured results against Next.js, and what a route ships to the browser. The numbers come from running the same hello-world, SSR, and 30-route dashboard fixtures under both frameworks. Ratios are Next.js time or memory divided by pnext, so a larger number favors pnext.
| Metric | Result across the three fixtures |
|---|---|
| Dev first page HTML | 5.3–15.6× faster |
| HMR save to visible content | 1.3–5.9× faster |
| Production build time | 6.0–16.3× faster |
| Dev server memory | 3.1–4.2× less |
| Production cold start (ready) | 1.9–2.1× faster |
For interactive tables and per-fixture values, see pnext.dev/benchmarks.
What ships to the browser
First paint is what a page's document loads. Deferred is what the page can fetch after that: the navigation runtime loads on idle when the page has a <Link> and otherwise on first navigation, the compat.next error runtime loads on idle, and the server-action runtime loads only on a page with an action.
| Page | First paint (gzip) | Deferred (gzip) |
|---|---|---|
| Server-rendered page | 0 KB | 0 KB |
Server-rendered page with a <Link> |
1.3 KB | 21 KB, on idle |
| One island, core pnext (Preact) | 8.5 KB | 0 KB |
One island, compat.react |
15 KB | 0 KB |
One island, compat.next |
13.1 KB | 33 KB |
compat.next ships Next's router bootstrap on every page, so its pages are never the 0 KB case. These rows are the "Client runtime bundles" table of bun bench/run.ts --bundles.
The HMR result
HMR is faster than Next.js on all three fixtures, by the smallest margin on the dashboard. pnext uses live reload rather than a client HMR runtime, so component state does not survive a save. The measurement above is the time until the page serves fresh visible content.
How these were measured
These results are from 2026-11-03, using Bun 1.4.0 and Next.js 16.3.4 on a 4-vCPU AMD EPYC Linux x64 CI runner. Each metric used five runs, discarded the first, and reports medians.
- The fixtures use the same source under both frameworks.
- Dev first page HTML includes on-demand compilation after a cold server start.
- Dev memory is summed across the server process tree after readiness and seven warm requests.
- Build memory is the operating system's reported peak RSS.