Bu Siteyi Production'da Next.js 16'ya Yükselttik: Ne Bozuldu, Ne Hızlandı
thecodevolt.com'u Next.js 16'ya yükseltmenin saha notları: i18n yönlendirmelerini sessizce öldüren middleware-proxy yeniden adlandırması, production'da React Compiler, Turbopack'in bayat chunk tuzağı ve kimsenin uyarmadığı flat-config ESLint geçişi. Gerçek hatalar, gerçek çözümler, kopyala-yapıştır hazır.
— YazanHalil Berkay SahinFramework yükseltme yazıları genellikle demo repo'dan yazılır. Bu yazı şu anda okuduğunuz siteden: thecodevolt.com, React Compiler açık ve production'da Turbopack ile Next.js 16 üzerinde çalışıyor ve yükseltme not almaya değer tam dört sürpriz üretti.
Birinci sürpriz, iki dilli siteleri en sert ısıracak olan: middleware.ts artık proxy.ts. Next.js 16 dosya konvansiyonunu yeniden adlandırdı ve hata modu sinsi çünkü sessiz. Bizim locale algılama ve yönlendirme mantığımız next-intl üzerinden o dosyada yaşıyor. Sürüm yükseltmesinden sonra build geçti, site render oldu, /en ve /tr URL'leri doğrudan yazılınca çalıştı; ama kök yönlendirme ve locale müzakeresi düpedüz yok olmuştu. Hata yok, uyarı yok: framework'ün artık bakmadığı bir dosya çağrılmayı bırakıyor. Çözüm, yeniden adlandırma artı export edilen config matcher'ını güncellemek. i18n middleware çalıştırıyorsanız, yükseltmeden sonra ilk iş çıplak domain yönlendirmesini test edin.
İkinci sürpriz, iyi olanı: React Compiler. reactCompiler: true yaptık ve önce hiçbir şey silmedik; sonra animasyon ağırlıklı bileşenlerden useMemo ve useCallback sarmalayıcılarını kademeli olarak kaldırdık ve hiçbir gerileme ölçmedik. Compiler build zamanında memoize ediyor ve bunun gibi Framer Motion ağırlıklı bir sitede bu, her etkileşimli bölümde daha az stale-closure bug'ı ve daha az boilerplate demek. Deneyimimizde production'da stabil; tek uyarı: React kurallarını ihlal eden kurnaz mutasyon numaraları yapan bileşenler sessizce atlanıyor, bu yüzden ESLint react-hooks kurallarınızı açık tutun.
Üçüncü sürpriz: Turbopack hızlı ve kindar. Dev sunucusu açılışı yaklaşık 6 saniyeden 1'in altına indi, hot reload fiilen anlık. Ama Turbopack'in önbelleği, kaynak ağacınıza yazan tek şeyin kendisi olduğunu varsayıyor. Dosyalar dev sunucusunun dışında düzenlendiğinde (bir codegen script'i, git checkout, dosyaları doğrudan yazan bir AI kodlama aracı) hata katmanı göstermeden bayat chunk servis etmeye devam edebiliyor. Belirti çıldırtıcı: değişikliğiniz diskte ve tarayıcı göstermeyi reddediyor. Tedavi sıkıcı: bant dışı düzenlemelerden sonra dev sunucusunu yeniden başlatın ve ekibinize bu kuralı, buna bir saat kaybetmeden önce öğretin.
Dördüncü sürpriz: ESLint flat-config geçişi, planlasanız da planlamasanız da yükseltmenin parçası. Next.js 16'nın lint entegrasyonu eslint.config.mjs flat config bekliyor ve eklenti ekosisteminin yarısı hâlâ eski .eslintrc formatını dokümante ediyor. Config çevirisi için bir saat ayırın ve geçiş hızlansın diye kuralları kapatma dürtüsüne direnin; react-hooks kuralları React Compiler'ı etkili tutan şeyin ta kendisi.
Bozulmayanlar da bir cümleyi hak ediyor: App Router yüzeyi, generateMetadata, route handler'lar, sitemap ve OG görsel üretimi, next-intl mesaj yükleme ve her Framer Motion ile GSAP animasyonu değişmeden çalıştı. Yükseltme gerçekten kademeli; tehlike kodun kendisinde değil, yeniden adlandırılan proxy dosyasında ve kodun etrafındaki araçlarda yoğunlaşıyor.
Orta boy bir production sitesi için dürüst kontrol listesi: önce yeniden adlandırılan konvansiyonlar için sürüm notlarını okuyun, bir branch'te yükseltin, middleware.ts'i proxy.ts yapın, type checker'ı çalıştırın, ESLint config'i taşıyın, her locale yönlendirmesine ve forma tıklayın, sonra React Compiler'ı bisect edebilmek için ayrı bir commit olarak açın. Egzotik bir şey çıkmazsa yarım gün. Siteniz gelir-kritikse ve keskin köşeleri başkasının emmesini isterseniz, bu bizim müşteriler için her hafta yaptığımız türden bir iş.
- 01Next.js 16'da middleware.ts, proxy.ts olarak yeniden adlandırıldı ve kaçırmak i18n locale yönlendirmelerini sessizce bozuyor: build hatası yok, dosya sadece çağrılmayı bırakıyor.
- 02React Compiler deneyimimizde production'a hazır: animasyon ağırlıklı bir sitede manuel useMemo/useCallback temizliği sıfır ölçülen gerilemeyle sonuçlandı.
- 03Turbopack, dosyalar dev sunucusu dışında değişince bayat chunk servis ediyor. Codegen, git işlemleri veya AI aracı düzenlemelerinden sonra yeniden başlatın.
- 04ESLint flat-config geçişi yükseltmenin gizli parçası; react-hooks kurallarını açık tutun çünkü React Compiler kural ihlal eden bileşenleri sessizce atlıyor.
- 05Gerçekçi bütçe: orta boy bir site için yarım gün; uygulama kodundan çok doğrulama ve araç katmanında yoğunlaşıyor.
Next.js 16, 2026'da production için yeterince stabil mi?
Evet. Kendi sitemizde React Compiler ve Turbopack açık halde çalıştırıyoruz ve müşteri projelerinde deploy ediyoruz. Yükseltme riski çalışma zamanı stabilitesinde değil; yeniden adlandırılan konvansiyonlarda (middleware'den proxy'ye) ve araç geçişinde (ESLint flat config) yoğunlaşıyor.
Next.js 16'ya yükselttikten sonra locale yönlendirmelerim neden bozuldu?
Neredeyse kesin middleware yeniden adlandırması. Next.js 16, middleware.ts yerine proxy.ts arıyor ve kalan bir middleware.ts sessizce yok sayılıyor: build hatası yok, uyarı yok. Dosyayı yeniden adlandırın, next-intl middleware mantığınızı ve config matcher'ınızı içinde tutun ve çıplak domain yönlendirmesini hemen test edin.
React Compiler'ı hemen açmalı mıyım?
Çekirdek yükseltme doğrulandıktan sonra kendi commit'i olarak açın; bir şey gerilerse bisect edebilirsiniz. Bizim production deneyimimizde ölçülebilir bir dezavantaj olmadan manuel memoization'ı kaldırdı; ama hook kurallarını ihlal eden bileşenler sessizce atlanıyor, bu yüzden react-hooks ESLint kurallarını zorunlu tutun.
Gerçek bir site için Next.js 16 yükseltmesi ne kadar sürer?
Orta boy bir production sitesi için (10-30 route, i18n, animasyonlar, API route'ları) kabaca yarım gün planlayın: kod değişiklikleri küçük ve sürenin çoğu ESLint config taşımasına ve yönlendirme, form, metadata tıklama doğrulamasına gidiyor. Özel webpack config'li veya egzotik middleware'li büyük uygulamalar daha fazla bütçelemeli.
Bunu projenize uygulayalım.
15 dakikalık ücretsiz görüşme. Satış konuşması değil, teknik değerlendirme.