Getting Started

Benchmarks

NextRush v3 performance dashboard — head-to-head HTTP throughput vs Fastify, Hono, Koa, Express, and a raw Node.js baseline. Interactive charts, heatmap, scenario explorer, and reproducible methodology.

NextRush is built for production throughput without sacrificing safety. This page is a performance dashboard for the latest parity-validated suite run — not a wall of anonymous bar charts. Every figure comes from apps/benchmark and the same results.json you can regenerate yourself.

Performance

Designed for production throughput.

NextRush v3 ranks #3 overall among popular Node.js frameworks — consistently ~85–92% of a raw Node baseline on like-for-like scenarios, with Fastify ahead and Hono behind.

Timed runs

1,404

Frameworks

6

Scenarios

13

Headline rank

#3

Run 2026-07-31T18-15-15 · wrk 4.2.0 · Node v26.5.1 · Intel Core i5-8300H · 8 logical cores · standard · 6 runs · 30s · pin 2–7

Compare frameworks

Overall ranking

Like-for-like scenarios only — 9 scenarios × 2 concurrency levels × 6 frameworks = 108 points. A win is worth 6 points, last place 1. Ties inside noise split points.

Fastify90.5
Raw105.5
NextRush68.1
  1. 1
    Raw Node.jsbaseline105.5/108
  2. 2
    Fastify90.5/108
  3. 3
    NextRush v3target68.1/108
  4. 4
    Hono60.1/108
  5. 5
    Koa34/108
  6. 6
    Express20/108

Hello World @ 256c

Vertical column chart — pure framework overhead. The everyday “how fast is the shell?” number.

Same data, ranked

Horizontal leaderboard view of the same cell. Rank badges + % of leader.

1Raw Node.js
35,503 RPS
2Fastify
32,703 RPS
2NextRush v3
31,343 RPS
2Hono
31,073 RPS
5Koa
24,779 RPS
6Express
22,508 RPS

Scenario heatmap

One glance across every like-for-like scenario. Each cell is % of the fastest framework in that row.

ScenarioRawNextRushFastifyHonoKoaExpress
Hello World
100%
88.3%
92.1%
87.5%
69.8%
63.4%
JSON Serialization
100%
90.6%
97.4%
85.6%
70.3%
65.5%
Large JSON
100%
91.7%
96.3%
86%
76.2%
68.9%
Send Object
100%
89.9%
89%
84.5%
68.5%
61.1%
Route Parameters
100%
85.7%
91.3%
82.9%
69%
62%
Deep Route
100%
87.7%
94.2%
87.3%
69.9%
65.3%
Query Strings
100%
88.7%
95.2%
84.7%
70.3%
66.2%
POST JSON
100%
75.3%
80.7%
78.5%
63.5%
61.4%
Empty Response
100%
79.8%
88.8%
79.7%
67.1%
73%

Cell = % of the fastest framework in that scenario @ 256 connections. Green is near the leader; amber/rose trails.

Scenario explorer

Pick a scenario to see purpose, story metrics, charts, and latency.

Hello World

Minimal JSON response — pure framework overhead.

RoutingResponseHeaders

NextRush

31,343

RPS @ 256c

vs baseline

88.3%

of raw Node

vs Fastify

-4.2%

relative

Latency p50

7.98ms

p99 10.09ms

Why it matters. Shows how much cost the framework adds before any real work. In this run: NextRush sits at 88% of raw Node — mid-pack with Fastify and Hono inside noise. vs Hono: +0.9%.

FrameworkRPSCV%p50p99
Raw Node.js35,5031.596.86ms10.95ms
Fastify32,7034.927.23ms11.75ms
NextRush v331,3432.517.98ms10.09ms
Hono31,0732.158.16ms8.68ms
Koa24,7792.1610.22ms11.12ms
Express22,5082.9111.17ms12.42ms

Concurrency scaling

Hello World RPS at 1 · 64 · 256 connections. Line color matches the framework legend.

16k22k27k32k38k1c64c256c
Raw Node.jsNextRush v3FastifyHonoKoaExpress

Hello World RPS across concurrency. All frameworks plateau similarly from 64→256 — no scaling collapse under load in this run.

What the numbers mean

Takeaways a reader should remember — not just the raw RPS table.

  • Serialization is a strength

    Large JSON (91.7%) and Send Object (89.9%) sit closest to the raw Node baseline — low framework tax when payload work dominates.

  • Routing stays competitive

    Route params and deep routes hold ~86–88% of baseline and track Fastify within a few points; Hono trails slightly on most routing cells.

  • POST JSON is the main gap

    75% of baseline. Body parsers are not equivalent: safety checks (depth limits, prototype poisoning) cost RPS. Raw Node does the least defensive work here.

  • Noise ≠ ranking

    18 adjacent orderings fall inside combined stddev (including several NextRush ↔ Fastify / Hono pairs). Those are scored as ties — do not cite them as leads.

  • Stable under concurrency

    Scaling from 64→256 connections plateaus cleanly for every framework. No collapse under the headline throughput regime.

  • Idiomatic ≠ like-for-like

    Middleware, error handling, and static file use each framework’s own mechanism. Shown for completeness; excluded from the 108-point headline.

Trust these numbers

Mechanical fairness guarantees from the parity-validated suite. Full detail in Methodology below.

  • CPU pinned (server 2–7 · client 0–1)
  • Framework order rotated
  • 6 runs × sample stddev + CV%
  • Parity-validated identical payloads
  • Process-isolated wrk (not event-loop shared)
  • Warmup before every timed cell
  • Gaps inside noise scored as ties
  • Deviations from stock defaults disclosed

