← Radar

Konu: Kodlama3 dk okuma

vinext: Cloudflare, Next.js'i bir haftada yapay zekâyla Vite üzerinde yeniden yazdı

Bu neden önemli?

Büyük bir yazılımı ajanla yeniden yazmanın ne zaman işe yaradığını gösteren somut bir örnek. Elinde iyi bir test paketi ve net bir hedef varsa, aylar sürecek bir iş günlere inebiliyor. Ama kod kalitesi ve güvenlik kendiliğinden gelmiyor.

Ne yapıldı?

Next.js, Vercel’in geliştirdiği en yaygın React framework’ü. Kendi derleme aracıyla (Turbopack) geliyor ve en rahat Vercel’de çalışıyor. Başka bir platformda çalıştırmak için derleme çıktısını tersine çözen ara katmanlar gerekiyordu.

Cloudflare Şubat 2026’da farklı bir yol denedi: Next.js’i sarmalamak yerine, onun API’sini Vite üzerinde baştan yazdı. Sonuç vinext adlı bir Vite eklentisi. app/ ve pages/ klasörlerin, next.config.js dosyan olduğu gibi kalıyor. Komutlar vinext dev, vinext build, vinext deploy.

Cloudflare’in yazısına göre ilk commit 13 Şubat’ta atıldı. Bir haftadan kısa sürede yönlendirme, sunucu tarafı render, React Server Components, server action’lar, önbellek ve middleware çalışır hâle geldi. Yaklaşık 800 OpenCode oturumu ve 1.100 dolar civarında Claude token’ı harcandı. Yazıya göre kodun neredeyse her satırını yapay zekâ yazdı.

“Slop fork” nasıl yapılır?

Projeyi yapan Steve Faulkner, Syntax’ta bu “özensiz çatal” lakabını gülerek benimsedi. Videoya göre daha önce aynı iş için beş mühendisle altı aylık bir tahmin yapılmış, proje rafa kalkmıştı. Bu sefer işe yarayan birkaç şey vardı:

  • Önce plan. Birkaç saat boyunca modelle konuşarak bir plan çıkardı ve bunu Markdown dosyasında tuttu.
  • Testler şartname. Next.js’in test paketini tek tek vinext’e taşıdı, ilerlemeyi bir belgede izledi. Cloudflare’e göre ortaya 1.700’ün üzerinde Vitest ve 380 Playwright testi çıktı.
  • Hızlı geri bildirim. Tip kontrolü, linter ve testler her değişiklikte çalıştı. Ajan bir hatayı ne kadar çabuk görürse o kadar çabuk düzeltiyor.
  • Tarayıcıda karşılaştırma. Ajan, agent-browser ile sayfaları açıp Next.js’in örnek uygulamasıyla karşılaştırdı. Faulkner’a göre büyük ekran görüntüleri modelin resim sınırını aşıp oturumu bozabiliyordu.
  • Keşifler dosyası. Ekosistemde bulunan hataları bir dosyaya yazdı ki ajan aynı duvara tekrar çarpmasın.

Bu yaklaşımın genel hâlini ajanı raylarda tutmak yazısında anlattık: Ajanın işini ölçen şey senin testlerin. Bir ay önce Anthropic de aynı yöntemle 16 Claude ajanına sıfırdan bir C derleyicisi yazdırmıştı (C derleyicisi yazımız).

Bedeli ne?

Faulkner, kodun uzun ve kendi yazacağı gibi olmadığını açıkça kabul etti. Hedef uyumluluk ve geçen testlerdi, güzellik değil. Videoya göre Vercel de kısa süre içinde vinext’te güvenlik açıkları bulup Cloudflare’in hata ödül programına bildirdi. Yani “testler geçiyor” ile “güvenli” aynı şey değil.

Cloudflare’in kendi kıyaslamasında üretim derlemesi Vite 8 ile 4,4 kat hızlı, istemciye giden JavaScript yüzde 57 daha küçük çıktı. Ama yazı bunun tek bir 33 sayfalık uygulamada ölçüldüğünü ve sadece yön gösterdiğini söylüyor.

İlginç bir fikir de trafiğe göre ön render: vinext yayına alırken son 24 saatin trafiğine bakıp sadece çok ziyaret edilen sayfaları önceden üretiyor, gerisini ilk istekte oluşturup önbelleğe alıyor. Bu özellik deneysel.

Sonra ne oldu?

  • Mayıs’ta Next.js’te 13 açık kapatıldığında (o yazımız), Cloudflare vinext’in güncel sürümünün bunlardan etkilenmediğini, çünkü ilgili kod yollarını hiç uygulamadığını duyurdu.
  • 28 Eylül 2026’da vinext 1.0 çıktı. Cloudflare’e göre müşteriler onu artık üretimde kullanıyor. Önemli özelliklerde testlerin yüzde 99’undan fazlası geçiyor, ama Cache Components ve use cache desteği hâlâ sınırlı. Workers dışında Netlify ve AWS Lambda’ya da çıkabiliyor. Next.js’in uçtan uca testleri her gece vinext’e karşı çalışıyor.
  • Aynı yöntem başka projelere de yayıldı. Testlerin kopyalama tarifine dönüşmesini ArtCraft ve Rea yazısında anlattık.

Düşün

  • Senin projenin test paketi, biri onu sıfırdan yeniden yazmak istese ona yeterli bir şartname olur muydu?
  • Bir ajanın yazdığı ama senin okumadığın 50 bin satırlık kodu üretime almadan önce neyi kontrol ederdin?

Videoyu izle

Tıklayınca video YouTube'dan yüklenir; o ana kadar bu sayfa YouTube'a hiçbir istek göndermez.
Kaynaklar (7, İngilizce)

Kendi cümlelerimizle yazılmış bir özettir, çeviri değildir. Tüm kaynaklar yukarıda.