September 27, 2026

Perbandingan: Express vs Fastify vs NestJS vs AdonisJS vs Next.js.

Tabel perbandingan lima framework Node.js — filosofi, routing, middleware, validasi, DI, ORM, testing, performa, ekosistem — plus panduan kapan memilih yang mana.

Catatan ini merangkum lima catatan sebelumnya — Express , Fastify , NestJS , AdonisJS , dan Next.js — ke dalam tabel perbandingan dan panduan memilih. Semua versi per September 2026.

Satu hal yang perlu diluruskan dulu: kelima framework ini tidak berada di level yang sama.

LevelFrameworkAnalogi
Micro-framework HTTPExpress, FastifyMesin + rangka; sisanya rakit sendiri
Framework aplikasi backendNestJS, AdonisJSMobil jadi, lengkap dengan aturan main
Framework full-stack UINext.jsMobil + showroom: UI React dan server dalam satu paket

NestJS bahkan berjalan di atas Express atau Fastify. Jadi pertanyaannya sering bukan “mana yang terbaik”, tapi “seberapa banyak struktur yang aku butuhkan, dan apakah aku butuh UI React di project yang sama”.


1. Ringkasan Versi

FrameworkVersi terbaru (npm)Node.js minimumBahasa
Express5.2.118JS (tipe via @types/express)
Fastify5.12.x20JS + tipe bawaan
NestJS12.1.x20.19 / 22.12 / 24 (CLI: 22.22.3+)TypeScript
AdonisJS7.5.x24TypeScript
Next.js16.3.x20.9TS/JS + React 19

2. Tabel Perbandingan Fitur

AspekExpressFastifyNestJSAdonisJSNext.js
FilosofiMinimalis, unopinionatedCepat, schema-first, pluginArsitektur modular ala AngularBatteries-included ala LaravelReact full-stack, server-first
Struktur folderBebasBebas (autoload opsional)Module per fitur (ditentukan)Konvensi ketat app/, start/, config/File-system routing di app/
Routingapp.get(), Router(), linearfind-my-way (radix tree)Decorator @Get() di controllerstart/routes.ts, resource, named routeFolder + page.tsx / route.ts
Middleware(req, res, next) berantaiHooks lifecycle + pluginMiddleware, guard, interceptor, pipe, filterClass middleware: server / router / namedproxy.ts global (dulu middleware.ts)
ValidasiLibrary luar (Zod, Joi, express-validator)JSON Schema (Ajv) bawaan + type providerValidationPipe + class-validator, atau Standard Schema (Zod)VineJS bawaanLibrary luar (Zod)
Serialisasi responsJSON.stringifyfast-json-stringify dari skemaTergantung adapter + interceptorTransformers (v7)Response.json / RSC payload
DI / IoCTidak adaDecorator + encapsulation pluginDI container penuh (inti framework)IoC container + @inject()Tidak ada
Data layerBebas (Prisma, Drizzle, Knex)Bebas, via plugin decoratorTypeORM/Mongoose (paket resmi), Prisma, MikroORMLucid (Active Record, bawaan)Bebas, pola Data Access Layer + server-only
AuthPassport, library luar@fastify/jwt, @fastify/auth@nestjs/passport, guard@adonisjs/auth bawaanLibrary luar (Auth.js, dll.)
TestingSupertest + node:test/Vitest/Jestapp.inject() bawaan@nestjs/testing + Vitest (ESM) / JestJapa + API client bawaanVitest/Jest + Playwright
CLI generatorTidak ada (resmi)fastify-clinest CLIacecreate-next-app
UI renderingTemplate engine opsional@fastify/view opsionalOpsionalEdge / Inertia (React/Vue)Inti framework (React)
Kurva belajarRendahRendah–menengahTinggiMenengah (rendah jika dari Laravel)Menengah (konsep server/client)

3. Performa

Angka yang bisa dikutip

Sumber: fastify/benchmarks (juga di fastify.dev/benchmarks ), run 2 September 2026, Node v24.20.0, Linux x64 4 vCPU, autocannon -c 100 -d 40 -p 10, endpoint “hello world” JSON.

FrameworkVersiReq/sLatency (ms)
node-http (baseline tanpa framework)v24.20.098.8649,61
Fastify5.12.197.5959,73
AdonisJS (@adonisjs/http-server)9.3.089.83710,67
Express5.2.159.65116,25
Express + beberapa middleware5.2.151.26419,01

NestJS dan Next.js tidak ada di benchmark tersebut, jadi aku tidak menuliskan angkanya.

