vinext research · claim 3

Next.js vs vinext, one process

From 32 to 128 in flight, vinext's rate moves −2.2% (446.9 → 436.9 rps). Next's rate moves −29.0% (375.3 → 266.6) and its p99 goes from 130.7 ms to 1,914.7 ms. Every run dropped zero requests.

Out of scope. Not issue #933. No 6 replicas, no nginx, no k6, no 1000 rps target. Servers ran one at a time.

Captured runs

Concurrency

vinext serves +19.1% more requests per second and the median is −19.0 ms. The p99 goes the other way (+26.2 ms), on a +22.8% larger body.

vinext

446.9 rps

8,956 ok · 0 dropped · ≈20.0 s

p50 lower
60.9 ms
p99 lower
156.9 ms
body lower
13,358 B
vinext vs next
  • +19.1% rps
  • −19.0 ms p50
  • +26.2 ms p99
  • +22.8% body

vinext is +63.9% on rate. The median is −84.7 ms and the p99 is −1,343.8 ms against Next — 3.35× tighter — on a +22.9% larger body.

vinext

436.9 rps

8,778 ok · 0 dropped · ≈20.1 s

p50 lower
263.1 ms
p99 lower
570.9 ms
body lower
13,371 B
vinext vs next
  • +63.9% rps
  • −84.7 ms p50
  • −1,343.8 ms p99
  • +22.9% body

All four runs

FrameworkIn flightrpsp50p99okdroppedbodywindow
Next.js32375.379.9 ms130.7 ms7,520010,880 B≈20.0 s
vinext32446.960.9 ms156.9 ms8,956013,358 B≈20.0 s
Next.js128266.6347.8 ms1,914.7 ms5,364010,880 B≈20.1 s
vinext128436.9263.1 ms570.9 ms8,778013,371 B≈20.1 s

Score a run

Paste JSON printed by load.mjs, or a file with a runs array. Nothing leaves this browser.

Route mix and how to read the numbers

The harness hits ten paths, round-robin, with Node fetch. The “10s abort” in the method line is the per-request timeout (10_000 ms in load.mjs), not the length of the run. Completed requests divided by rps lands on ≈20.0–20.1 s, which is that script's default duration.

Average body size stays put when concurrency changes (Next 10,880 B at both widths; vinext 13,358 B then 13,371 B), so the extra ~23% is payload, not queueing. The captured dashboard HTML snapshots differ by one byte — the extra weight is elsewhere in the mix. Bars use the worse of the pair as 100%. Lower is better for p50, p99, and body. Higher is better for rps.