Express 5 vs Fastify Karşılaştırması

Node ekosisteminin varsayılanı: esnek, olgun, devasa middleware havuzu

VS
Fastify

Şema-tabanlı, performans-odaklı: her route bir sözleşme

10 dk okumaBackend

Hızlı Karar

Fastify'ın resmi ("illustrative" uyarılı) benchmark'ı throughput'ta 1,6×, gecikmede 1,7× önde; şema-serileştirme ve resmi OpenAPI eklentisiyle destekli. Express 5'in kazanımı async handler'larda otomatik hata yakalama. GitHub'da Express açık ara önde (69.478 vs 37.195 yıldız). Yeni, performans-kritik servis → Fastify; mevcut Express codebase + aşina ekip → Express 5'te kal, resmi migration aracı yok.

Express 5Fastify
Tam sonucu oku

Puan Karşılaştırması

Grafik yükleniyor...

Detaylı Puanlama

Detaylı Puanlama: Express 5 ve Fastify — kategori bazında 10 üzerinden puanlar
KategoriExpress 5Fastify
Performans
6/10
9/10
Öğrenme Kolaylığı
9/10
7/10
Ekosistem
9/10
7/10
Topluluk
10/10
7/10
İş Pazarı
8/10
6/10
Gelecek
7/10
8/10

Artıları & Eksileri

Express 5

