Yayınlanma tarihi: 31 Temmuz 2025
Chrome, daha önce denemelerini yaptığımız Soft Navigations API için Chrome 139'dan itibaren yeni bir kaynak denemesi başlatıyor. Bu kaynak denemesi, sitelerin API'yi kendi sitelerinde gerçek kullanıcılarla denemesine, API'yi sahada test etmesine ve Chrome Ekibi'ne geri bildirimde bulunmasına olanak tanır.
Yumuşak gezinme nedir?
Yumuşak gezinme, JavaScript'in bir gezinmeyi (ör. bir bağlantıyı tıklama) yakalayıp yeni bir sayfa yüklemek yerine mevcut sayfadaki içeriği güncellemesi ve ardından adres çubuğundaki URL'nin güncellenmesi (geri ve ileri yumuşak gezinmelere izin veren bir geçmiş durumuyla) durumudur. Kullanıcı için bunlar geleneksel gezinmelerle aynı görünür ancak tarayıcı açısından sayfa, orijinal sayfa olmaya devam eder.
Yumuşak gezinme API'sinin neden gerekli olduğu
Soft Navigations API, Tek Sayfa Uygulaması (SPA) siteleri tarafından kullanılan "yumuşak gezinmeler" olarak adlandırılan gezinmelerin sezgisel olarak algılanmasına olanak tanıyan bir API önerisidir. Yumuşak gezinme sırasında gerçek bir sayfa gezinmesi gerçekleşmediğinden, normalde gezinme sırasında gerçekleşecek belirli işlemlerin JavaScript tarafından manuel olarak yönetilmesi gerekir. Gezinme geçmişi yönetimi gibi bazı işlemler mevcut API'lerle yapılabilir. Ancak Core Web Vitals'ı ölçme gibi diğer işlemler bu gezinmeler için mümkün değildir.
Soft Navigation API, yumuşak gezinmelerin gözlemlenmesine olanak tanır. Yumuşak gezinmeyi başlatan JavaScript (genellikle bir JavaScript çerçevesi), gezinmenin ne zaman gerçekleştiğini bilir ancak diğer JavaScript ve tarayıcı bunu bilmez.
Core Web Vitals ve tek sayfa uygulamaları
Soft Navigation API'nin temel amaçlarından biri, tek sayfa uygulamaları için Core Web Vitals metriklerinin ölçülmesine olanak tanımaktır. Core Web Vitals, hem tarayıcı (Chrome Kullanıcı Deneyimi Raporu gibi araçlarda gösterilmek üzere) hem de gerçek kullanıcı izleme (RUM) JavaScript kitaplıkları tarafından ölçülür.
JavaScript çerçeveleri, Core Web Vitals'ın bazı yönlerini ölçebilir. Özellikle Interaction to Next Paint (INP) ve Cumulative Layout Shift (CLS), INP ve CLS metriklerini hesaplamak için herhangi bir zaman aralığında ölçülebilen temel öğelere (sırasıyla Event Timing API ve Layout Instability API) dayanır. Ancak tarayıcı, Largest Contentful Paint (LCP) değerini sayfada gezinmelere ve etkileşimlerine göre bildirip sonlandırdığı için JavaScript çerçeveleri, tek sayfa uygulamalarının ilk yükleme performansı dışındaki hiçbir şeyi göremez.
Soft Navigation API, tek sayfa uygulamaları için Core Web Vitals ölçümüne nasıl olanak tanır?
Soft Navigation API'nin ilk yinelemesi, yumuşak gezinme sezgisel yöntemlerini LCP'nin sıfırlanmasıyla birleştiriyordu. LCP sıfırlandıktan sonra, yeni içerik boyama için geçiş navigasyonlarında yeniden yayınlanabilir. Böylece, bu metriğin geçiş navigasyonları için ölçülmesine olanak tanınır.
Bu son yineleme farklı bir yaklaşım benimser ve bu kavramları Soft Navigation API ile yeni bir Interaction to Contentful Paint performans girişinde birbirinden ayırır. interaction-contentful-paint girişi, etkileşimlerden sonraki "içerik boyama"yı ölçer. Şu anda bu yalnızca yumuşak gezinmeler için yayınlanmaktadır ancak tüm etkileşimler için etkinleştirilirse LCP'nin ötesinde başka potansiyel kullanım alanları da açar.
API ayrıca largest-contentful-paint, interaction-contentful-paint, event-timing ve layout-shift performans girişlerinin her birini, girişin ait olduğu gezinme için bir tanımlayıcı içerecek şekilde genişletti. Performans girişleri, ölçtükleri etkinlikten sonra (genellikle boşta kalma süresi boyunca) yayınlanır. Bu nedenle, performans girişi yayınlandığında URL genellikle değişmiş olur. Girişle birlikte gezinmeyi dahil etmek, performans giriş sürelerini yumuşak gezinme giriş süreleriyle eşleştirmek zorunda kalmadan belirli URL'nin Core Web Vitals metriklerini ölçmeyi çok daha kolay hale getirir.
Neden sezgisel yöntem?
Soft Navigation API, aşağıdakiler gerçekleştiğinde yumuşak gezinme olarak değerlendirir:
- Kullanıcı tabanlı bir etkileşim gerçekleştiğinde (kullanıcı etkileşimi olmadan yapılan URL güncellemeleri sayılmaz)
- … bu da DOM'da değişiklik ve boyama işlemine neden olur.
- … ve URL güncellemesi yapıldığında
- Geçmiş değişikliği de dahil olmak üzere URL güncellemesi.
API, bir JavaScript çerçevesinin "yumuşak gezinme" yayınlamasına veya Navigation API üzerine kurulmasına izin vermek yerine bu sezgisel yaklaşıma sahiptir. Bunun nedeni, çerçeveden veya geliştiricinin bunu nasıl kullandığından bağımsız olarak yumuşak gezinmenin ne olduğu konusunda tutarlı bir anlayışa olanak tanımasıdır.
Çerçeveler veya geliştiriciler, kullanıcının gezinme olarak göreceği bir kullanıcı etkileşimi ya da DOM güncellemesi olmadan bile yumuşak gezinme için URL'yi güncelleyebilir. Ayrıca, URL'yi farklı zamanlarda (etkileşimin başında veya yalnızca sonunda tamamlandığında) ya da aradaki herhangi bir durumda güncelleyebilirler.
Çerçeve seçimlerine güvenmek yerine, tarayıcıya yumuşak gezinme algılamayı dahil etmek, bu kaynak denemesinden aldığımız geri bildirimlerle birlikte, yumuşak gezinmeler için Core Web Vitals'ı büyük ölçekte ölçmemize ve bu tür ölçümleri büyük ölçekte karşılaştırılabilir hale getirmemize olanak tanıyan kanonik "sezgisel yöntemler" oluşturur.
Framework'ler ve geliştiriciler, Soft Navigations API'nin sezgisel yöntemlerini de yok sayabilir ve istedikleri ek performans metriklerini ölçmek için temel Event Timing, Layout Instability ve Interaction to Contentful Paint API'lerini kullanabilir. Ancak siteler arasında ölçüm yapılmasına olanak tanımak için sezgisel yöntemi kullanan Core Web Vitals'ı öneririz.
Soft Navigation API'yi test etmek için yardıma ihtiyacım var
Sezgisel yöntemin, yumuşak gezinmenin ne zaman gerçekleştiğine dair beklentilerinizi doğru şekilde karşılayıp karşılamadığını test etmek için Soft Navigations API'yi test etmemize yardımcı olmanızı rica ediyoruz. API'nin, gerçekleştiğini düşündüğünüz durumlarda yumuşak gezinmeleri raporlamadığı örnekler var mı? Aksine, API, yumuşak gezinme olarak değerlendirmediğiniz tekrarlanan gezinmelerde mi kullanılıyor?
URL'nin geçmiş eklenmeden replaceState ile güncellenmesi veya kullanıcı tarafından başlatılmayan bir gezinme işleminin (ör. zaman aşımı nedeniyle oturum kapatma) gerçekleşmesi, sorunlara neden olan örnekler arasındadır. Her iki durum da sezgisel yöntemlerle eşleşmemeyle açıklanır. Chrome ekibi, bu yöntemleri dahil etmemeyi uygun bulur ancak web geliştiricilerin bu konuda ne düşündüğünü öğrenmek ister. Özellikle, sezgisel yöntemlerin karşılanmış gibi göründüğü ancak API'nin yine de yumuşak gezinmeyi tanımadığı durumlar hakkında bilgi edinmek istiyoruz.
Ayrıca, bu API'nin ve yeni Interaction to Contentful Paint öğesinin, SPA'lar için Core Web Vitals ölçümüne izin verme şeklindeki temel kullanım alanını ele alıp almadığını anlamak istiyoruz.
API'nin mümkün olduğunca faydalı olmasını istiyoruz. Bu da API kullanıma sunulmadan ve siteler bir uygulamaya bağlı kalmaya başlamadan önce çok daha kolaydır. Bu nedenle, tek sayfa uygulaması geliştiricilerden ve bu siteler için web performansını ölçmek isteyenlerden bu API'yi denemelerini ve nasıl çalıştığı konusunda bize geri bildirimde bulunmalarını rica ediyoruz.
Test etme
API, Chrome flags veya komut satırı seçenekleriyle yerel olarak test edilebilir. Ayrıca, kaynak denemesi ile sahada da test edilebilir.
API'nin teknik ayrıntıları ve özellikle Core Web Vitals'ın nasıl ölçüleceği hakkında daha fazla bilgi için belgelerimize veya GitHub deposuna bakın. Ayrıca, web-vitals kitaplığının deneysel bir yumuşak gezinme sürümü de mevcuttur.
Geri bildirim
Bu deneme hakkında aşağıdaki yerlerden geri bildirim alıyoruz:
- API ile ilgili geri bildirimler GitHub'da sorun olarak iletilmelidir.
- Chromium uygulamasındaki hatalar, henüz bilinen sorunlar arasında yer almıyorsa Chrome'un sorun izleyicisinde bildirilmelidir.
- Genel web vitals geri bildirimleri web-vitals-feedback@googlegroups.com adresinden paylaşılabilir.
Kararsız kalırsanız endişelenmeyin. Geri bildirimi her iki yerde de almayı tercih ederiz. Her iki yerdeki sorunları da öncelik sırasına göre ele alıp doğru yere yönlendiririz.