Menelusuri evolusi backend JavaScript dari Express callback era hingga lahirnya ElysiaJS sebagai solusi type-safe end-to-end tanpa code generation, serta memahami mengapa Bun menjadi runtime yang tepat untuk framework modern berperforma tinggi.

Setelah di episode 0 kita menyiapkan environment — memastikan Bun ≥ 1.3 terinstall dan VS Code siap — pada episode ini kita menarik napas sejenak dari hands-on dan memahami mengapa ElysiaJS ada. Sejarah sebuah framework mungkin terasa tidak penting, padahal justru di sanalah letak alasan mengapa desainnya seperti sekarang.
Mengapa harus memahami sejarah ElysiaJS? Karena ElysiaJS tidak lahir dari keinginan untuk menambah daftar framework backend, melainkan dari kebutuhan nyata developer TypeScript yang frustrasi dengan duplikasi tipe antara client dan server. Memahami asal-usulnya akan menjelaskan keputusan-keputusan desainnya — mengapa ElysiaJS memilih TypeBox sebagai fondasi type system, mengapa ia terikat pada runtime Bun, dan mengapa Eden Treaty bisa menghilangkan kebutuhan code generation.
Masalah utama yang dihadapi developer TypeScript di backend adalah gap antara tipe di server dan client. Ketika kalian menulis route POST /user dengan body { name: string, email: string } di server, client harus mendefinisikan ulang tipe yang sama secara manual — atau menggunakan code generation seperti OpenAPI + Orval/Swagger Codegen. Proses ini lambat, error-prone, dan menjaga sinkronisasi tipe menjadi beban berkelanjutan.
ElysiaJS menyelesaikan masalah ini dengan cara yang elegan: schema yang didefinisikan di route secara otomatis menghasilkan tipe TypeScript yang bisa di-import langsung oleh client melalui Eden Treaty. Tanpa code generation step, tanpa duplikasi, tanpa kehilangan sinkronisasi.
Perjalanan backend JavaScript dimulai dari era callback hingga arrive-nya type-safe end-to-end:
| Era | Framework | Tahun | Karakteristik |
|---|---|---|---|
| Callback era | Express.js | 2010 | Minimalis, tanpa type built-in, community besar |
| Performance era | Fastify | 2018 | Plugin architecture, JSON Schema validation, performa tinggi |
| Type-safe end-to-end era | ElysiaJS | 2022 | TypeBox, zero code generation, Bun-native |
Express mendominasi backend JavaScript selama satu dekade. Kelebihannya: simpel, fleksibel, dan community yang sangat besar. Namun kekurangannya kritis untuk proyek TypeScript: tidak ada built-in type system. Kalian harus menambahkan tipe secara manual dengan @types/express, dan bahkan itu pun tidak lengkap — banyak kasus di mana tipe tidak match dengan perilaku runtime.
Fastify memperbaiki Express di sisi performa dan validasi. Ia menggunakan JSON Schema untuk validasi request, dan karena itu tipe bisa di-infer dari schema. Namun masalahnya tetap ada: tipe di server tidak otomatis tersedia di client. Kalian masih perlu code generation atau duplikasi manual.
ElysiaJS mengambil pendekatan berbeda: alih-alih menggunakan JSON Schema secara langsung, ia menggunakan TypeBox — library yang membangun JSON Schema dari definisi tipe TypeScript. Hasilnya: schema validation otomatis, tipe route otomatis terekspos ke Eden client, dan zero code generation step.
Bun dirancang sebagai pengganti Node.js yang lebih cepat dan modern. Untuk ElysiaJS, Bun menawarkan beberapa keuntungan kritis:
Bun.serve() di bawah hood — HTTP server bawaan Bun yang sangat cepat.Tiga alasan utama ElysiaJS mendapat traction dalam waktu singkat:
Di benchmark HTTP, ElysiaJS mencapai 500k-800k req/s untuk simple routes di atas Bun — angka yang sulit dicapai framework lain di Node.js. Ini bukan sekadar angka benchmark, tapi berdampak nyata pada biaya infrastruktur untuk high-traffic API.
Eden Treaty memungkinkan client untuk mengimpor tipe langsung dari server tanpa code generation. Update tipe di server → client otomatis mendapat update tanpa regenerasi apapun.
ElysiaJS memiliki plugin untuk hampir semua kebutuhan: CORS, JWT, Swagger, static files, OAuth — semuanya terintegrasi mulus dengan type system.
| Aspek | Express | Fastify | ElysiaJS |
|---|---|---|---|
| Runtime | Node.js | Node.js | Bun |
| Type safety | Manual | Partial | End-to-end |
| Performance | Baseline | Tinggi | Sangat tinggi |
| Code generation | Tidak ada | Tidak ada | Tidak diperlukan |
| Plugin system | Middleware | Plugin | Plugin |
| TypeBox integration | Tidak | JSON Schema | Native |
Note
ElysiaJS tidak menggantikan Express atau Fastify untuk semua use case. Jika kalian sudah memiliki codebase besar di Node.js, migrasi ke ElysiaJS perlu pertimbangan matang. Namun untuk proyek baru yang menginginkan type safety end-to-end dan performa tinggi, ElysiaJS adalah pilihan yang sangat kompetitif.
Pada episode 1 ini, kalian telah memahami perjalanan backend JavaScript dari Express callback era hingga lahirnya ElysiaJS sebagai solusi type-safe end-to-end.
Inti yang harus dibawa pulang:
Di episode 2 selanjutnya kita akan membedah konsep dasar dan arsitektur utama ElysiaJS — core routing engine, TypeBox integration, plugin system, Eden Treaty, serta perbandingan mendalam dengan framework lain. Sampai jumpa di episode 2!