Yayın tarihi: 7 Kasım 2025
Japonya genelinde 38.000'den fazla kurumsal müşterinin tarayıcı uyumluluğunu yönetmek kolay bir iş değildir. Kintone, günlük 1,5 milyondan fazla uygulamanın kritik işletme işlemlerini desteklediği için her tarayıcı desteği kararı önemlidir.
Japonya'nın önde gelen grup yazılımı şirketlerinden Cybozu, temel bir zorlukla karşı karşıyaydı: Özel tarayıcı destek matrislerinin bakım yükünden kaçınırken ürünler arasında tutarlı web standartlarını nasıl koruyabiliriz?
Çözüm? Geliştirme standardı olarak Baseline'ı benimseme: Bu adım, web platformu özelliklerinin benimsenmesine yönelik yaklaşımlarını dönüştürdü.
Zorluk: Tahmin etmeden tarayıcı desteği
Baseline'dan önce Cybozu, erişim günlüklerine ve manuel sürüm izlemeye dayalı olarak kendi tarayıcı destek ölçütlerini kullanıyordu. Bu şirketlerin standardı, erişim günlüklerinin% 98'ini kapsayan tarayıcıları desteklemekti. Bu eşiğin dışındaki tarayıcılarda bulunan kullanıcılara ise tarayıcı güncelleme istemi gösteriliyordu.
Cybozu'nun mühendislik ekipleri, her çeyrekte toplam yaklaşık bir saatini ölçüt güncellemelerine ayırıyordu. Ancak ölçütlerin geliştirme ekibine entegrasyonu sorunsuz değildi ve şu gibi soruların sorulması oldukça yaygındı: Yeni CSS özellikleri ne zaman kullanılabilir? Yeni JavaScript API'leri için çoklu dolgular ne zaman kaldırılabilir? Peki hangi özellikler şu anda kullanılabilir?
Cybozu'nun özel ölçütleri, geliştiriciler için sürdürülebilirlik ve kullanılabilirlik açısından eksik olmasının yanı sıra kullanıcı aracısı algılama ve manuel sürüm izleme üzerine geliştirmenin, modern web'in evrimleşme hızına ayak uyduramadığını da fark etti.
User-Agent dizesine güvenilebilir mi?
Cybozu'nun önceki yaklaşımında tarayıcı adları ve sürümleri User-Agent dizelerinden elde ediliyor, ardından bu sonuçlar "kullanıcı" verileri olarak toplanıyordu. Ancak bu yaklaşım, kullanıcıların gerçekliğini gerçekten yansıtıyor mu?
User-Agent, herhangi bir istemcinin herhangi bir şey olduğunu iddia edebileceği bir HTTP istek başlığıdır. Ürün erişim günlükleri, botlardan, tarayıcılardan, saldırganlardan ve diğer kaynaklardan gelen çok sayıda istek içerir. Bazı istemciler, güvenlik açığı taraması gibi çeşitli amaçlarla eski User-Agent dizelerini kasıtlı olarak gönderir. Bu nedenle, erişim günlükleri desteklenmesi gereken kullanıcıları temsil edemez.
Kullanıcı aracısı, kullanılabilir özellikleri yansıtamaz
Tarayıcı sürümleri özelliklerle eşlenmez. Aynı sürüm numarası, kanal (Kararlı/Beta/Yeni Geliştirilenler/Canary), özellik işaretleri, Finch denemeleri veya kurumsal politikalar gibi faktörlere bağlı olarak farklı özelliklere sahip olabilir. Ayrıca, farklı tarayıcılar özellikleri farklı zaman çizelgelerinde uygular. Örneğin, CSS iç içe yerleştirme Safari 16.5'te (Mayıs 2023) kullanıma sunulurken Chrome 112'de (Nisan 2023) kullanıma sunulmuştur. User-Agent dizesi, özelliğin kullanılabilirliğini göstermez.
Tarayıcı sürümlerini kendimiz destekleme sorumluluğu
Tarayıcı güncellemeleri yalnızca yeni özelliklerle ilgili değildir. Düzenli tarayıcı sürümleri, yeni özelliklerin yanı sıra kritik güvenlik yamaları ve hata düzeltmeleri de içerir. Eski sürümler desteklendiğinde yeni özelliklerin kullanılmaması tek sorun değildir. Bu karar, aynı zamanda kullanıcı güvenliğini de doğrudan etkiler. Kurumsal ortamlarda bazı kullanıcılar meşru kısıtlamalarla karşılaşabilir. Örneğin:
- Kuruluşlar, güncellemeleri engelleyen katı tarayıcı politikalarına sahip olabilir.
- Eski donanımlar, modern tarayıcıların güncellenmesini desteklemez.
- Yasal düzenlemelere tabi sektörlerde faaliyet gösteren ve değişiklik onayı süreçleri yavaş olan kullanıcılar.
Ancak bu kullanıcıları desteklemek, güvenlik açıklarından yararlanmalarına da olanak tanır.
Eski bir tarayıcı sürümündeki bilinen bir güvenlik açığı kullanılarak bir güvenlik olayı meydana gelirse "Kullanıcılar istediği için bu tarayıcı destekleniyordu" demek makul bir açıklama olmaz. Saldırı, tarayıcılarını güncel tutan diğer kullanıcılara da yayılırsa geliştiriciler ve diğer proje paydaşları, güvenli olmayan tarayıcılara desteği sonlandırmadıkları için sorumluluk üstlenir.
Cybozu, bu yaklaşımın tarayıcılarını güncel tutan kullanıcıların çoğu için risk oluşturduğunu fark etti. Yalnızca günlük sayılarına dayalı olarak tarayıcıları desteklemek, uygun güvenlik doğrulaması içermez. Bu durum yalnızca yeni özelliklerden yararlanamamakla ilgili değil, aynı zamanda kullanıcıları koruma sorumluluğunu yerine getirememekle de ilgilidir.
Soru, "Bu sürümü kullanan kaç kullanıcı var?"dan "Kullanıcıları tarayıcı sürümlerine göre desteklemeli miyiz?"e dönüşür.
Neden Baseline, Cybozu için doğru yanıttır?
Cybozu, yalnızca tarayıcı desteği ölçütlerini korumanın operasyonel yükünü değil, aynı zamanda eski metodolojideki temel kusurları da ele alan yeni bir yaklaşıma ihtiyaç duyuyordu. Baseline, Cybozu'ya tam olarak bunu sağladı.
Harici olarak sürdürülen, gelişen ölçütler
Baseline, her çeyrekte tarayıcı sürümlerini manuel olarak yeniden değerlendirmek yerine, W3C WebDX Community Group tarafından yönetilen bir değişken hedef sunar. Bu hedef, rastgele kararlar veren bireysel şirketler tarafından değil, bu grup tarafından yönetilir. Bu nedenle, ölçütler tarayıcı tedarikçilerinden ve standart kuruluşlarından alınan verilerle otomatik olarak gelişir.
Kintone'un artık sürüm eşiklerini kendilerinin yönetmesine gerek kalmıyor. Temel sürüm, herhangi bir işlem yapmadan gelişiyor. Özelliklerin temel durumu, kullanılabilirlikle ilgili soruları kesin olarak yanıtlar ve platform geliştikçe yanıt da güncellenir.
Özellik düzeyinde kesinlik
Baseline, tek bir tarayıcının durumunu izlemeye çalışmak yerine temelde farklı bir yaklaşım benimser.
Temel düzeyde yaygın olarak kullanılabilirlik, önemli tarayıcılarda 30 ay veya daha uzun süredir kullanılabilen web özelliklerini ifade eder. Bu zaman aralığı, "geliştirici sinyallerini, tarayıcı sürümünün zaman içindeki kullanımını, toplam pazar payı desteğinin yüksek olacağına dair tahmini ve WebDX Topluluk Grubu'nun en iyi değerlendirmesini yaklaşık olarak belirlemek" için belirlenmiştir. Baseline, bu eşiği ayarlayarak gözlemlenemeyen bireysel tarayıcı durumlarını izleme görevini ortadan kaldırır.
Baseline sayesinde geliştiriciler, belirli bir özelliğin tarayıcılarda kullanılabilirliği hakkında doğrudan yanıt alabilir. "CSS kapsayıcı sorgularını kullanabilir miyiz?" artık yanıtlanabilir bir soru. Geliştiriciler, uyumluluk matrislerine çapraz referans vermeden MDN'de veya diğer belgelerde Baseline durumunu anında kontrol edebilir.
Tasarımı gereği güvenlik bilinciyle hareket eder
Cybozu, standart olarak Baseline Widely Available'ı benimseyerek destek politikasını tarayıcı satıcılarının destek yaşam döngüleriyle doğal olarak ilişkili bir zaman çerçevesiyle uyumlu hale getirdi. Hâlâ aktif olarak bakımı yapılan tarayıcılar, kritik güvenlik güncellemelerini alırken tüm genel kullanıma açık özellikleri de destekler.
Erişim günlüğüne dayalı ölçütler, desteği eski tarayıcılara bağlama potansiyeline sahipti. Bu durum, kullanıcıların tarayıcılarını güncelleme teşvikini ortadan kaldırıyordu. Baseline'ı benimseyerek modern özellikleri güvenle kullanabiliriz. Ayrıca, web platformu ilerledikçe eski tarayıcıları kullanan kullanıcılar da doğal olarak güncelleme ihtiyacıyla karşılaşır.
Temel düzey, güvenlik açığı olan tarayıcıları açıkça hariç tutmaz. Kullanıcıları tarayıcılarını güncel tutmaya teşvik eder.
Referans Değeri Benimseme
Referans değerin benimsenmesi için Cybozu'nun eski sürüm yönetiminden geçiş yapılması gerekiyordu. Bu nedenle Cybozu, Baseline'ın önemli dezavantajlar olmadan çalışacağından emin olmalıydı. Hangi kullanıcı yüzdesini etkileyeceğini bilmek, kurumsal düzeyde benimsenmesi için çok önemliydi.
Google Analytics Baseline Checker, Google Analytics'ten dışa aktarılan verileri analiz ederek kullanıcılarınızın hangi yüzdesinin her Baseline yılındaki özellikleri desteklediğini gösteren bir araçtır. Bu araç, Cybozu'nun bir temel hedef seçmenin kullanıcıları üzerindeki gerçek etkisini kontrol etmesine yardımcı oldu. Cybozu, Baseline Checker'ı çalıştırdıktan sonra dikkat çekici bir şey keşfetti:

