Yayınlanma tarihi: 31 Temmuz 2025
Chrome, daha önce denediğimiz 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 (örneğin, 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 Sayfalı Uygulama (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 ile 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ı İzleme (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 Largest Contentful Paint (LCP) gibi diğer metrikler yalnızca tarayıcı tarafından, sayfa gezinmelerine göre yayınlanır ve etkileşimde bulunulduğunda sonlandırılır.
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 Önemli Web Verileri'ni ö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 değişikliği 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. Bu, çerçeveden veya geliştiricinin çerçeveyi nasıl kullandığından bağımsız olarak neyin yumuşak gezinme olduğunu tutarlı bir şekilde anlamayı sağlar.
Çerçeveler veya geliştiriciler, kullanıcının gezinme olarak göreceği bir kullanıcı etkileşimi ya da DOM güncellemesi olmasa 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, ölçekte yumuşak gezinmeler için Önemli Web Verileri'ni ölçmemize ve bu tür ölçümleri ölçekte karşılaştırılabilir hale getirmemize olanak tanıyan kanonik "sezgisel yöntemler" oluşturur (bu kaynak denemesinden aldığımız geri bildirimlerle).
Framework'ler ve geliştiriciler, Soft Navigations API'nin sezgisel yöntemlerini de yoksayabilir 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ı ölçüme izin vermek için sezgisel yöntemi kullanan Core Web Vitals'ı öneririz.
Yumuşak gezinme API'sinin test edilmesi 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 gerekiyor. API'nin, gerçekleştiğini düşündüğünüz durumlarda yumuşak gezinmeleri raporlamadığı örnekler var mı? Bunun tam tersi olarak, API, yumuşak gezinme olarak değerlendirmediğiniz tekrarlanan gezinmelerde mi çalışı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 durumları dahil etmemeyi uygun bulsa da web geliştiricilerin bu konudaki görüşlerini öğ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ına hitap edip etmediğini 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 Önemli Web Verileri'nin 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ızsanız endişelenmeyin. Geri bildirimi her iki yerde de almayı tercih ederiz. Her iki yerdeki sorunları öncelik sırasına göre ele alıp doğru yere yönlendirmekten memnuniyet duyarız.