Artıları

  • Devasa middleware ekosistemi — hemen her ihtiyaç için hazır bir paket var
  • Express 5'te async route handler'lar otomatik hata yakalıyor (Express 4'e göre büyük iyileşme)
  • GitHub'da 69.478 yıldız ve geniş öğrenme kaynağı havuzu, yeni geliştirici için düşük giriş bariyeri
  • Esnek mimari: framework seni tek bir yapıya zorlamıyor, istediğin gibi kurabilirsin
  • Resmi 4→5 migration codemod'u ile framework içi versiyon geçişi otomatikleştirilmiş
  • OpenJS Foundation şemsiyesinde uzun soluklu bir bakım geçmişi (2010'dan beri)

Eksileri

  • Şema doğrulama ve OpenAPI üretimi framework'ün içinde yok, üçüncü parti paket şart
  • Middleware izolasyonu (encapsulation) yok — her şey global stack'e ekleniyor
  • Resmi benchmark'ta Fastify'a göre throughput ve gecikmede geride
  • Resmi pakette TypeScript tanımı yok, @types/express topluluk bakımlı ayrı paket
  • Varsayılan logger yok — resmi doküman Pino öneriyor ama kurulumu sen yapıyorsun

En Uygun

Ekibin zaten Express'e aşina olduğu projelerGeniş middleware çeşitliliğine ihtiyaç duyan uygulamalarHızlı prototipleme ve MVP geliştirmeMevcut büyük Express codebase'lerin sürdürülmesiÖğrenme kaynağı bolluğunun kritik olduğu ekipler

Fastify

Artıları

  • Resmi benchmark'ta throughput'ta 1,6× ve gecikmede 1,7× avantaj (fastify.dev/benchmarks, 2 Eylül 2026)
  • fast-json-stringify ile şema-derlenmiş, yüksek performanslı JSON serileştirme
  • Encapsulation context ile plugin/middleware izolasyonu mimari düzeyde garanti ediliyor
  • @fastify/swagger ile route şemalarından otomatik OpenAPI v2/v3 üretimi
  • pino tabanlı yapılandırılmış logging framework'ün içinden geliyor (logger: true)
  • Resmi tip tanımları (fastify.d.ts) pakete gömülü
  • Ajv v8 ile performanslı, JSON Schema tabanlı istek doğrulama

Eksileri

  • GitHub yıldız/fork sayısında Express'in gerisinde (37.195 vs 69.478), daha dar öğrenme kaynağı havuzu
  • Kendi dokümanına göre bazı TypeScript API kısımları hatalı tiplenmiş olabilir
  • v5, Node.js v20+ zorunlu kılıyor — eski projelerde önce Node yükseltmesi gerekiyor
  • v5'te tam JSON Schema zorunluluğu (kısayol kaldırıldı) geçiş sürtünmesi yaratıyor
  • Express'ten resmi bir migration aracı yok — göç framework değişimi demek

En Uygun

Performans-kritik, yüksek RPS hedefleyen yeni servislerAPI-first, şema/OpenAPI sözleşmesi baştan istenen projelerÇok-ekipli, büyüyen monorepo API'lerinde mimari izolasyon isteyenlerpino tabanlı yapılandırılmış logging altyapısı olan ekiplerNode.js v20+ üzerinde çalışan yeni greenfield projeler

Kod Karşılaştırması

Express 5
// Express 5 - Async route handler + otomatik hata yakalama
import express from 'express';

const app = express();
app.use(express.json());

// Basit hata sınıfı — API sınırında anlamlı mesaj için
class NotFoundError extends Error {
  status = 404;
}

async function getUser(id) {
  const user = await db.users.findById(id);
  if (!user) throw new NotFoundError('User not found');
  return user;
}

// Express 5: async handler reject/throw ederse next(err) otomatik çağrılır.
// Promise'i return etmeyi unutma — aksi halde rejection unhandled kalabilir.
app.get('/api/users/:id', async (req, res) => {
  const user = await getUser(req.params.id);
  res.json(user);
});

// Merkezi hata middleware'i — global stack'in sonuna ekleniyor
app.use((err, req, res, next) => {
  const status = err.status ?? 500;
  res.status(status).json({ error: err.message });
});

app.listen(3000, () => {
  console.log('Express server listening on port 3000');
});
Fastify
// Fastify 5 - Şema doğrulama + otomatik serileştirme
import Fastify from 'fastify';

const fastify = Fastify({ logger: true });

// Response şeması: fast-json-stringify bu şemadan derlenmiş bir
// serileştirme fonksiyonu üretir — genel amaçlı JSON.stringify'dan hızlı.
const userSchema = {
  type: 'object',
  properties: {
    id: { type: 'string' },
    name: { type: 'string' },
    email: { type: 'string' },
  },
  required: ['id', 'name', 'email'],
};

const getUserOpts = {
  schema: {
    params: {
      type: 'object',
      properties: { id: { type: 'string' } },
      required: ['id'],
    },
    response: {
      200: userSchema,
    },
  },
};

// Encapsulation: bu plugin içinde kayıtlı hook/decorator
// yalnızca bu context'teki route'lara sızıyor.
fastify.register(async function userRoutes(instance) {
  instance.get('/api/users/:id', getUserOpts, async (request, reply) => {
    const user = await db.users.findById(request.params.id);
    if (!user) {
      return reply.code(404).send({ error: 'User not found' });
    }
    request.log.info({ userId: user.id }, 'user fetched');
    return user;
  });
});

fastify.setErrorHandler((error, request, reply) => {
  reply.status(error.statusCode ?? 500).send({ error: error.message });
});

await fastify.listen({ port: 3000 });

Sonuç

Fastify'ın resmi ("illustrative" uyarılı) benchmark'ı throughput'ta 1,6×, gecikmede 1,7× önde; şema-serileştirme ve resmi OpenAPI eklentisiyle destekli. Express 5'in kazanımı async handler'larda otomatik hata yakalama. GitHub'da Express açık ara önde (69.478 vs 37.195 yıldız). Yeni, performans-kritik servis → Fastify; mevcut Express codebase + aşina ekip → Express 5'te kal, resmi migration aracı yok.

Ücretsiz Danışmanlık Al
SSS

Sıkça Sorulan Sorular

Yeni, performans-kritik ve şema-doğrulamalı bir servis kuruyorsan Fastify; mevcut Express yatırımın ve aşina bir ekibin varsa Express 5. İkisi de aktif bakımda — npm registry'de express@latest 5.2.1, fastify@latest 5.12.5 (Fastify v6 alpha aşamasında ama stabil hâlâ 5.x) — yani "Express öldü" gerekçesiyle karar verme. Geniş üçüncü parti middleware ihtiyacın varsa terazi ayrıca Express tarafına kayar.

Giriş

Node.js API'si kurarken hep aynı soru: Express mi, daha yeni bir framework mü? npm'de express@latest hâlâ 5.2.1 ile aktif, fastify@latest 5.12.5'te — ikisi de canlı bakımda, "Express öldü" iddiasına güvenme. Bu karşılaştırmanın zamanlaması şuradan geliyor: Node.js'in 26.x Current ve 24.x LTS hatları Eylül 2026'da güncellendi, "framework aslında ne kadar iş yapıyor" sorusu yeniden gündemde. Express 5'in async hata yakalaması ile Fastify'ın şema-tabanlı serileştirme avantajı burada test ediliyor. Kısa cevap: performans-kritik, şema-doğrulamalı yeni bir servis kuruyorsan Fastify daha az sürtünmeyle oraya götürür. Ekibin Express'e aşinaysa, geniş middleware ekosistemine ihtiyacın varsa Express 5 hâlâ savunulabilir — çoğu CRUD API'de fark DB süresinin gölgesinde kalır. Aşağıda throughput rakamlarını, encapsulation modelini, hata yönetimi tuzaklarını ve göç maliyetini kaynaklarıyla birlikte bulacaksın.

Karşılaştırma Matrisi

Karşılaştırma Matrisi: Express 5 / Fastify
ÖzellikExpress 5Fastify
Güncel sürüm (npm latest)5.2.15.12.5
İlk yayın16 Kasım 2010Eylül 2016
GitHub yıldız69.478 (Öne çıkan)37.195
GitHub fork25.065 (Öne çıkan)3.036
Resmi benchmark throughput (fastify.dev)59.651 req/s97.595 req/s (1,6×) (Öne çıkan)
Resmi benchmark gecikme (fastify.dev)16,25 ms9,73 ms (1,7× düşük) (Öne çıkan)
Şema-tabanlı JSON serileştirmeYok (res.json genel amaçlı)fast-json-stringify (şema-derlenmiş) (Öne çıkan)
Resmi OpenAPI üretimiYok (üçüncü parti şart)@fastify/swagger (resmi eklenti) (Öne çıkan)
Plugin/middleware izolasyonuGlobal stack (app.use)Encapsulation context (route-bazlı) (Öne çıkan)
Async route hata yakalamaExpress 5'te otomatik (v4'te yoktu)setErrorHandler + hooks (merkezi)
Resmi TypeScript tanımı paketteYok (@types/express topluluk)Var (fastify.d.ts gömülü) (Öne çıkan)
Varsayılan loggerYok (Pino önerilir, elle kurulur)pino (logger: true ile) (Öne çıkan)
Minimum Node.js sürümü>=18 (engines) (Öne çıkan)v20+ (v5 migration guide)
Resmi 4→5 / v4→v5 migration codemodVar (codemod @expressjs/v5-migration-recipe) (Öne çıkan)Yok (elle: schema+logger+Node güncelleme)
Resmi Express→Fastify migration aracı—Yok (resmi araç yayımlanmadı)

Derinlemesine İnceleme

Express 5

Genel Bakış

Express, TJ Holowaychuk tarafından yazılıp 16 Kasım 2010'da ilk yayınlanan, Node.js'in en köklü web framework'ü. OpenJS Foundation şemsiyesi altında topluluk tarafından geliştiriliyor. Minimalist ve unopinionated bir tasarım felsefesiyle, framework seni belirli bir mimariye zorlamıyor — routing, middleware ve view engine gibi temel parçaları sağlayıp geri kalanını ekosisteme (ve sana) bırakıyor. 2026 itibariyle npm'de express@latest 5.2.1; Express 5, önceki Express 4'e göre en büyük ergonomik kazanımı async route handler'larda otomatik hata yakalama olarak getirdi. Paralelde 4.x hattı da bakımda (v4.22.3, 14 Eylül 2026), yani mevcut projeler için sürüm geçişi zorunlu değil, kademeli.

Ekosistem

Paket yöneticisi
npm
Geliştirme ortamı
VS CodeWebStorm
Popüler kütüphaneler
express-validatorexpress-openapi-validatormorganhelmetpassport

Fastify

Genel Bakış

Fastify, Matteo Collina ve Tomas Della Vedova tarafından geliştirilip Eylül 2016'da ilk yayınlanan, performans ve geliştirici deneyimini baştan tasarım hedefi olarak alan bir Node.js web framework'ü. OpenJS Foundation ve Platformatic tarafından destekleniyor. Temel felsefesi şema-merkezli: her route için JSON Schema tanımlayıp Fastify'ın bunu Ajv ile doğrulamasına ve fast-json-stringify ile serileştirmesine izin veriyorsun. Mimarisinin çekirdeğinde 'encapsulation context' var — plugin ve hook'ların hangi route grubuna erişebileceğini öngörülebilir şekilde sınırlıyor. 2026 itibariyle npm'de fastify@latest 5.12.5; v6 hattı alpha aşamasında (v6.0.0-alpha.4, 16 Eylül 2026) aktif geliştiriliyor ama stabil sürüm hâlâ 5.x. Eylül 2026'da HTTP/2 + trailer kombinasyonunda bulunan bir DoS güvenlik açığı (GHSA-4mh8-r7rc-xpvc) hızla yamalandı — bakım temposu canlı.

Ekosistem

Paket yöneticisi
npm
Geliştirme ortamı
VS CodeWebStorm
Popüler kütüphaneler
@fastify/swagger@fastify/cors@fastify/jwt@fastify/rate-limitpino

Teknik Analiz

Throughput ve şema-tabanlı JSON serileştirme

Fastify'ın resmi benchmark sayfası (fastify.dev/benchmarks, 2 Eylül 2026), tek instance Node.js ölçümünde Fastify'ı 97.595 istek/saniye ile Express 5.2.1'in 59.651'ine karşı yaklaşık 1,6 kat önde gösteriyor; gecikmede de Fastify 9,73 ms ile Express'in 16,25 ms'sine karşı 1,7 kat düşük. Farkın büyük kısmı fast-json-stringify denen şema-derlenmiş serileştirme motorundan geliyor: şemanı önceden tanımlarsan Fastify, genel JSON.stringify yerine o şemaya özel derlenmiş bir fonksiyon kullanıyor. Ama bu rakamları mutlak gerçek gibi sunmak yanlış — sayfanın kendisi "illustrative, real-world results depend on your hardware" diyor. Bağımsız, üçüncü taraf güncel bir kamuya açık benchmark da yok. Pratik sonuç: yüksek RPS hedefleyen JSON-ağırlıklı API'de bu gerçek bir avantaj, ama çoğu CRUD servisinde darboğaz DB sorgusu oluyor.

Şema doğrulama ve OpenAPI üretimi

Fastify'ın doğrulama felsefesi baştan şema-merkezli: resmi dokümantasyon "Fastify uses a schema-based approach, we recommend using JSON Schema" diyor ve bu şemayı Ajv v8 ile performanslı bir fonksiyona derliyor. Doğrulama yalnız content-type: application/json istekleri için tetikleniyor. Üstüne, resmi @fastify/swagger paketi route şemalarından otomatik OpenAPI v2/v3 dokümantasyonu üretiyor — API sözleşmeni elle yazmana gerek kalmıyor. Express tarafında bu işlev framework'ün kendi sorumluluğunda değil. expressjs.com dokümantasyonunda resmi bir şema doğrulama ya da OpenAPI üretim bölümü yok; bu iş express-validator ya da express-openapi-validator gibi üçüncü parti paketlere bırakılmış. Bu senin için sorun olmayabilir — paket ekosistemi geniş — ama "framework içinden gelen tutarlı bir sözleşme" arıyorsan bunu kendin kurman gerekiyor. Sonuç olarak: API-first çalışan, otomatik dokümantasyon isteyen ekipler için Fastify'ın yerleşik şema-OpenAPI zinciri gerçek bir zaman kazancı. Express'te aynı sonucu almak mümkün ama paket seçimi ve entegrasyon sorumluluğu sana kalıyor.

Plugin/middleware modeli ve kapsülleme (encapsulation)

Fastify'ın mimari çekirdeği "encapsulation context". Resmi dokümana göre bu, hangi decorator, hook ve plugin'in hangi route'a erişebileceğini yönetiyor: her alt-context kök seviyesindeki plugin'lere erişebiliyor, ama bir alt-context kendi grandchild'ında kayıtlı plugin'lere erişemiyor — izolasyon tek yönlü ve öngörülebilir. Büyük bir uygulamada bir route grubuna özel middleware'in başka gruba sızmasını mimari düzeyde engelliyor. Express'te böyle bir kavram yok. Resmi glossary'ye göre middleware, routing katmanı tarafından final handler'dan önce çağrılan bir fonksiyon ve app.use(mw) ile global işleme yığınına ekleniyor — varsayılan davranış global, route bazlı izolasyonu sen kurmak zorundasın. Küçük bir API'de bu fark hissedilmez; çok-ekipli büyük bir API'de Fastify'ın encapsulation'ı "hangi middleware nereye sızdı" hatalarını yapısal olarak azaltıyor.

Async hata yönetimi ve unhandled rejection davranışı

Express 5'in en somut kazanımı burada. Resmi dokümana göre bir handler Promise döndürüyorsa ve reject olursa ya da throw ederse, Express otomatik next(value) çağırıyor — async fonksiyonlar zaten Promise döndürdüğü için hataları ekstra iş yapmadan Express'e ulaşıyor. Express 4'e göre büyük iyileşme: eskiden her async route'u manuel try/catch ile sarmak gerekiyordu. Tuzak hâlâ duruyor: handler Promise'i return etmezse, Express bunun varlığından haberdar olmuyor ve rejection unhandled kalıp process çökme riski taşıyor. Callback-tabanlı Node API'lerinin (örn. fs) hataları da otomatik yakalanmıyor — elle next(err)'e geçirmen gerek. Fastify tarafında ayrı bir "unhandled rejection" dokümanı yok; hata yönetimi setErrorHandler ve hook'lar üzerinden merkezi toplanıyor. Çıkarım: Express 5 async hataları çok daha iyi yakalıyor ama "return unutma" tuzağı canlı bir hata kaynağı.

TypeScript desteği kalitesi

İki taraf da dürüst itiraflarda bulunuyor, ama pozisyonları farklı. Fastify'ın resmi dokümanı: "framework vanilla JavaScript ile yazıldı, tip tanımlarını sürdürmek kolay değil; sürüm 2'den beri bakımcılar büyük çaba harcadı" — ve ekliyor: "API'nin bazı kısımları tiplenmemiş ya da yanlış tiplenmiş olabilir". Tip sistemi sürüm 3'te değişti, generic constraining eklendi. Paket metadata'sında ([email protected]) types: fastify.d.ts gömülü geliyor. Express'in npm paket metadata'sında bir types alanı yok. Resmi paket TypeScript tanımı içermiyor; topluluk bakımlı @types/express ayrı bir paket — Express'in kendi kaynağı değil, gecikme riski framework'ün kontrolünde değil. Sonuç: Fastify "resmi ama itiraf edilmiş eksik" tipler sunuyor, Express "topluluk bakımlı, ayrı paket" tipler sunuyor — ikisi de mükemmel değil.

Logging ve gözlemlenebilirlik varsayılanları

Fastify'da logging varsayılan kapalı; { logger: true } ile açıyorsun ve framework performans odaklı olduğu için varsayılan logger pino, açılınca varsayılan seviye "info". Her request kendi scope'unda request.log.info(...) gibi yapılandırılmış bir logger'a erişiyor — request-scoped structured logging ayrı kurulum gerektirmiyor. Express'in çekirdeğinde logger yok, ama resmi "Production best practices" sayfası bu boşluğu adıyla dolduruyor: uygulama etkinliğini kaydederken "use a logging library like Pino, which is the fastest and most efficient option available" diyor, debug amaçlı çıktı içinse console.log yerine debug modülünü öneriyor. Yani fark "öneri var, varsayılan yok" ekseninde: Express sana aynı logger'ı tavsiye ediyor ama kurulumu sana bırakıyor; Fastify tam olarak o logger'ı kutudan çıkar halde veriyor. morgan ve winston bu boşlukta yaygın alternatifler, resmi tavsiye değil. Bu, hız ile esneklik arasındaki klasik takas: Fastify'da structured logging hazır ama pino'ya bağımlısın; Express'te varsayılan yok ama logging çözümünü özgürce seçiyorsun.

Öğrenme kaynağı, işe alım havuzu ve göç maliyeti

Ham popülerlikte Express açık ara önde: GitHub'da 69.478 yıldız ve 25.065 fork'a karşı Fastify'ın 37.195 yıldız ve 3.036 fork'u (api.github.com, 25 Eylül 2026). Bu fark yalnız prestij değil — daha fazla Stack Overflow cevabı, tutorial, geniş bir işe alım havuzu demek. Yeni bir geliştiriciyi Express'e alıştırmak kaynak bolluğu yüzünden istatistiksel olarak daha kolay. Göç tarafında ayrım net: Express'in kendi 4→5 geçişi için resmi codemod var (npx codemod@latest @expressjs/v5-migration-recipe). Ama Express'ten Fastify'a resmi bir migration guide yok — route imzası (req,res)'ten (request,reply)'e, middleware plugin/hook yapısına dönüşüyor. Üstüne Fastify v5 yalnız Node.js v20+ destekliyor. Kısacası: net bir performans darboğazı kanıtlamadan göçün maliyeti genelde getirisinden fazla; sıfırdan başlıyorsan bu maliyet hiç yok.

Hangi Senaryoda Hangisi

Sıfırdan yeni bir REST API kuruyorum, performans ve şema doğrulama öncelikli

Öneri: Fastify

Resmi benchmark'ta 1,6× throughput avantajı, fast-json-stringify şema-derlenmiş serileştirme ve Ajv doğrulama framework'ün içinden geliyor; API-first çalışıyorsan @fastify/swagger ile OpenAPI de otomatik üretiliyor.

Büyük, mevcut bir Express codebase'i sürdürüyorum, ekip Express'e aşina

Öneri: Express 5'te kal

Resmi bir Express→Fastify migration aracı yok; göç route imzası + middleware modelinin elle yeniden yazılması ve Node v20+ yükseltmesi demek. Net bir performans darboğazı kanıtlanmadan bu maliyet genelde haklı çıkmaz.

Küçük ekip, hızlı MVP, geniş üçüncü parti middleware ihtiyacı var

Öneri: Express 5

Devasa middleware ekosistemi ve GitHub'da 69.478 yıldızla desteklenen geniş öğrenme kaynağı havuzu, sıfırdan öğrenen ya da hızlı prototipleyen ekipler için sürtünmeyi azaltıyor.

Çok-ekipli, büyüyen bir monorepo API'si; middleware sızıntısı riskinden kaçınmak istiyorum

Öneri: Fastify

Encapsulation context, hangi plugin/hook'un hangi route'a erişebileceğini mimari düzeyde sınırlıyor — bu disiplini Express'te konvansiyon ve code review ile elle sağlamak gerekiyor.

Eski bir Node.js sürümünde (v18 altı) çalışan bir Express projem var

Öneri: Önce Node'u yükselt, sonra karar ver

Fastify v5 yalnız Node.js v20+ destekliyor; Node yükseltmesi göç kararından bağımsız zaten gerekiyorsa, bu adımı atmadan framework kararı vermek erken.

Yapılandırılmış logging (pino) ve request-scoped log context'i baştan istiyorum

Öneri: Fastify

logger: true ile pino varsayılan olarak geliyor ve request.log.info request-scoped structured logger sağlıyor; Express'in resmi dokümanı da Pino öneriyor ama kurulumu sana bırakıyor.

Yaygın Tuzaklar

  • Express 5'te async handler'da Promise'i return etmeyi unutmak

    Express 5

    Çözüm

    Handler'ın Promise zincirini return ettiğinden emin ol; return edilmezse Express Promise'in varlığından haberdar olmuyor ve rejection unhandled kalıp process çökme riski oluşturuyor. .catch(next) ile açıkça sarmak daha güvenli.

  • Express 4'ten 5'e geçerken kaldırılan metodları (app.del, res.json(obj,status), req.param(name)) fark etmemek

    Express 5

    Çözüm

    Resmi codemod'u çalıştır: npx codemod@latest @expressjs/v5-migration-recipe, sonra test suite'i tam çalıştırıp kırılan çağrıları manuel düzelt.

  • Fastify v5'e geçerken querystring/params/body şemasında type alanını atlamak

    Fastify

    Çözüm

    v5'te kısayol şema kaldırıldı; her şema tam JSON Schema formatında olmalı ve type alanı zorunlu. Migration guide'daki örnekleri birebir takip et.

  • Fastify'da callback-tabanlı Node API hatalarının (fs vb.) otomatik yakalanacağını varsaymak

    Her ikisi

    Çözüm

    Bu hatalar Promise değil; Fastify'ın hook/setErrorHandler mekanizması da onları otomatik yakalamıyor — Express'teki gibi burada da elle işlenmesi gerekiyor.

  • Fastify + HTTP/2 + reply.trailer() kombinasyonunu eski sürümde (5.12.5 öncesi) production'da kullanmak

    Fastify

    Çözüm

    16 Eylül 2026'da yamalanan GHSA-4mh8-r7rc-xpvc güvenlik açığı bu kombinasyonda ERR_HTTP2_INVALID_CONNECTION_HEADERS ile process crash'ine (kimlik doğrulamasız DoS) yol açıyordu; advisory'de yamalı sürüm 5.12.5, yani Fastify'ı 5.12.5 ya da üstünde tut.

Geçiş Kılavuzu

Express 4/5'ten Fastify'a framework değişimi

Tahmini süre: Küçük bir API (10-20 route) için 1-2 hafta; orta-büyük bir monorepo API'si için resmi bir migration aracı olmadığından birkaç hafta ile birkaç ay arası değişir — route sayısına ve middleware karmaşıklığına bağlı.
  1. 1Node.js sürümünü v20+'a yükselt (Fastify v5 zorunlu kılıyor)
  2. 2Route handler imzalarını (req, res) → (request, reply) olarak yeniden yaz
  3. 3Global middleware'leri Fastify plugin/hook modeline (encapsulation context) taşı
  4. 4Her route için JSON Schema tanımla (querystring/params/body, type alanı dahil) ve Ajv doğrulamasına bağla
  5. 5İstersen res.json() serileştirmesini fast-json-stringify ile değiştirmek için response şemalarını ekle
  6. 6Logging'i pino'ya taşı (logger: true) ya da mevcut logging kurulumunu Fastify hook'larına adapte et
  7. 7express-validator/express-openapi-validator gibi üçüncü parti şema paketlerini kaldırıp @fastify/swagger ile OpenAPI üretimini kur
  8. 8Tüm test suite'ini (unit + entegrasyon) yeni route imzalarına göre güncelle ve çalıştır

Gelecek Öngörüsü

Express 5

Express 5.2.1 aktif bakımda; 4.x hattı da paralel sürüyor (v4.22.3, 14 Eylül 2026) — framework, tam Fastify tarzı bir mimari değişime gitmek yerine async ergonomi ve stabiliteye odaklanmış görünüyor. Express tarafında yayımlanmış bir v6 yol haritası yok.

Fastify

Fastify v6.0.0-alpha.4, 16 Eylül 2026'da yayınlandı — v6 hattı aktif geliştiriliyor, ama stabil sürüm hâlâ 5.x (5.12.5). v5'in kendisi de Eylül 2026'da bir güvenlik yaması (GHSA-4mh8-r7rc-xpvc) aldı, yani framework hâlâ hızlı iterasyon ve düzeltme temposunda.

Altın Bilgi

En değerli çıkarım: bu karşılaştırmadaki "kazanan" framework değil, senin projenin darboğazının nerede olduğu. Fastify'ın kendi benchmark'ı bile "illustrative, donanımına bağlı" diyor — 1,6× farkı mutlak gerçek gibi kullanıp karar verirsen yanılırsın. Çoğu CRUD API'de darboğaz DB sorgusu ya da network gecikmesi, framework farkı orada kayboluyor. Asıl eksen mimari disiplin: Fastify'ın encapsulation ve şema-zorunluluğu büyürken kontrolsüzleşmeyen bir API vaat ediyor; Express'in esnekliği "istediğin gibi kur, disiplini sen sağla" demek. Göçü performans sayısına değil bu soruya göre ver — Express'ten Fastify'a resmi bir yol yok, "sadece hızlı diye geç" mantığı genelde haklı çıkmaz.

İlgili Blog Yazıları

Tüm Yazıları Gör

İlgili İçerik