Baseline Checker, Cybozu kullanıcılarının% 98,8'inin, Baseline Widely available hedefi destekleyen tarayıcılar kullandığını ortaya çıkardı. Bu, Cybozu'nun önceki dahili standardı olan kullanıcıların en az% 98'inin kapsamından daha geniştir. Sağlanan verilere göre üç önemli nokta analiz edilebilir:
- Daha önce desteklenen tarayıcılar bu durumdan etkilenmez.
- Daha önce desteklenmeyen tarayıcılar: Baseline Widely available ölçütlerini karşılayan ancak artık tarayıcı güncelleme istemini görmeyen yaklaşık% 0, 8'lik bir oranı temsil eder.
- Diğer tarayıcılar, tarayıcı güncelleme istemini eskisi gibi almaya devam eder.
Bu sayede, yanlış pozitiflerin ortadan kaldırılması sağlandı.Bu, yeterli tarayıcılar kullanmalarına rağmen gereksiz yere uyarı gösterilen kullanıcıların yaklaşık% 0,8'i anlamına geliyordu. Aynı zamanda, daha önce desteklenen kullanıcıları uyararak yanlış negatifler de ortaya çıkamaz.
Bu veriler sayesinde Cybozu, hedef olarak Yaygın olarak kullanılabilen temel'i güvenle benimseyebildi.
Temel değerin uygulamadaki etkisi
Baseline'ı politika olarak benimsemek bir şeydi ancak bunu operasyonel hale getirmek için araçlar ve süreçler oluşturmak gerekiyordu. Geliştiricilerin, temel durumunu manuel olarak kontrol etmeden desteklenmeyen özellikleri yanlışlıkla kullanmasını önlemek gerekiyordu.
ESLint yapılandırmasına dayalı statik analiz
@cybozu/eslint-config, Cybozu ürünlerinde kullanılan OSS tabanlı bir yapılandırmadır. CSS özelliklerini derleme sırasında Baseline'a göre kontrol eden css-baseline hazır ayarından itibaren desteklenmektedir:
// eslint.config.mjs
import cybozuEslintConfigBaseline from '@cybozu/eslint-config/flat/presets/css-baseline.js';
export default [
...cybozuEslintConfigBaseline.map((config) => ({
...config,
files: ['**/*.css']
})),
];
Geliştiriciler, henüz Baseline Widely kullanıma sunulmamış özellikleri kullandığında ESLint'ten anında geri bildirim alır:

