image
Akan.js
DocsBlog
English
image
Akan.js
DocsBlog
DocsBlog
Released under the MIT License
Official Akan.js Consulting onAkansoft
Copyright © 2026 Akan.js All rights reserved.
System managed bybassman

Production Stability

Cold‑start · soak · cross‑framework comparison

Akan.js is production‑grade, not just fast

We ran Akan.js and five peer frameworks through a 30‑minute production‑style soak on Apple Silicon. The result: Akan.js matches the throughput of the fastest Bun‑native routers while staying stable, restart‑free, and memory‑safe for the entire run.

How we measured

Workload

Pure HTTP ping (no DB, no auth) — the lightweight‑router ceiling every framework is measured against.

Artifacts

Prebuilt production JS bundles. We measured process‑spawn to first‑ready, excluding build and TypeScript loader time for every target.

Duration

30 minutes per target at 50 concurrent virtual users with 10 s warm‑up. Resource samples every 5 seconds.

Machine

Apple Silicon MacBook Pro. Bun‑native targets on Bun 1.3. Fastify on Node 22. Background jobs were kept quiet during the entire run.

Throughput at the lightweight‑router ceiling

Akan.js delivers 112K requests per second through its gateway‑to‑worker path — within 3% of raw Bun.serve and dead even with ElysiaJS. The entire top four Bun‑native frameworks clustered within 10% of each other, which means the runtime ceiling matters more than the framework choice for this workload.

Requests per second

raw Bun.serve (Bun)115663.0 RPS
ElysiaJS (Bun)114292.0 RPS
Hono (Bun)105728.0 RPS
raw sqlite (Bun)100558.0 RPS
Fastify (Node)57585.0 RPS
Akan.js (Bun)112247.0 RPS

Bars are proportional to the highest RPS in the set. Fastify runs on Node — its number partly reflects the runtime, not just the framework.

Cold start and idle footprint

Akan.js cold‑start p50 is ~204 ms — about 100 ms slower than single‑process peers. This is the one‑time cost of spawning a gateway plus a worker process. It does not affect per‑request latency and is comfortably inside our 1,500 ms SLO.

TargetCold p50Cold p95Idle RSS
raw Bun.serve(Bun)102.5 ms~108 ms45.6 MB
ElysiaJS(Bun)104.3 ms~109 ms53 MB
Akan.js(Bun)203.6 ms~209 ms84 MB
Hono(Bun)104 ms~109 ms47.1 MB
raw sqlite(Bun)102.4 ms~107 ms49.6 MB
Fastify(Node)103.8 ms~109 ms64.3 MB

10 iterations per target, 60 s settle between runs. Akan.js cold‑start uses the /_akan/app/health ready‑child check; peers use HTTP ping.

Soak stability: the metric that matters in production

A 30‑minute sustained load at 50 concurrent users. Zero errors, zero worker restarts, zero RSC recycles, and event‑loop lag stayed under 4 ms. All six frameworks passed, but Akan.js is the only one that can report these metrics natively through its built‑in /_akan/app/metrics endpoint.

MetricAkan.jsAll frameworks
30‑min soak error rate0.0%0.0%
Worker restarts0—
RSC worker recycles0—
Event-loop lag p993.78 ms—
Memory growth per hour−120.5 MB/h (stable)All frameworks showed negative or near-zero growth.

Why the numbers differ — and why that is fine

Gateway + worker architecture

Akan.js runs a gateway process that proxies to child worker processes. This gives you automatic process isolation, health checking, graceful restart, and per-worker metrics — all before you write a single line of infrastructure code. The cost is ~100ms of cold-start overhead versus a single-process server. That 100ms is not latency per request — it is paid once at startup and vanishes under any sustained traffic.

Full-stack runtime, not just a router

The peers in this comparison are HTTP routers with in-memory data. Akan.js loads an entire application stack: Signal context with guards and serialization, document store with DataLoader batching, SSR/RSC worker pipeline, WebSocket pubsub, and a metrics endpoint. The fact that it stays within 3% of raw Bun.serve even under this full-stack load is the actual story.

Heavier idle footprint is expected and bounded

Akan.js idle RSS (~84 MB) is about 1.8× a minimal router. This reflects the loaded service modules, schema registries, and worker scaffolding that your application actually needs. Importantly, the 30‑minute soak shows no memory creep — the growth slope is negative and the peak RSS stabilised. A memory profile that stays flat under sustained load is what matters for production, not the absolute number at startup.

Bottom line

Akan.js is not the fastest HTTP framework on a synthetic ping benchmark — and it should not be. It runs a gateway‑and‑worker architecture, loads an entire full‑stack runtime, and still delivers throughput indistinguishable from the Bun‑native ceiling. After 30 minutes of sustained load: zero errors, zero restarts, flat memory. That is what production‑grade looks like.

Benchmark run ID: 2026-06-12T10-25-39-prod-compare. All targets used prebuilt production artifacts. Raw data and the open‑source harness are available in the benchmarks/api-benchmark directory of the Ieading-flight-guidance repository.