Cloudflare, Next.js uygulamalarını Vite üzerinde çalıştırmaya ve Cloudflare Workers, Netlify ve AWS Lambda gibi platformlarda yayımlamaya olanak tanıyan açık kaynaklı bir çerçeve olan Vinext'in 1.0 sürümünü kullanıma sundu. Proje, desteği Next.js'in daha yeni mimarisiyle sınırlamak yerine, Pages Router veya App Router kullananlar da dahil olmak üzere yeni uygulamaları ve mevcut projeleri hedefliyor.
Next.js uygulamalarıyla daha geniş uyumluluk
Vinext, şubat ayında kullanıma sunulduğunda bir hafta süren yapay zekâ destekli bir denemeden, Cloudflare'in yüksek trafikli ve dinamik uygulamalarla üretimde kullanıldığını söylediği bir çerçeveye dönüştü. Şirket, aynı adları taşıyan API arayüzlerini yalnızca taklit etmek yerine uygulamaların gerçek davranışlarını test etmeye devam ederken, müşterilerin talep ettiği özelliklerin çoğuyla uyumluluğunun yüzde 99'un üzerinde olduğunu belirtiyor.
Sürüm; App Router ve Pages Router yollarını, hibrit uygulamaları, sunucudaki React bileşenlerini, sunucu eylemlerini, API yollarını, yol işleyicilerini, ara yazılımları ve istemci tarafı gezinmeyi destekliyor. Ayrıca sayfaların sunucuda oluşturulmasını, sayfaların artımlı yeniden oluşturulmasını (ISR), statik varlıklara dışa aktarmayı ve arka planda ya da talep üzerine yeniden doğrulamayı kapsıyor.
Pratikte ne değişiyor?
Vinext, önbellekleme işlevlerini iki yol ve desteklenen çalışma ortamları arasında birleştiriyor ve Workers Cache için ek destek sunuyor. Ayrıca Next.js ile uyumlu izleme sağlıyor; böylece mevcut OpenTelemetry ve Sentry ayarları korunabiliyor. Cloudflare Workers üzerinde ise Workers'ın yerel izleme araçlarıyla entegre oluyor.
Sürüm, geliştirme ve üretim sırasında workerd ortamı için doğrudan destek ve görüntü optimizasyonu ile Hyperdrive gibi Cloudflare bağlantılarına erişim ekliyor. Buna karşılık, Cache Components ile ilişkili use cache yönlendirmesine verilen destek sınırlı kalıyor; Cloudflare, mevcut önceliğin uygulamaların üretimde dayandığı temel çerçeve işlevleri olduğunu açıklıyor.
Yayın öncesinde önbelleği ısıtma
Vinext 1.0, derleme işlemi sırasında App Router ve Pages Router yolları için sayfaları önceden oluşturma, ardından bunları ISR üzerinden sunma ve yola veya etikete göre geçersiz kılma mekanizması sunuyor. Bununla birlikte, on binlerce ya da yüz binlerce URL içeren uygulamalar için farklı bir seçenek daha ekliyor: ön oluşturmanın bir bölümünü derleme cihazından Cloudflare ağına taşımak.
cache warming özelliği, hazırlanması gereken sayfaları belirlemek için alışılmış Next.js göstergelerini kullanıyor ve trafiği yüksek sayfaları da belirleyebiliyor. Yeni sürüm üretim trafiğine geçirilmeden önce Cloudflare, trafiğin yüzde sıfırında bir Worker sürümü yayımlıyor ve önbelleği doldurmak için sayfaları bu sürümden talep ediyor. İşlem tamamlandıktan sonra dağıtım yükseltilebiliyor. Bu, az ziyaret edilen sayfaların art arda oluşturulmasını bekleme ihtiyacını azaltıyor; ancak bu özellik kullanıldığında pratikte Cloudflare üzerinde yayımlamaya bağlı kalıyor.
Testler ve geçiş yolu
Cloudflare, projenin çerçevenin davranışını, geliştirme ve üretim modlarındaki sunucuları ve Node.js ile Cloudflare Workers üzerindeki dağıtım hedeflerini kapsayan binlerce teste dayandığını belirtiyor. Ayrıca kaynakta yapılan değişikliklerden kaynaklanan gerilemeleri izlemek için kapsamlı Next.js test paketini her gece Vinext üzerinde çalıştırıyor. Geçiş süreci, Next.js projesinin önceki yapısını koruyarak projenin uyumluluğunu, Vite ayarlarını ve dağıtım yapılandırmasını doğrulamak için iki komut içeriyor: npx vinext check ve ardından npx vinext init.
Vinext, yeni ve mevcut projeler için kullanılabiliyor ve önbellek ısıtma ile birlikte npx @vinext/cloudflare deploy --warm-cache komutu kullanılarak Cloudflare Workers üzerinde yayımlanabiliyor. Uyumluluk matrisi ve Cache Components gibi tamamlanmamış özellik desteği, karmaşık uygulamalarda geçişi benimsemeden önce ekiplerin incelemesi gereken noktalar olmaya devam ediyor.