Compare frameworks
How AponiaJS compares to NestJS, AdonisJS, Elysia, Express, Fastify, and Hono — architecture, runtime, validation, and what each one is good at.
Every framework here is a reasonable choice for some project. These pages exist so you can tell quickly whether AponiaJS is the wrong tool for yours, which is the more common answer while it is pre-1.0.
Read this before comparing anything
AponiaJS 0.6.0-alpha.18 is experimental. NestJS, AdonisJS, Express,
Fastify, Hono, and Elysia are all stable, production-proven projects. If you
are shipping to users this quarter, pick one of them.
Pick by what you need
- AponiaJSAlphaBunModules, DI, and decorated controllers on Bun, when alpha software is acceptable.
- NestJSStableNode, BunThe same structure with a complete request pipeline, OpenAPI, and production maturity.
- AdonisJSStableNodeA whole product: ORM, auth, sessions, and views decided for you.
- ElysiaStableBunThe fastest path on Bun when one chained application file is still readable.
- ExpressStableNode, BunThe largest middleware ecosystem, and no opinion about anything else.
- FastifyStableNode, BunSchema-first Node services with hooks and compiled serialization.
- HonoStableEverywhereOne codebase deployed to Workers, Deno, Bun, Node, and Lambda.
Compared page by page
AponiaJS vs NestJS
Same vocabulary, one runtime, a much smaller feature set.
AponiaJS vs AdonisJS
Batteries-included full-stack against a thin HTTP and DI layer.
AponiaJS vs Elysia
What the module graph adds to the runtime it is built on.
AponiaJS vs Express
Unopinionated middleware against an opinionated class model.
AponiaJS vs Fastify
Plugin encapsulation against a validated module graph.
AponiaJS vs Hono
Run anywhere against Bun-only structure.
How to read these comparisons
Three questions decide most of them.
Which runtime do you deploy to? AponiaJS and Elysia require Bun. Hono runs on Workers, Deno, Bun, Node, and Lambda. NestJS, AdonisJS, Express, and Fastify target Node, and run on Bun with varying amounts of friction. A framework that cannot run where you deploy is not a candidate, whatever else it does well.
How much does the framework decide for you? AdonisJS decides the database layer, the auth layer, and the directory structure. Express decides nothing. AponiaJS decides how code is organised and wired, and leaves storage, auth, and configuration entirely to you.
How much churn can you absorb? Everything in the table above except AponiaJS has a stable major release and a migration guide culture. AponiaJS changes between alpha releases.
Where AponiaJS actually fits
A narrow band: you are already committed to Bun and Elysia, the single-file chained application has stopped scaling for your team, you want NestJS-style modules and constructor injection without the Node-shaped baggage, and you can tolerate alpha software.
Outside that band, one of the other five is the better answer, and these pages say so on each one.
Current limitations
Exactly what is not implemented yet.
Benchmark
The harness, the pinned versions, and the scope of every number.
Migrate
Step-by-step ports from NestJS and from Elysia.
Frequently asked questions
- Is AponiaJS an alternative to NestJS?
- It is a smaller one. AponiaJS reuses the NestJS structural vocabulary — modules, decorated controllers, providers, constructor injection — but it runs only on Bun through Elysia and it does not implement guards, interceptors, pipes, exception filters, provider scopes, a testing module, or OpenAPI generation. NestJS is production software; AponiaJS is pre-1.0 alpha.
- How is AponiaJS different from AdonisJS?
- AdonisJS is a full-stack Node.js framework that ships an ORM, validation, authentication, authorization, sessions, templating, and configuration. AponiaJS ships an HTTP layer and a dependency injection container on Bun, and nothing else. You bring your own database, auth, and config.
- Should I use AponiaJS or plain Elysia?
- Use plain Elysia for a small service where a single chained application file is still readable. Use AponiaJS when you want module boundaries, constructor injection, and controller classes on top of the same Elysia runtime — the native Elysia instance stays reachable either way.
- Which Bun framework is fastest?
- AponiaJS registers routes on a single Elysia instance and resolves providers once at startup, so request-path throughput tracks Elysia closely. Numbers are only meaningful with their scope attached; the benchmark section publishes the harness, pinned versions, and phases rather than a single ratio.
- Can I use AponiaJS in production?
- Not yet. AponiaJS 0.6.0-alpha.18 is experimental pre-1.0 software with a changing API. For a production workload today, choose NestJS, AdonisJS, Fastify, or Hono, and revisit AponiaJS when it reaches a stable release.