How to read the scoreboard

The headline number is not “wins every RPS race.” It is a points total over like-for-like work:

RuleDetail
Scored scenarios9 like-for-like scenarios (byte-identical responses across frameworks)
ConcurrencyRanked at 64c and 256c (1c is a latency probe, not headline)
Points6 frameworks → win = 6 pts, last = 1 pt per cell
Max9 × 2 × 6 = 108 points
Excludedmiddleware-stack, error-handling, static-file (idiomatic mechanisms) · large-post (not measured at headline concurrency)

Raw Node.js is the zero-framework baseline. It winning most cells is expected — it is the yardstick, not a product competitor.

RankFrameworkScoreScenario winsRole
🥇Raw Node.js105.5 / 10818baseline
🥈Fastify90.5 / 1085comparison
🥉NextRush v368.1 / 1080target
4Hono60.1 / 1080comparison
5Koa34.0 / 1080comparison
6Express20.0 / 1080comparison

Story in one paragraph

NextRush sits consistently mid-pack of modern frameworks: above Hono/Koa/Express, behind Fastify and the raw baseline. On serialization-heavy routes it reaches ~90–92% of baseline. The main relative gap is POST JSON (75%), where parsers do unequal safety work. Several NextRush ↔ Fastify / Hono orderings fall inside measurement noise and are scored as ties — treat those as “too close to call,” not marketing wins.

Summary table @ 256 connections

Requests per second (mean of 6 runs). Bold = fastest in row. = idiomatic (not in headline score).

ScenarioRaw NodeNextRush v3FastifyHonoKoaExpress
Hello World35,50331,34332,70331,07324,77922,508
JSON Serialization34,46631,24233,57029,51524,22422,567
Route Parameters33,67228,84730,74327,91123,21720,889
Query Strings27,78624,65226,45223,54219,53018,395
POST JSON25,42019,14420,50819,95316,13215,617
Deep Route32,66928,63730,77628,52122,84421,332
Large JSON22,58920,71721,74819,41617,20915,558
Empty Response44,81835,77839,78235,71430,07732,730
Send Object35,32931,75131,45629,84924,20121,570
Middleware Stack †30,74924,18830,52724,27321,96420,180
Error Handling †24,97119,40921,53420,45716,76315,474
Static File †14,7599,23811,0007,9226,55610,996

NextRush vs baseline (like-for-like only): Hello 88% · JSON 91% · Params 86% · Query 89% · POST 75% · Deep 88% · Large JSON 92% · Empty 80% · Send Object 90%.

Measurement environment

PropertyValue
Run ID2026-07-31T18-15-15
CPUIntel Core i5-8300H @ 2.30GHz (8 logical cores)
Platformlinux x64 · kernel 7.1.5
Node.jsv26.5.1
Memory15.46 GB total
Load toolwrk 4.2.0 (process-isolated)
Duration30 s per cell
Connections1 · 64 · 256
Runs / config6 (mean ± sample stddev + CV%)
CPU pinningserver cores 2–7 · client cores 0–1
Orderframework order rotated
Timed cells1,404 × 30s

Framework versions (recorded at run time)

ServerVersionRole
Raw Node.jsNode v26.5.1baseline
NextRush v34.0.0-beta.0 (workspace)target
Fastify5.10.0comparison
Hono4.12.30comparison
Koa3.2.1comparison
Express5.2.1comparison

Methodology

Parity gate first

pnpm bench:validate boots every server and asserts byte-identical bodies, statuses, and headers for like-for-like scenarios. A mismatch aborts the run before any timing.

Process isolation

wrk runs as a separate C process. It does not share the server’s Node event loop (unlike in-process autocannon).

Warmup + cooldown

Framework-level and per-scenario warmup so JIT paths are hot. Cooldown between frameworks; pause between cells.

Noise control

CPU pinning, rotated framework order, no HTTP pipelining, multi-run statistics. Adjacent rankings whose gap is smaller than combined stddev are ties, not leads.

Disclosed deviations

Stock defaults that would break parity (e.g. Express etag hashing, Fastify response schemas) are adjusted and listed in the report with who they help or hurt.

Read absolute RPS carefully

Load runs over loopback — client and server share one machine. Absolute RPS reflects the whole box, not a framework in isolation. Use relative rankings on identical hardware. Different machines (and dirty working trees) produce different absolute numbers. Body/query parsers also do unequal safety work; a parse scenario rewards the least-defensive parser.

Known work asymmetries called out in the report:

  • query-string — NextRush decodes pairs and enforces limits + prototype-key rejection; raw Node uses bare URLSearchParams.
  • post-json — Fastify uses secure-json-parse by default; NextRush adds nesting-depth checks; raw Node uses bare JSON.parse.
  • static-file — raw Node matches one literal path with no traversal-safe resolver (mechanism comparison).

Run it yourself

cd apps/benchmark
pnpm install

# 1. Confirm fairness — identical bodies/headers or the run aborts
pnpm bench:validate

# 2. Publishable multi-framework compare (CPU-pinned)
node scripts/run.js --compare --profile standard --runs 6 --pin 2-7 --client-pin 0-1

# 3. Generate report + tables from results.json
pnpm report
ProfileDurationConnectionsRunsPublishable?
quick10s64, 1281No
standard30s1, 64, 2563+Yes (when clean + multi-run)
full60s1, 64, 256, 5125Yes

Full methodology, fairness guarantees, and wall-clock estimates live in apps/benchmark/README.md. Latest machine report: apps/benchmark/results/latest/REPORT.md.

Was this helpful?

On this page