Uçtan Uca Tip Çıkarımı: Eden Treaty ile Hono Client
İki framework de sunucudan client'a otomatik tip paylaşımı vaat ediyor, ama uygulamaları farklı. Elysia'da Eden Treaty, tüm Elysia instance'ının route tipini treaty() fonksiyonuyla fetch-benzeri bir proxy nesnesine çeviriyor — api.users({ id: "1" }).get() gibi zincirlenebilir bir syntax alıyorsun; resmi dokümantasyonda WebSocket ve unit-test entegrasyonu ayrı sayfalarla anlatılıyor. Bu, Elysia'nın "tek kaynaktan doğruluk" felsefesinin doğal uzantısı: route tanımı hem sunucu davranışını hem client tipini hem de OpenAPI şemasını aynı anda üretiyor.
Hono'da eşdeğeri Hono Client (hc). typeof route'tan türeyen bir AppType generic'i alıyorsun, hc<AppType>() bunu validator input'unu ve c.json() çıktısını infer eden tipli bir client'a çeviriyor. Fark burada: Hono'nun resmi dokümantasyonu net bir ön koşul taşıyor — monorepo'da tiplerin doğru çalışması için hem client hem server tsconfig.json'da strict: true şart. Kurulumda gözden kaçan, belgelenmiş bir kırılganlık noktası.
Senin için pratik sonuç: Hono Client'ı kurarken monorepo'nda strict modu açık değilse ilk iş bunu düzeltmek olmalı — aksi halde tip çıkarımı sessizce bozulur ve neden bozulduğunu anlaman zaman alır.
Runtime Bağımsızlığı: Kimlik Farkı, Teknik Gerçek
Hono'nun ana sayfası bu konuda dolambaçsız: "Works on Cloudflare, Fastly, Deno, Bun, AWS, or Node.js. The same code runs on all platforms." Runtime-agnostiklik, Hono'nun pazarlamasının değil, kimliğinin merkezinde.
Elysia'nın hikâyesi farklı kurulmuş. Ana sayfa mesajı Bun'ın performans avantajı üzerine kurulu. Ama teknik gerçek göründüğünden daha esnek: proje dokümantasyonunun entegrasyon bölümünde Node.js, Cloudflare Worker, Deno, Vercel, Netlify, Expo, Astro, Next.js, Nuxt, SvelteKit ve TanStack Start için ayrı sayfalar var. Yani Elysia de fiilen çoklu runtime'da çalışıyor — sadece bunu öne çıkarmıyor.
Senin kararın için fark şurada: eğer projen "bugün Bun'da, yarın belki Cloudflare Workers'a taşınır" gibi bir belirsizlik taşıyorsa, Hono'nun kimliği bu senaryoyu doğrudan hedefliyor ve migration riskini azaltıyor. Eğer projen kesin olarak Bun'da kalacaksa ve Bun'ın performans özelliklerinden (native HTTP/2, hızlı Buffer I/O gibi Bun 1.4.1'in getirdiği iyileştirmeler) doğrudan faydalanmak istiyorsan, Elysia'nın Bun-öncelikli tasarımı seninle aynı dili konuşuyor demektir.
Benchmark Metodolojisi: "21x" İddiasının Küçük Dipnotu
Elysia'nın anasayfasında gördüğün büyük rakamlar — Express'e göre 21 kat, Fastify'a göre 6 kat, saniyede 2.454.631 istek — küçük puntoyla şu kaynağı gösteriyor: "Result from TechEmpower Benchmark Round 22 (2023-10-17) in PlainText." İki şeye dikkat etmelisin. Birincisi, veri üç yıllık; Bun o tarihten sonra 1.4 (Rust çekirdeği), 1.4.1 (native HTTP/2) ve 5 Eylül 2026'daki 1.4.2 ile yol aldı. İkincisi, "PlainText" TechEmpower'ın gerçek dünya JSON+veritabanı yükünü en az temsil eden kategorisi.
Hono benchmark iddiasını vitrine değil ayrı bir doküman sayfasına taşımış. Orada 12 route'luk bir router kaydı tanımlanıyor, Node ve Bun sonuçları ekran görüntüleriyle veriliyor, Cloudflare Workers ölçümü ise sayıyla: Hono 402.820 ops/sn, sunder 297.036, itty-router 212.598, worktop 197.345 (Apple MacBook Pro, M1 Pro, 32 GiB). Metodoloji ve donanım açıkça yazılı; tekrar edebilirsin.
Elysia'nın kendi 2.0 duyurusu ise tabloyu dengeleyen veri sunuyor: 25 route'ta startup Hono 21 ms, Elysia 24 ms; 1.000 route'ta Hono 23 ms, Elysia 29 ms. Minify edilmiş bundle'da Hono 4.12.28 21 KB, Elysia 2.0.0-exp.60 141 KB. Bu rakamlar Elysia'nın kendi aleyhine yayımlandığı için güvenilirliği yüksek.
Validation Mimarisi: Merkeze Koymak mı, Dışarıda Bırakmak mı
Elysia'nın validation katmanı, Elysia.t, TypeBox tabanlı bir schema builder ve framework'ün mimari merkezinde duruyor — runtime doğrulama, derleme-zamanı tip çıkarımı ve OpenAPI şema üretimi aynı t.Object({...}) tanımından geliyor. Üstüne Standard Schema desteğiyle Zod, Valibot, ArkType, Effect Schema, Yup ve Joi'yi aynı handler içinde kullanabiliyorsun; mevcut bir Zod şeman varsa TypeBox'a geçmek zorunda değilsin.
Hono ise tam tersi bir tercih yapmış — resmi dokümantasyon bunu saklamıyor: "Hono provides only a very thin Validator... powerful when combined with a third-party Validator." Doğrulama mantığı çekirdekte değil, zValidator gibi ayrı middleware paketlerinde yaşıyor. Bunun bir bedeli var: istek Content-Type header'ı taşımıyorsa validator hata fırlatmak yerine sessizce boş obje {} döner.
Senin için anlamı şu: Elysia'da validation "batteries-included" — type-safety, runtime kontrol ve dokümantasyon aynı satırdan çıkıyor. Hono'da validation bilinçli olarak minimal tutulmuş; bu esneklik demek (istediğin validator'ı seç) ama aynı zamanda dikkat demek, özellikle content-type header'ını unutan bir client'ın sessizce boş veriyle devam etmesi gibi köşe durumlarında.
OpenAPI ve Dokümantasyon Otomasyonu
Elysia'da OpenAPI üretimi birinci parti: resmi @elysia/openapi paketi, route tanımlarından otomatik şema çıkarıyor, /openapi route'unda Scalar UI hazır geliyor, üstüne fromTypes() ile mevcut TypeScript tiplerinden bile şema üretebiliyorsun. Bu, bir önceki bölümdeki "Single Source of Truth" felsefesinin devamı — aynı route tanımı hem çalışıyor hem doğrulanıyor hem de dokümante ediliyor.
Hono'da durum farklı konumlanmış: resmi dokümantasyon OpenAPI'yi "3rd-party Middleware" kategorisinde listeliyor — Zod OpenAPI, Hono OpenAPI, Swagger UI, Scalar, Hono Docs Generator, hepsi ekosistem paketleri, çekirdeğin parçası değil. Pratikte bu, Hono yerine OpenAPIHono kullanmanı, her route'u createRoute() ile Zod şemasıyla elle tanımlamanı ve app.doc('/doc', {...}) ile dokümanı ayrıca kaydetmeni gerektiriyor — Elysia'daki gibi "route'u yaz, şema otomatik gelsin" değil.
Eğer ekibinde API dokümantasyonunun otomatik ve route tanımından ayrılmaz olması öncelikliyse, Elysia burada net bir birinci-parti avantaj sunuyor. Hono'da aynı sonucu elde edebilirsin ama bunun için bilinçli, ek bir kurulum adımı gerekiyor — framework seni buna zorlamıyor, kendi seçmen gerekiyor.
Plugin Ekosistemi ve Semver Olgunluğu: 2 Beta ile 4.x Stable Arasında
npm dist-tag'leri bu bölümün özetini tek satırda veriyor: Elysia latest: 1.4.30, next: 2.0.0-beta.19. Elysia 2 hâlâ beta — resmi blog "It's not a stable release yet" diyor ve 1.4.x dalı artık yalnızca güvenlik yaması alıyor, yeni özellik geliştirmesi durduruldu. Bu, şu anda Elysia ekosisteminde bir plugin yazıyorsan ya da mevcut bir plugin'e bağımlıysan, o plugin'in 1.4 mü yoksa 2.0-beta'ya mı hedeflendiğine dikkat etmen gerektiği anlamına geliyor — proje aktif bir mimari geçişin ortasında.
Hono latest: 4.13.9 — 4.x hattı iki yılı aşkın süredir sürüyor. Hono'nun son beş release'inde (v4.13.5-v4.13.9) tek bir "breaking" başlığı yok, hepsi jsx/accepts/router/aws-lambda gibi noktalarda küçük "fix" PR'ları. Bu, semver disiplininin somut kanıtı: Hono'da minor/patch sürüm yükseltmesi genelde sürpriz getirmiyor.
Kararın için: eğer bugün üretime bir şey koyacaksan ve "framework'ün altını değiştirmeyeceğinden emin olmak" öncelikliyse, Hono'nun 4.x istikrarı seni daha az riske sokar. Elysia'yı seçiyorsan ya bilinçli olarak 1.4.x'in bakım moduna razı olman (yeni özellik beklemeden) ya da 2.0 beta'nın olgunlaşmasını bir miktar riskle kabul etmen gerekiyor.
Breaking-Change Geçmişi ve Bilinen Üretim Referansları
Elysia 2, resmi blog yazısında "complete rewrite" olarak tanımlanıyor ve resmi bir otomatik migration aracı sunuluyor: bunx @elysia/codemod@latest. 1.4.30 release notu da geliştirme çabasının tamamen 2.0'a kaydığını doğruluyor — 1.4'te kalan projeler yalnızca güvenlik yaması alacak.
Üretim referansları tarafında Elysia'nın elinde isimlendirilmiş örnekler var: cs.money, Tiptap (özellikle çarpıcı — Convert Service'ini Hono/Node'dan Elysia/Bun'a taşımışlar ve "significant performance improvement" diyorlar, yani doğrudan rakip framework'ten bir geçiş örneği), BAAC Thailand, Abacatepay, ConnexTickets, Decidable. Dürüstlük notu: bunlar resmi bir "customers" sayfasında değil, anasayfa logobandında duruyor — vaka çalışması formatında değil ama isimlendirilmiş.
Hono'nun yayımlanmış ayrı bir customer/case-study sayfası yok. Üretim kullanımının kanıtı daha dolaylı ama güçlü: haftalık 46,7 milyon npm indirmesi ve Cloudflare Workers ekosistemindeki konumu. Elysia'nın "State of JavaScript 2025'te 9. en çok kullanılan JS backend framework'ü" iddiası ise yalnızca kendi blog yazısında geçiyor; üçüncü parti bir doğrulaması yayımlanmış değil — bu yüzden kaynağıyla birlikte anılmalı.