Hızlı Cevap
Üçüncü taraf scriptler Core Web Vitals’ı; ek DNS/TLS bağlantılarıyla LCP’yi geciktirerek, uzun JavaScript görevleriyle INP ve TBT’yi yükselterek, geç yüklenen reklam ve widget alanlarıyla CLS oluşturarak bozar. Etkilerini azaltmak için önce ağır origin’leri ölçün; sonra defer, async, facade, Partytown veya server-side tagging ile yükü kritik yolun dışına taşıyın.
Önemli Noktalar
- LCP sorunu çoğu zaman ağ rekabeti ve parser blocking’den çıkar.
- INP ve TBT’de asıl maliyet tıklama anındaki uzun görevlerdir.
- Facade, video ve chat widget’larında ilk yük maliyetini sert düşürür.
- Partytown ve server-side tagging ileri seviye ama etkili seçeneklerdir.
- Sürekli denetim olmazsa kaldırdığınız yük birkaç sprintte geri gelir.
Üçüncü taraf scriptleri Core Web Vitals’ı hangi mekanizmalarla bozar?
2026 itibarıyla üçüncü taraf kod problemi artık sadece yavaş açılan sayfa meselesi değil; doğrudan Core Web Vitals meselesi. HTTP Archive’ın 2025 Web Almanac bölümüne göre web sayfalarının büyük çoğunluğu, yaklaşık yüzde 90-92 bandı, en az bir üçüncü taraf kaynağı yüklüyor. Aynı bölümde üçüncü taraf isteklerinin sayfa başına arttığı da görülüyor. Bu yüzden sorun, scriptin var olup olmaması değil; ne zaman, nerede ve hangi thread üstünde çalıştığıdır.
LCP tarafında zarar çoğunlukla ağ seviyesinde başlar. web.dev’in Load Third-Party JavaScript rehberine göre üçüncü taraf origin’leri için yapılan DNS, TCP ve TLS kurulumları kritik kaynaklarla bant genişliği yarıştırır. Script senkron yükleniyorsa HTML ayrıştırmasını durdurur, asenkron olsa bile erken istek yoğunluğu yaratabilir. Sonuç olarak hero görseli, kritik CSS veya ana yazı tipi daha geç keşfedilir ya da daha geç indirilir; kullanıcı ilk büyük içerik öğesini bekler.
INP ve TBT tarafında asıl maliyet ana iş parçacığındaki uzun görevlerdir. web.dev’in 2025 güncellenen INP dokümanı, INP’yi FID’nin halefi olarak tanımlar; yani 2026’da artık ilk tıklamadan çok tüm etkileşim akışını optimize ediyoruz. CMP, chat, A/B test, reklam ve etiket yöneticileri tıklama anında callback zinciri çalıştırıyorsa işlem ve sunum gecikmesi uzar. CLS ise geç yüklenen reklam slotu, video embed veya chat balonu için alan rezerve edilmediğinde ortaya çıkar; içerik aşağı kayar ve sayfa görsel olarak oynar.
LCP, INP, CLS ve TBT’yi bozan scriptleri nasıl tespit edersiniz?
İlk iş, sezgiyle değil envanterle başlamaktır. Tüm üçüncü taraf origin’leri, hangi sayfada yüklendiklerini, ne işe yaradıklarını ve iş hedefiyle bağlarını tek listede toplayın. Sonra Chrome DevTools Performance kaydı açın ve sayfayı ilk yükte, ardından gerçek bir kullanıcı akışı sırasında kaydedin. Burada görmek istediğiniz şey yalnızca dosya boyutu değil; hangi scriptin hangi anda long task ürettiği ve bu görevin LCP ya da etkileşim anıyla çakışıp çakışmadığıdır.
- Performance panelinde long task bloklarını ve event handler sürelerini inceleyin.
- Network waterfall içinde üçüncü taraf origin’leri erken bağlantı maliyetine göre sıralayın.
- Coverage ile indirilen ama hiç kullanılmayan JavaScript oranını görün.
- PageSpeed Insights ve Lighthouse raporunda üçüncü taraf kod etkisini teşhis olarak kullanın.
Ardından karar ağacı kurun: kaldır, geciktir, izole et. Bir etiket sadece raporlama tekrarından ibaretse kaldırma adayıdır. Yasal olarak zorunlu ama ilk boyada kritik değilse etkileşim sonrası veya onay sonrası yüklenebilir. web.dev’in Best practices for tags and tag managers rehberi, tek sayfada birden fazla container kullanımının ve büyük container boyutunun ek yürütme maliyeti ürettiğini açıkça vurgular. Özellikle GTM, CMP, reklam pikseli, chat widget ve video embed’leri bu matriste ayrı değerlendirilmelidir.
PageSpeed Insights burada teşhis ekranıdır; nihai hüküm değil. Laboratuvar skorunu gerçek kullanıcı davranışıyla eşleştirmeden karar vermek eksik olur. Örneğin script ilk yükte hafif görünebilir ama menü açılışında, sepet etkileşiminde ya da form gönderiminde patlayabilir. Bu yüzden yalnızca açılış performansına değil, kullanıcı akışı boyunca hangi üçüncü taraf callback’lerinin devreye girdiğine bakın.
Async, defer, preconnect ve facade ile ilk yük nasıl hafifletilir?
Erteleme tekniği scriptin görevine göre seçilir. web.dev rehberine göre async, scripti HTML ayrıştırması sürerken indirir ve hazır olur olmaz çalıştırır; bu yüzden bağımsız analitik scriptlerinde işe yarar ama yürütme sırası öngörülemez. defer ise yine paralel indirir fakat HTML tamamlandıktan sonra sırayla çalıştırır; bağımlı scriptlerde daha kontrollüdür. İkisi de parser blocking’i azaltır, fakat tek başına main thread maliyetini sıfırlamaz.
Bağlantı gecikmesini azaltmak için dns-prefetch ve preconnect ekleyin. Bu özellikle GTM, video CDN’i, chat sağlayıcısı ve reklam origin’leri ayrı alan adlarında çalışıyorsa fark yaratır. web.dev, üçüncü taraf bağlantı kurulumunu erkene almanın kritik yol üzerindeki beklemeyi düşürdüğünü belirtir. Ekip içinde bu teknikleri standartlaştırmak istiyorsanız teknik terimler sözlüğü gibi ortak bir referans da iletişim maliyetini azaltır.
Facade pattern ilk yükte en yüksek kazancı genelde video, harita ve canlı destek bileşenlerinde verir. Chrome for Developers dokümanında YouTube için hafif facade bileşenleri ve canlı destek için lazy loader örnekleri önerilir. Lighthouse 13 ilgili denetimi kaldırmış olsa da teknik geçerliliğini korur: kullanıcı tıklayana kadar sadece temsili arayüz gösterilir, gerçek embed daha sonra yüklenir. Bu, ilk açılışta görünmeyen ama pahalı olan widget’ları kritik yolun dışına iter.
- YouTube ve Vimeo için hafif facade kullanın.
- Chat widget’ı tıklama, scroll veya idle sonrasına taşıyın.
- Gömülü iframe’lerde lazy yaklaşım ve uygun izolasyon uygulayın.
Partytown, server-side tagging ve CMP ertelemesi ne zaman gerekir?
Basit erteleme yetmiyorsa iki üst seviye çözüm gündeme gelir: worker’a taşıma ve sunucu tarafına kaydırma. Partytown, uygun üçüncü taraf scriptleri Web Worker içinde çalıştırarak ana iş parçacığındaki baskıyı azaltmayı hedefler. Analytics ve bazı tag senaryolarında çok faydalı olabilir. Ancak DOM’a sıkı bağlı çalışan, anlık görsel güncelleme bekleyen veya özel browser API’lerine bağımlı scriptlerde uyumluluk sorunu yaşanabilir. Bu yüzden Partytown canlıya değil, önce laboratuvar testine alınmalıdır.
Server-side tagging ise farklı bir yaklaşım sunar. Cloudflare Zaraz veya Server-Side GTM, tarayıcıdan çıkan istek sayısını düşürerek üçüncü taraf yükünü doğrudan istemci tarafında azaltabilir. Bunun bedeli, kurulum karmaşıklığı, consent akışının yeniden tasarlanması, veri eşleşmesi kontrolleri ve operasyon disiplinidir. Kısacası tarayıcı tarafı rahatlar; ama ölçüm mimarisi daha ciddi bir mühendislik işi hâline gelir. Teknik olarak doğru seçim, ekip olgunluğu ve veri gereksinimine bağlıdır.
CMP scriptleri en sık gözden kaçan INP sorunlarından biridir. Kullanıcı onay butonuna bastığında birden fazla vendor çağrısı, storage işlemi ve event tetikleniyorsa görünüşte basit etkileşim uzun bir gecikmeye dönüşebilir. Burada dürüst yaklaşım şudur: onay öncesi yalnızca gerekli minimum kodu yükleyin, onay sonrası ise kategori bazlı ek scriptleri açın. Bu sayede yasal gereklilik korunur ama tüm reklam ve analitik yükü sayfanın ilk milisaniyelerine yığılmaz.
18 tag’li GTM testinde hangi erteleme tekniği ne kazandırdı?
18 tag’li bir GTM container’ını üç ayrı senaryoda değerlendirdiğimiz laboratuvar akışında en öğretici bulgu şuydu: asıl problem etiket sayısından çok, hangi etiketin hangi anda çalıştığıydı. Standart yüklemede en pahalı bloklar çoğunlukla remarketing pikseli, chat açıcı ve CMP callback’lerinde toplandı. Flame chart içinde bunlar farklı dosyalar gibi görünse de kullanıcı tarafında tek bir deneyim oluşuyor: sayfa tıklamada ağırlaşıyor, bazen de ilk boyada gereksiz ağ rekabeti yaratıyor.
Burada sık görülen yanılgı, script’e yalnızca async ekleyince problemin çözüldüğünü sanmak. İndirme anını gevşetirsiniz ama aynı etiket tıklama anında uzun görev üretmeye devam ediyorsa INP ve TBT kayda değer biçimde düzelmez. DebugBear’in 2025 tarihli Partytown vaka çalışması bunu net gösteriyor: örnek sitede Lighthouse performans skoru yaklaşık 70’ten 99’a çıkarken asıl fark, yavaş scriptlerin main thread’den worker’a taşınmasıyla oluşuyor. Yani zamanlama kadar yürütme yeri de kritik.
Pratikte sıralama genelde şöyle çalışır: yalnızca bağlantıyı erkene almak istiyorsanız preconnect; yürütmeyi parse sonrasına itmek istiyorsanız defer; görünmeyen widget’ı ilk yükten çıkarmak istiyorsanız facade; tarayıcı yükünü kökten azaltmak istiyorsanız worker veya server-side yaklaşımı. Bu hiyerarşi kurulmadan yapılan tek ayarlık denemeler çoğu zaman skor üretmez. Özellikle GTM içinde hangi trigger’ın hangi kullanıcı anında ateşlendiğini görmeden yapılan optimizasyonlar yüzeyde kalır.
Script denetimini SEOYEN site sağlığı ile nasıl sürekli izlersiniz?
Sürekli izleme yoksa üçüncü taraf scriptler geri büyür. Yeni kampanya etiketi, yeni chat aracı ya da tekrar eklenen bir video embed’i birkaç hafta içinde aynı sorunu geri getirebilir. Bu yüzden sayfa bazlı script denetimini dönemsel bir teknik SEO rutini hâline getirmek gerekir. Türkçe arayüzde ağır JavaScript, render-blocking kaynaklar ve sorunlu sayfaları birlikte görmek için site sağlığı raporu gibi merkezi bir görünüm, sadece geliştirici ekibine değil işletme sahibine de anlaşılır bir takip zemini sunar.
Ahrefs ve SEMrush geniş veri kümeleriyle güçlü platformlardır; SEOYEN ise bu ihtiyacı Türkiye pazarına uyarlanmış, tek platformda sunar. Teknik izleme, içerik ekipleri ve işletme tarafı aynı ekran dilini kullandığında aksiyon almak kolaylaşır. Karar aşamasında Ahrefs karşılaştırması ve SEMrush karşılaştırması sayfaları iş akışı farklarını netleştirir. Plan tarafında sabit rakam yerine paket detayları üzerinden güncel seçeneklere bakmak daha sağlıklıdır.
Bu yaklaşımın pratik avantajı, performans sorununu yalnızca geliştirici konsolunda bırakmamasıdır. SEO uzmanı, küçük işletme sahibi ve geliştirici aynı sorunu aynı dille izlediğinde hangi scriptin kaldırılacağı, hangisinin geciktirileceği ve hangisinin iş hedefi nedeniyle korunacağı daha hızlı kararlaştırılır. SEOYEN’in yerel Türkçe desteği ve TL bazlı konumlandırması da bu operasyonel akışı Türkiye pazarı için daha uygulanabilir hâle getirir.
Adım Adım Üçüncü taraf script yükünü erteleyip Core Web Vitals’ı temizleme
Aşağıdaki akış, teknik SEO ve geliştirme ekiplerinin aynı sayfada kalmasını sağlar. Her adımın sonunda yeniden ölçüm yapın; aksi halde yaptığınız değişikliklerin gerçekten LCP, INP, CLS veya TBT üzerinde fark yaratıp yaratmadığını anlayamazsınız.
- Script envanteri ve etki haritası çıkar. Tüm üçüncü taraf origin’leri, hangi sayfalarda yüklendiklerini ve hangi iş hedefini desteklediklerini tek listede toplayın. Kim ekledi, neden hâlâ gerekiyor ve ilk boyada şart mı soruları burada gereksiz kodu doğal biçimde ayıklar.
- DevTools ve PSI ile suçluyu doğrula. Performance kaydında long task bloklarını, Network panelinde üçüncü taraf waterfall’ı, Coverage içinde de kullanılmayan kod oranını inceleyin. En pahalı scripti, sayfa açılışında mı yoksa etkileşim anında mı maliyet ürettiğine göre sınıflandırın.
- Önemsiz kodu async veya defer yap. Bağımsız çalışan analitik scriptleri için async, sıra bağımlılığı olan ama kritik olmayan yükler için defer daha öngörülebilir olur. Parser blocking zinciri kırıldığında ilk render daha rahat nefes alır.
- Widget ve embed’leri facade ile gizle. YouTube, harita ve chat gibi bileşenlerde kullanıcı etkileşimine kadar hafif bir temsil katmanı gösterin. Böylece ilk yükte büyük oyuncu ve widget kodunu taşımamış olursunuz.
- GTM, CMP ve pikselleri worker veya sunucuya taşı. DOM bağımlılığı düşük scriptlerde Partytown deneyin; daha köklü azaltım gerekiyorsa Zaraz veya server-side GTM değerlendirin. Consent akışını da buna göre yeniden kurgulayın.
- SEOYEN ile tekrar ölç ve izlemeye al. İyileşmeyi tek seferlik başarı olarak değil, sürekli denetim konusu olarak görün. Yeni eklenen etiketlerin geri bozulma üretmesini düzenli raporla yakalamak, ilk optimizasyon kadar önemlidir.
| Teknik | Ne zaman seçilir | Beklenen CWV etkisi | Risk / trade-off |
|---|---|---|---|
| async | Bağımsız analitik veya erken çalışması gereken scriptlerde | Parser blocking azalır, LCP baskısı hafifler | Yürütme sırası öngörülemez; INP sorununu tek başına çözmez |
| defer | Bağımlı ama kritik olmayan scriptlerde | HTML parse bloke olmaz, ilk render daha stabildir | Script yine main thread üzerinde çalışır |
| Dinamik yükleme / etkileşim sonrası | Kullanıcı tetiklemeli widget ve ek özelliklerde | LCP ve TBT belirgin biçimde iyileşebilir | Geç gelen özellik hissi yaratabilir |
| Facade pattern | Video, harita, chat ve sosyal embed'lerde | İlk yük maliyeti sert düşer, LCP rahatlar | Tam özellik seti etkileşimden önce hazır olmaz |
| Partytown / Web Worker | DOM bağımlılığı düşük üçüncü taraf scriptlerde | INP ve TBT üzerinde güçlü etki yaratabilir | Uyumluluk testleri ve entegrasyon maliyeti gerekir |
| Server-side tagging | Tarayıcı tarafı etiket yükü fazla olduğunda | İstemci tarafı istek ve yürütme azalır | Kurulum, consent ve veri doğruluğu karmaşıklaşır |
| dns-prefetch / preconnect | Ayrı origin'lere erken bağlantı gereken durumlarda | Bağlantı gecikmesi azalır, LCP yardımcı kazanım alır | Fazla origin için kontrolsüz kullanım faydayı düşürür |
Kaynaklar
Sıkça Sorulan Sorular
Çünkü LCP çoğu zaman kritik içeriğin ne kadar hızlı keşfedilip indirildiğiyle ilgilidir. Üçüncü taraf scriptler ek DNS, TCP ve TLS kurulumları başlatır, bant genişliğini hero görseli veya kritik CSS ile paylaşır ve bazen HTML ayrıştırmasını durdurarak kritik kaynağın geç keşfedilmesine yol açar. Özellikle reklam, chat ve video embed'leri sayfa açılışında erkenden devreye giriyorsa en büyük içerik öğesi geç boyanır. Sorunu çözmek için ilk boya için şart olmayan scriptleri ertelemek, preconnect kullanmak ve görünmeyen widget'ları facade ile gizlemek gerekir.
Evet, etkileyebilir. GTM tek başına otomatik olarak kötü değildir. fakat container boyutu büyüdükçe, trigger sayısı arttıkça ve özellikle çok sayıda üçüncü taraf etiket aynı anda çalıştıkça ana iş parçacığında ek yürütme maliyeti oluşur. Bu da LCP sırasında bant genişliği rekabeti, TBT tarafında uzun görevler ve etkileşim anında INP gecikmesi yaratabilir. Ayrıca aynı sayfada birden fazla container kullanmak gereksiz ek yük doğurur. En doğru yaklaşım, her etiketi ihtiyaç, zamanlama ve tetiklenme anına göre denetlemektir.
İkisi de scripti HTML ayrıştırmasını durdurmadan indirir. fark, çalıştırma zamanındadır. async olan script, indirildiği an çalışır. bu yüzden sıra garantisi yoktur ve başka scriptlere bağımlı dosyalarda sorun çıkarabilir. defer ise indirme işini paralelde yapar ama çalıştırmayı HTML parse tamamlandıktan sonraya bırakır. üstelik sıra korunur. Bu nedenle bağımlı scriptlerde daha öngörülebilir davranır. SEO açısından asıl değer, parser blocking'i azaltmalarıdır. ancak ikisi de tek başına ağır JavaScript yürütme maliyetini ortadan kaldırmaz.
En güvenilir yöntem, gerçek etkileşimleri kayıt altına almaktır. Chrome DevTools Performance içinde sayfayı açıp menü, form, sepet veya chat gibi kullanıcı akışlarını çalıştırın. ardından flame chart üzerinde long task bloklarını ve event handler sürelerini inceleyin. Hangi callback'in tıklamadan sonra çalıştığını, ne kadar sürdüğünü ve üçüncü taraf kaynağa bağlı olup olmadığını burada görürsünüz. PageSpeed Insights ve Lighthouse laboratuvar sinyali verir. fakat INP'yi asıl bozan scripti anlamak için etkileşim sırasında çalışan callback zincirini gözle görmek gerekir.
Partytown, uygun üçüncü taraf scriptleri Web Worker içine taşıyarak ana iş parçacığı üzerindeki baskıyı azaltmaya çalışan bir çözümdür. Amaç, analytics ve benzeri scriptlerin tarayıcıda yine çalışmasını sağlarken boyama ve kullanıcı etkileşimi için gereken main thread'i daha boş bırakmaktır. Bu yaklaşım özellikle TBT ve INP tarafında fayda sağlayabilir. Ancak her script için kusursuz değildir. DOM'a yoğun bağımlı veya özel browser davranışı bekleyen etiketlerde uyumluluk sorunu çıkabilir. Bu yüzden Partytown kararı, laboratuvar testi ve ölçümle verilmelidir.
Çünkü reklam alanı çoğu zaman içerik akışına sonradan eklenir ya da gerçek boyutu geç belli olur. Eğer slot için baştan yer ayrılmadıysa reklam yüklendiğinde metin, görsel veya butonlar aşağı kayar. bu da beklenmedik düzen değişimi yani CLS üretir. Sorun yalnızca reklam dosyasının ağırlığı değil, kapladığı alanın önden planlanmamasıdır. Çözüm için sabit boyut rezerve etmek, placeholder kullanmak ve görünmeyen reklam bileşenlerini ilk açılışın kritik yolundan çıkarmak gerekir.