# Next.js
Next.js, React tabanlı web uygulamaları için sunucu tarafında işleme (server-side rendering) ve statik web sitesi oluşturma (static site generation) sağlayan, Vercel tarafından oluşturulmuş açık kaynaklı bir Web geliştirme platformudur.
React dokümantasyonu, Next.js'yi "Önerilen Araç Zincirleri" arasında gösterir ve "Node.js ile sunucu tarafında işlenen bir web sitesi oluştururken" geliştiricilere tavsiye eder. Geleneksel React uygulamaları, içeriğini yalnızca istemci tarafında tarayıcıda işleyebilirken, Next.js bu işlevselliği sunucu tarafında işlenen uygulamaları da içerecek şekilde genişletir.
Next.js'nin telif hakları ve ticari markaları Vercel'e aittir. Vercel, ayrıca açık kaynaklı gelişimini sürdürmekte ve yönetmektedir.


## Arka plan.
Next.js, sunucu tarafı betikleme ve statik web sitesi oluşturma gibi çeşitli ek özellikler sağlayan bir React framework'üdür. React, geleneksel olarak JavaScript ile istemcinin tarayıcısında işlenen web uygulamaları oluşturmak için kullanılan bir JavaScript kütüphanesi'dir. Ancak, geliştiriciler bu stratejinin JavaScript erişimi olmayan veya JavaScript'i devre dışı bırakmış kullanıcılara hitap etmemek, potansiyel güvenlik sorunları, önemli ölçüde uzayan Sekme yükleme süreleri ve sitenin genel arama motoru optimizasyonuna (SEO'ya) zarar vermek gibi birkaç problem içerdiğini fark etmişlerdir. Next.js gibi framework'ler, sitenin bazı bölümlerinin veya tamamının istemciye gönderilmeden önce sunucu tarafında işlenmesine izin vererek bu sorunlardan kaçınır. Next.js, React için en popüler framework'lerden biridir. Yeni bir uygulamaya başlarken kullanılabilecek birkaç önerilen "araç zincirinden" biridir ve tümü, yaygın görevlerde yardımcı olmak için bir soyutlama katmanı sağlar. Next.js, Node.js gerektirir ve Node Package Manager kullanılarak başlatılabilir.
Google, 2019'da GitHub'ta 43 çekme isteği (pull request) de dahil olmak üzere büyük ölçüde Next.js projesine katkıda bulunmuştur. Mart 2022 itibarıyla, bu framework Walmart, Apple, Nike, Netflix, TikTok, Uber, Lyft ve Starbucks gibi birçok büyük web sitesi tarafından kullanılmaktadır. 2020'nin başlarında, Vercel yazılımdaki geliştirmeleri desteklemek için Seri A finansman turunda 21 milyon dolar topladı. Framework'ün orijinal yazarı Guillermo Rauch, şu anda Vercel'in CEO'su ve projenin sorumlusu Tim Neutkens'dir.


