Next.js web ürünlerinde varsayılan tercihim; moda olduğu için değil. Tek bir TypeScript kod tabanı, eskiden üç ayrı proje gerektiren işleri kapsıyor: arama sonuçlarında görünmesi gereken pazarlama sitesi, oturum açıldıktan sonraki uygulama ve ikisini bağlayan ince API katmanı. Bu site küçük bir örnek: yerelleştirilmiş rotalar, oluşturulan metadata, sitemap, Open Graph görselleri ve llms.txt rotası — hepsi aynı App Router projesinde.
Sunucu öncelikli başlarım. Sayfalar ve layout’lar varsayılan olarak Server Component’tir: veriyi veritabanına yakın yerden alır, JavaScript paketi yerine HTML gönderir ve sırları sunucuda tutarlar. “use client” ifadesini yalnızca durum, efekt veya tarayıcı API’si gereken ağaç uçlarına koyarım — form, açılır menü, harita gibi. Ağacın en tepesine “use client” yazıldığında genellikle ağır bir paket ve bir sürü hata da beraberinde gelir.
Render modunu seçmek teknik değil, ürün kararıdır. Deploy sırasında değişen sayfalar için statik üretim. Gün içinde değişen kataloglar, ilanlar ve bloglar için ISR ya da etiket tabanlı yeniden doğrulama: kimsenin anlamadığı bir zamanlayıcı yerine yazma işleminden sonra revalidateTag. Panolar ve kişisel içerikler için Suspense streaming’li dinamik render: kabuk hemen görünür, yavaş veriler sonradan gelir. Her rota için neden statik ya da dinamik olduğunu yazarım; o tek satır, sonradan «fiyat neden güncel değil?» sorusuyla geçecek bir haftayı kurtarır.
Değişiklikler için sayfaya ait formlarda Server Actions, dışarıdaki bir servis uygulamaya çağrı yapacaksa Route Handlers kullanırım: ödeme sağlayıcısından veya Telegram’dan webhook, mobil istemci ya da cron görevi. Her durumda girdiyi sunucuda Zod ile doğrular, kimlik doğrulamayı yine sunucuda denetlerim; istemci para veya izinler hakkında karar vermez. Büyük ürünlerde Next.js frontend ve BFF olarak kalırken ana iş alanı kendi veritabanı olan NestJS ya da Node.js servisinde yaşar.
Performans ve SEO, işin tamamlanma ölçütünün parçasıdır. Gerçek boyutlarla next/image, yerleşim kaymasını azaltmak için next/font, her herkese açık sayfada generateMetadata ve yapılandırılmış veri, ağır bileşenler için dinamik import’lar kullanırım. Core Web Vitals’ı MacBook’ta değil, orta sınıf bir telefonda denetlerim. Ekip operasyon yükü istemiyorsa Vercel’e; maliyet, veri yerleşimi veya uzun süren işler önemliyse AWS ya da VPS üzerinde Docker’lı standalone derlemeye dağıtırım.
Kök layout’a “use client” koymayı, önbelleği düşünmeden aynı veriyi beş bileşende çekmeyi, iş mantığını middleware’e saklamayı ve codemod’ları okumadan cuma günü major sürüm yükseltmeyi reddederim. Next.js uygulaman yavaş ya da kırılgan geliyorsa depoyu ve en yavaş iki sayfayı gönder. Sunucuya neyi taşıyacağımı, neyi önbelleğe alacağımı ve neyi sileceğimi söylerim.
Bir sonraki ürüne kalacak birini verin.
Başlamaya hazır mısınız? Bana yazın — hemen başlayabilir ve kalabilirim. İki haftalık devir değil, uzun vadeli iş birliği. Projenizi, gereksinimleri ve ilerlemenin en iyi yolunu konuşalım.