Bu sayede uyumluluk sorunlarının üretime ulaşması önlenir. Geliştiriciler, geliştirme sürecinin başlarında bilinçli kararlar verebilir: Özelliğin geniş çapta kullanıma sunulmasını bekleyebilir veya hangi kullanıcıların etkileneceğini tam olarak bilerek aşamalı iyileştirme uygulayabilir. (ESLint'in CSS ve Baseline desteği hakkında daha fazla bilgi edinin.)
Transpiler'ları Baseline Widely available'ı hedefleyecek şekilde yapılandırma
Modern derleme araçları, Baseline'ı hedef olarak desteklemeye başladı. Örneğin, Vite, ek yapılandırma olmadan üretimde Baseline Widely Available'ı otomatik olarak hedefler. Browserslist artık Baseline'ı da destekliyor.
Çeşitli derleyici ayarlarını kullanmak, JavaScript ve CSS'mizin yalnızca gerektiğinde dönüştürülmesini sağlar. Böylece, zaten yaygın olarak desteklenen özellikler için gereksiz dönüşümler ve çoklu dolgular önlenir.
Kullanıcı geri bildirimi için manuel ölçüt bakımını ve tarayıcı algılama sistemini ortadan kaldırma
En büyük bakım avantajı, manuel tarayıcı sürümü izlemenin ortadan kaldırılmasıyla elde edildi. Cybozu, hangi tarayıcı sürümlerinin destekleneceğini tartışmak için üç ayda bir toplantı yapmak yerine artık bu soruları yanıtlamak için açıkça sürdürülen @web-platform-dx/baseline-browser-mapping paketine güveniyor.
Cybozu, eski tarayıcılarda kullanıcılara yükseltme istemleri göstermek için otomatik tarayıcı algılama özelliği de geliştirmiştir.

Tarayıcı algılama özelliği, uyumlu tarayıcı sürümlerini doğrudan @web-platform-dx/baseline-browser-mapping paketinden getirir.
Bu işlem, derleme sürecimizde çalışır ve tüm ürün ekipleriyle paylaşılan uyarı banner'ları oluşturur. Baseline Widely available penceresi daha yeni tarayıcıları içerecek şekilde değiştiğinde sistemimiz, değişiklikleri otomatik olarak algılar ve manuel müdahale gerekmez.
Kolaylaştırılmış iletişim
En önemli ancak beklenmedik faydalardan biri, Baseline'ın ekipler arası iletişimi nasıl basitleştirdiğidir. Daha önce, tarayıcı uyumluluğuyla ilgili tartışmalar için şirkete özgü alan bilgisi (hangi tarayıcıları, hangi sürümleri desteklediğimiz ve hangi özelliklerin kullanılabildiği) gerekiyordu. Yeni çalışanların, şirket içi standartlarımızı öğrenmesi zaman alıyordu. Baseline ile artık web topluluğunda yaygın olarak kabul edilen aynı uyumluluk ölçütlerini referans alıyoruz.
Bu sayede hem mühendislik ekiplerimiz hem de daha geniş web topluluğu arasında ortak bir kelime dağarcığı oluşturulur. Özelliklerin benimsenmesiyle ilgili tartışmalarda herkes aynı kaynaktan alınan aynı verilere atıfta bulunur. Böylece, dahili politikaları açıklama veya farklı uyumluluk çerçeveleri arasında çeviri yapma ihtiyacı ortadan kalkar.
Geliştirme araçları da bu konuda gelişti: Visual Studio Code ve Chrome Geliştirici Araçları'ndaki Stil paneli artık doğrudan Baseline uyumluluğu bilgilerini gösteriyor. Geliştiricilerin, bir özelliğin güvenli olup olmadığını doğrulamak için artık sürekli olarak MDN'yi veya Can I use'u kontrol etmesi gerekmiyor. Araç, kullanıcıları hemen bilgilendirir.
Ürünün herkes için güvenle çalışmasını sağlama
Baseline sayesinde, tarayıcı uyumluluğuyla ilgili düşünce tarzımızı temelden değiştirebiliriz. Bu sayede, tarayıcı uyumluluğunu yönettiğimiz bir yükten güvendiğimiz bir temele dönüştürebiliriz. Uygulama stratejimiz her aşamada otomasyonu temel alıyordu:
- Geliştirme zamanı geri bildirimi: Statik analiz ve temel durum kartı.
- Derleme zamanı doğrulama: Transpiler'lar, Baseline Widelyavailable'ı otomatik olarak hedefler.
- Çalışma zamanı algılama:
baseline-browser-mappingkullanan desteklenmeyen tarayıcılar için kullanıcıya yönelik uyarılar. - Sürekli güncellemeler: Temel verilerle otomatik senkronizasyon sayesinde manuel bakım ortadan kalkar.
Sonuçlar ortada:
- Tarayıcı sürümü bakımı için sıfır saat harcanır.
- Özellik düzeyinde kesinlikle % 98,8'in üzerinde kullanıcı kapsamı korunur.
- "Bu özelliği bu tarayıcı sürümünde kullanabilir miyiz?" sorusunu yanıtlayan SSS'ye anında ve kendiliğinden yanıtlar
- Mühendislik ekipleri arasında ortak kelime dağarcığı.
- Özelliklerin kullanıma alınması için daha net bir yol, ekipleri yeni özelliklerin entegrasyonunu ve gerekirse polyfill'lerin kaldırılma zamanlamasını tartışmaya yönlendirir.
Baseline'ı kullanmayı düşünen kuruluşların, bu geçişin kullanıcılarını nasıl etkileyeceğini bilmesi çok önemlidir. Google Analytics Baseline Checker gibi araçlar bu ölçümü daha basit ve açıklayıcı hale getirir. Verilere güvendikten ve Baseline'ı kullanmaya karar verdikten sonra, geliştirme iş akışınızı düzenlemek için Baseline'ın büyüyen ekosistemini kullanabilirsiniz.
Web platformu artık daha güçlü, daha tutarlı, daha güvenilir ve geçmişe kıyasla daha hızlı gelişiyor. Baseline ile bu gücü üretimde güvenle kullanabiliriz.
Kaynaklar
- Japonca orijinal makale: プロダクト開発の基準に Baseline を取り入れるまで - Cybozu Inside Out
- Cybozu ESLint yapılandırması: GitHub'da
@cybozu/eslint-config - Google Analytics Baseline Checker: Google Analytics Baseline Checker
- Temel tarayıcı eşlemesi:
@web-platform-dx/baseline-browser-mapping - Baseline hakkında bilgi edinin: MDN'de Baseline