## Tarihçe.
Next.js, ilk olarak 25 Ekim 2016'da GitHub üzerinde açık kaynak bir proje olarak yayınlandı. İlk olarak altı temel ilke üzerinde geliştirilmiştir; herhangi bir kurulum gerektirmeyen kutudan çıkar çıkmaz işlevsellik, her yerde JavaScript kullanılması, tüm işlevlerin JavaScript ile yazılması, otomatik kod ayırma ve sunucu tarafı işleme, yapılandırılabilir veri çekme, istekleri öngörme ve dağıtımı basitleştirme.
Next.js 2.0, Mart 2017'de duyuruldu ve küçük web siteleriyle çalışmayı kolaylaştıran çeşitli iyileştirmeler içeriyordu. Ayrıca, yapım verimliliğini artırdı ve sıcak modül değiştirme (hot-module replacement) özelliğinin ölçeklenebilirliğini geliştirdi.
Eylül 2018'de (Sürüm 7.0'da), geliştirilmiş hata işleme ve dinamik rota yönetimini iyileştirmek için React'ın bağlam API'sı (context API) desteğiyle birlikte yayınlandı. Bu sürüm ayrıca Webpack 4'e yükseltilen ilk sürüm oldu.
Sürüm 8.0, Şubat 2019'da yayınlandı ve uygulamaların sunucusuz dağıtımını sunan ilk sürüm oldu; bu sürümde, kod talep üzerine çalıştırılan lambda işlevlerine bölündü. Sürüm ayrıca statik dışa aktarma için gereken zaman ve kaynakları azalttı ve ön işleme performansını iyileştirdi.
Mart 2020'de duyurulan 9.3 sürümü, çeşitli optimizasyonlar ve global Sass ve CSS modülü desteği içeriyordu.
27 Temmuz 2020'de Next.js sürüm 9.5 duyuruldu ve yeni yetenekler ekledi; bunlar arasında artımlı statik yenileme, yeniden yazmalar ve yönlendirme desteği bulunmaktadır.
15 Haziran 2021'de Next.js sürüm 11 yayınlandı ve diğerlerinin yanı sıra: Webpack 5 desteği, gerçek zamanlı işbirlikçi kodlama işlevselliği "Next.js Live" önizlemesi ve "Create React App"ten Next.js uyumlu bir forma otomatik dönüştürme işlevi "Create React App Migration" eklendi.
26 Ekim 2021'de, Next.js 12 yayınlandı ve derleme işlemini hızlandıran Rust derleyicisi, AVIF desteği, Kenar İşlevleri & Ara Yazılım ve Yerel ESM & URL İçe Aktarımları ekledi.
26 Ekim 2022'de Vercel, Next.js 13'ü yayınladı. Bu büyük sürüm, beta aşamasında yeni bir yönlendirme düzeni getirdi ve App Router eklendi. bu düzenler; React Sunucu Bileşenleri, akış ve yeni bir veri çekme yöntemleri seti içermektedir. Ayrıca, Vercel, ön uç geliştirme için Turbo adında yeni bir araç zinciri duyurdu; Turbopack, Webpack'in bir halefi olarak ve Turborepo, artımlı yapım sistemleri için.
Mayıs 2023'te Vercel, Next.js 13.4'ü yayınladı. Bu sürüm, geliştiricilerin üretimde kullanabilmesi için App Router'ın kararlı sürümünü getirdi.
Ekim 2023'te Vercel, Next.js 14'ü yayınladı. Bu sürüm, kenar çalışma zamanı kullanarak geliştirilmiş bellek yönetimiyle birlikte gelmiştir.


## Stil ve özellikler.
Next.js, stil oluşturmayı (CSS'yi) yanı sıra önceden derlenmiş Scss ve Sass, CSS-in-JS ve JavaScript destekli React desteklemektedir. Ayrıca, TypeScript desteği ve akıllı paketleme ile birlikte gelir. Açık kaynaklı transpiler SWC, kodu tarayıcılar tarafından kullanılabilir JavaScript'e dönüştürmek ve derlemek için kullanılır. Daha sonra modülleri paketlemek için başka bir açık kaynak aracı olan Webpack kullanılır; ancak şu anda TurboPack ile değiştirilmektedir. Tüm bu araçlar terminalde npm ile kullanılır.
Next.js'in ana özelliği, tarayıcılardaki yükü azaltmak ve gelişmiş güvenlik sağlamak için sunucu tarafı işleme kullanmasıdır#YÖNLENDİRME . Bu, uygulamanın herhangi bir bölümü veya tüm sistem için yapılabilir, böylece içerik açısından zengin sayfalar sunucu tarafı işlemeye özel olarak ayrılabilir. Ayrıca, site varlıklarını henüz indirmemiş olan tarayıcıların yükünü azaltmak için yalnızca ilk ziyaretçiler için de yapılabilir. "Sıcak yeniden yükleme" özelliği, yapılan değişiklikleri algılar ve uygun sayfaları yeniden oluşturur, böylece sunucunun yeniden başlatılmasına gerek kalmaz. Bu, uygulama koduna yapılan değişikliklerin hemen tarayıcıda yansıtılmasını sağlar, ancak bazı tarayıcıların sayfanın yenilenmesini gerektirebilir. Yazılım, geliştirici kolaylığı için sayfa tabanlı yönlendirme kullanır ve dinamik yönlendirmeyi destekler. Diğer özellikler arasında modüllerin canlı olarak değiştirilmesine olanak tanıyan sıcak modül değişimi, yalnızca sayfayı yüklemek için gerekli olan kodu içeren otomatik kod ayırma ve yükleme süresini azaltmak için sayfa ön yüklemesi bulunur.
Next.js ayrıca Artımlı Statik Yenileme ve statik site oluşturmayı destekler - derlenmiş bir web sitesi versiyonu genellikle yapılandırma sırasında oluşturulur ve .next klasörü olarak kaydedilir. Bir kullanıcı bir istek yaptığında, önceden oluşturulmuş ve statik HTML sayfaları olan versiyon önbelleğe alınarak onlara gönderilir. Bu, yükleme süresini çok hızlı yapar, ancak sık sık değişen ve çok fazla kullanıcı girdisi kullanan etkileşimli siteler için uygun değildir.