Cara membaca angka ini

  • Benchmark ini mengukur overhead framework pada endpoint kosong. Di aplikasi nyata, query DB atau panggilan API eksternal biasanya menghabiskan waktu jauh lebih banyak. Kalau handler menunggu database 20 ms, selisih Express vs Fastify pada overhead per request jadi relatif kecil.
  • Baris AdonisJS adalah HTTP server-nya saja (tanpa bodyparser, session, shield, auth). Aplikasi dari starter kit akan lebih lambat dari angka ini.
  • Tim Fastify menyebut hasilnya ilustratif; ukur ulang dengan beban kerjamu sendiri (mis. npx autocannon -c 100 -d 20 http://localhost:3000/...).

Kenapa ada perbedaan?

FaktorDampak
Routerfind-my-way (radix tree) di Fastify vs pencocokan linear di Express
Serialisasifast-json-stringify mengompilasi serializer dari skema response; JSON.stringify harus memeriksa tipe tiap nilai
ValidasiSkema Ajv dikompilasi sekali saat startup, bukan diinterpretasi per request
Rantai middlewareSetiap app.use() di Express menambah pemanggilan fungsi per request (terlihat di baris “Express + middleware”)
Lapisan abstraksiNestJS menambah resolusi DI, guard, interceptor, pipe, dan metadata decorator di atas adapter — throughput-nya tidak bisa melebihi Express/Fastify di bawahnya
Adapter NestJSNest di atas @nestjs/platform-fastify mewarisi keunggulan Fastify; di atas Express mewarisi router Express
RenderingNext.js mengerjakan hal berbeda (render React, stream RSC, cache), sehingga req/s bukan metrik yang adil; halaman statis/ter-cache justru sangat cepat karena dilayani dari CDN/disk

4. Ekosistem & Kematangan

ExpressFastifyNestJSAdonisJSNext.js
Sejak20102016201720152016
Rilis mayor terakhirv5 (Sep 2024)v5 (Sep 2024)v12 (Agu 2026)v7 (Feb 2026)v16 (Okt 2025)
GovernanceOpenJS FoundationOpenJS FoundationTim inti + sponsorTim inti kecilVercel
Ukuran komunitasSangat besarBesarBesarKecil–menengahSangat besar
Stabilitas APISangat stabilStabil, ada LTS policyStabil, breaking tiap mayor (v12: ESM-only)Breaking tiap mayor (v7: schema class Lucid)Berubah cukup cepat (proxy, cache model)

5. Kapan Memilih yang Mana?

Pilih Express jika…

  • Project kecil, prototipe, atau sedang belajar dasar HTTP di Node.
  • Butuh middleware spesifik yang hanya ada untuk Express.
  • Tim sudah nyaman dan performa bukan kendala utama.

Pilih Fastify jika…

  • Membangun API/backend yang throughput dan latency-nya penting.
  • Ingin validasi + dokumentasi OpenAPI dari skema yang sama.
  • Ingin struktur modular (plugin) tanpa beratnya framework penuh.
  • Contoh nyata: Proxmox Management Server — Fastify + TypeScript + Drizzle + BullMQ + WebSocket, dengan backend yang sekaligus menyajikan build React.

Pilih NestJS jika…

  • Tim besar, domain banyak, dan butuh konsistensi arsitektur jangka panjang.
  • Butuh microservice, GraphQL, CQRS, queue dengan pola yang seragam.
  • Tim terbiasa dengan Angular/Spring/.NET. Pakai adapter Fastify bila performa penting.

Pilih AdonisJS jika…

  • Datang dari Laravel dan ingin pengalaman serupa di TypeScript.
  • Aplikasi CRUD/SaaS monolith yang butuh auth, session, ORM, validasi, mail siap pakai.
  • Ingin full-stack server-rendered (Edge) atau Inertia (React/Vue) dalam satu project.

Pilih Next.js jika…

  • UI-nya React dan butuh SEO, SSR/SSG, serta backend ringan dalam satu repo.
  • Tim frontend ingin menulis logika server tanpa mengelola service terpisah.
  • Contoh: Fanny Web Profile dan My Anime List .

Kombinasi yang sering masuk akal

KebutuhanKombinasi
Web app React + API publik/mobileNext.js (UI + BFF) + Fastify/NestJS (API)
SaaS monolith cepat jadiAdonisJS + Inertia React
Dashboard internal + job beratReact SPA (Vite) + Fastify + BullMQ
Enterprise multi-timNestJS (adapter Fastify) + Next.js untuk frontend

6. Diagram Keputusan Singkat

Butuh UI React + SEO di project yang sama?
├── Ya  → Next.js
│         (API berat / websocket / job? tambah backend Fastify atau NestJS)
└── Tidak → Butuh framework lengkap (ORM, auth, struktur)?
            ├── Ya → Suka gaya Laravel?          → AdonisJS
            │        Tim besar / pola DI+module?  → NestJS
            └── Tidak → Performa & skema penting?  → Fastify
                        Paling sederhana / legacy? → Express

7. Kesimpulan

  • Express: default historis, sederhana, ekosistem terbesar, overhead paling tinggi di antara micro-framework yang dibahas.
  • Fastify: micro-framework modern yang overhead-nya mendekati http bawaan Node, berkat router radix tree, validasi dan serialisasi terkompilasi dari skema.
  • NestJS: bukan soal kecepatan, tapi soal struktur — dan bisa tetap cepat dengan adapter Fastify.
  • AdonisJS: pengalaman “Laravel di TypeScript” dengan HTTP server sendiri yang ringan dan Lucid ORM yang kini ter-generate dari database.
  • Next.js: pilihan utama untuk aplikasi React full-stack; untuk backend berat, pasangkan dengan salah satu di atas.

Referensi

Hey! I’m Fanny, the software engineer tending to this digital garden. You can read more about me, or subscribe by email.

Comments