Skip to content

Performance

Nestelia adds a thin decorator and dependency-injection layer on top of Elysia — with near-zero overhead. The result: NestJS-style developer experience at Elysia-level speed.

1.7x faster than Fastify
1.9x faster than Express
2.3x faster than NestJS
ElysiaBun
74,395 reqs/s
NesteliaBun
71,703 reqs/s
FastifyNode
42,640 reqs/s
ExpressNode
37,825 reqs/s
NestJSNode
30,582 reqs/s
Average reqs/s across 5 scenarios. 500 connections, 10s per scenario. macOS arm64, Bun 1.3, Node 24.

Results by scenario

ScenarioNesteliaElysiaFastifyExpressNestJS
Plain Text GET /74,91479,28747,60040,38538,413
JSON GET /json73,43876,92545,01038,80736,527
Path Params GET /user/:id74,28975,07745,74738,25027,598
POST JSON POST /user62,39963,48729,79334,03824,833
DI + Service GET /users73,47677,19745,05137,64725,539
Average71,70374,39542,64037,82530,582

How to reproduce

bash
# Install benchmark dependencies
cd benchmark && bun install && cd ..

# Install a load testing tool
brew install bombardier

# Run all benchmarks (5 scenarios × 5 frameworks)
bun run bench

# Or run specific frameworks
bun run bench nestelia elysia fastify

Why is Nestelia fast?

Nestelia resolves all dependency injection, module wiring, and route registration at startup time. At request time, simple handlers call service methods directly — no middleware chain, no per-request container lookups, no reflection.

NesteliaNestJS
RuntimeBunNode.js
HTTP layerElysiaExpress (default)
DI resolutionStartup-timeStartup-time
Metadata reflectionCached at startupPer-request
Request contextFast path skips itAlways created
Middleware chainNone (Elysia handlers)Express middleware stack
ValidationElysia TypeBox (compile-time)class-validator (runtime reflection)

Released under the MIT License.