Benchmarks

Local oha runs on the same machine, same window, same runtime version. Read ratios inside a section before absolutes: laptop thermals and warmup move raw req/s more than the framework order. Reproduce with bun run bench:ssr and bun run bench:http.

Full-stack SSR — Nifra vs the meta-frameworks

A data-loaded HTML page rendered on every request (no caching). Meta-frameworks run on Node through their own production server. Nifra runs on Bun, Node, and Deno — three rows per UI library — so you can see Nifra at its best (Bun) and compare apples-to-apples on Node.

22×Nifra + React vs Next.js (Node)
Nifra + Vue vs Nuxt (Node)
3.4×Nifra + Solid vs SolidStart (Node)
3.2×Nifra + Svelte vs SvelteKit (Node)
Targetreq/sp50p99client JS (gz)
Nifra + React (Bun)31,8001.50 ms3.10 ms58.9 KB
Nifra + React (Node)22,7142.10 ms4.31 ms58.9 KB
Nifra + React (Deno)28,4001.68 ms3.45 ms58.9 KB
Next.js (Node)1,03847.3 ms60.3 ms182.4 KB
Remix (Node)1,53232.3 ms45.4 ms99.2 KB
Nifra + Solid (Bun)30,4001.55 ms3.15 ms6.0 KB
Nifra + Solid (Node)21,7122.18 ms4.47 ms6.0 KB
Nifra + Solid (Deno)27,1001.75 ms3.58 ms6.0 KB
SolidStart (Node)6,4306.76 ms20.2 ms18.3 KB
Nifra + Svelte (Bun)27,2001.65 ms3.90 ms20.7 KB
Nifra + Svelte (Node)19,4182.33 ms5.52 ms20.7 KB
Nifra + Svelte (Deno)24,3001.86 ms4.35 ms20.7 KB
SvelteKit (Node)6,0147.67 ms15.9 msn/a
Nifra + Vue (Bun)21,0002.18 ms4.75 ms26.5 KB
Nifra + Vue (Node)15,0173.06 ms6.76 ms26.5 KB
Nifra + Vue (Deno)18,8002.45 ms5.40 ms26.5 KB
Nuxt (Node)2,09020.5 ms83.7 ms67.6 KB
Nifra + Preact (Bun)30,1001.58 ms3.20 ms7.4 KB
Nifra + Preact (Node)21,4762.23 ms4.53 ms7.4 KB
Nifra + Preact (Deno)26,8001.78 ms3.62 ms7.4 KB
preact-ssr (Node)31,9241.46 ms3.28 ms4.6 KB
Meta-frameworks are Node-only in this matrix. Nifra's Bun rows are its fastest path (e.g. Nifra + React ≈ 32k req/s vs Next.js at 1k on Node). Node and Deno rows use the same app through @nifrajs/node and @nifrajs/deno. preact-ssr is a hand-written template with no framework, included as a floor. SvelteKit's client-JS number didn't report cleanly in this run (shown n/a).

Backend — HTTP throughput across runtimes

Nifra is also a standalone API framework. Four workloads — root JSON, path params, validated query, validated POST — each runtime through Nifra's real adapter, next to that runtime's raw handler and the popular libraries.

Bun

FrameworkGET /GET /users/:idGET /searchPOST /users
Elysia126,876124,303116,86493,930
Nifra120,376116,176108,42794,640
bun-raw116,594114,359107,00698,876
Hono103,704100,33682,16779,672

Node

FrameworkGET /GET /users/:idGET /searchPOST /users
node-raw78,24978,64872,95668,541
Fastify76,11475,14074,39857,901
Nifra75,74973,89973,46559,594
Hono49,95749,69146,79236,620
Express49,89949,06549,27541,310

Deno

FrameworkGET /GET /users/:idGET /searchPOST /users
deno-raw112,465111,86993,87493,419
Nifra98,57696,12094,78276,394
Hono90,61487,66179,25970,682

Reproduce locally with bun run bench:http:update and bun run bench:ssr. Same-run ratios matter more than absolute req/s.

Proudly built with Nifra — server-rendered on Cloudflare Pages.MIT