Oynatma Hızı:
Google Search Console INP Hatalarını Gidermek İçin En İyi 5 Teknik Çözüm
Google Search Console üzerinden “Sitelerinizde Core Web Vitals INP sorunları algılandı” bildirimi aldıysanız, bu durum web sayfanızın kullanıcı etkileşimlerine (tıklama, dokunma, klavye girişi) yeterince hızlı yanıt vermediği anlamına gelir. Interaction to Next Paint (INP), sayfanın bir etkileşime yanıt olarak görsel bir geri bildirim sunana kadar geçen süreyi ölçer ve 2026 itibariyle sıralama faktörleri arasında belirleyici bir konuma sahiptir.
- Ana İş Parçacığı (Main Thread) Yoğunluğu: Tarayıcının ana iş parçacığı 50 milisaniyeden uzun süre meşgul olduğunda, kullanıcı girdilerine yanıt veremez ve INP puanı yükselir.
- Gereksiz JavaScript Yükü: Sayfa yüklenirken veya etkileşim anında çalışan ağır JavaScript kodları, tarayıcının render işlemini geciktirir.
- Karmaşık DOM Yapısı: HTML eleman sayısının aşırı fazla olması, stil hesaplamalarını ve yeniden düzenleme (reflow) işlemlerini yavaşlatarak gecikmeye neden olur.
- Üçüncü Taraf Kodlar: Reklam scriptleri, canlı destek modülleri veya analiz araçları, ana içeriğin etkileşimini engelleyerek INP değerini olumsuz etkiler.
- Görsel Geri Bildirim Eksikliği: Kullanıcı bir butona tıkladığında, işlem arka planda devam etse bile ekranda anında bir değişim (loading ikonu vb.) olmaması algılanan hızı düşürür.
| INP Değeri (ms) | Sınıflandırma | Kullanıcı Deneyimi | Gerekli Aksiyon | SEO Etkisi |
|---|---|---|---|---|
| 0 – 200 ms | İyi (Good) | Akıcı ve hızlı | Mevcut yapıyı koru | Pozitif |
| 200 – 500 ms | İyileştirme Gerekli | Hafif takılmalar | Script optimizasyonu | Nötr / Hafif Negatif |
| 500 ms üzeri | Zayıf (Poor) | Ciddi donmalar | Acil teknik müdahale | Negatif |
| Mobil vs Masaüstü | Değişken | Mobilde daha yavaş | Cihaz bazlı test | Kritik |
| Veri Kaynağı | CrUX Raporu | Gerçek kullanıcı verisi | 28 günlük doğrulama | Belirleyici |
1. Uzun Görevleri (Long Tasks) Parçalamak ve Optimize Etmek
Tarayıcının ana iş parçacığını 50 milisaniyeden uzun süre meşgul eden her işlem “Uzun Görev” olarak adlandırılır ve bu süre zarfında sayfa kullanıcı etkileşimine tamamen kapalıdır. Bu görevleri daha küçük parçalara bölmek, tarayıcının aradaki boşluklarda kullanıcı girdilerini işlemesine olanak tanır.
- setTimeout ve setInterval Kullanımı: Büyük bir JavaScript işlemini tek seferde çalıştırmak yerine, `setTimeout` kullanarak işlemi küçük bloklara bölün ve olay döngüsüne (event loop) nefes alma payı bırakın.
- Scheduler API (scheduler.yield): 2026 modern tarayıcılarında desteklenen bu API, uzun süren görevlerin ortasında kontrolü tarayıcıya geri vererek öncelikli girişlerin işlenmesini sağlar.
- Kod Bölümleme (Code Splitting): Tek bir büyük bundle dosyası yerine, sadece o an gerekli olan kod parçacıklarını yükleyerek başlangıçtaki işlem yükünü hafifletin.
Uzun görevlerin parçalanması, özellikle düşük donanımlı mobil cihazlarda INP skorunu doğrudan iyileştiren en etkili yöntemdir. Bir kullanıcı butona tıkladığında, tarayıcı arka planda devasa bir veri setini işliyorsa tıklama algılanmaz. İşlemi 50ms’lik dilimlere ayırdığınızda, tarayıcı her dilim arasında “Bir tıklama var mı?” diye kontrol edebilir. Bu strateji, toplam işlem süresini değiştirmese de, sayfanın yanıt verme kabiliyetini (responsiveness) dramatik şekilde artırır.
Geliştirici araçlarındaki (DevTools) “Performance” sekmesi, bu uzun görevleri kırmızı bloklar halinde gösterir. Analiz yaparken özellikle “Total Blocking Time” (TBT) değerine odaklanmak gerekir, çünkü TBT ile INP arasında güçlü bir korelasyon vardır. TBT’yi düşüren optimizasyonlar genellikle INP sorunlarını da çözer. Fonksiyonlarınızı incelerken, tek bir fonksiyonun çok fazla iş yapmadığından ve gerekirse Web Worker’lara taşınabilecek matematiksel işlemler barındırmadığından emin olmalısınız.
Modern JavaScript framework’leri (React, Vue, Angular) genellikle kendi iç zamanlama mekanizmalarına sahiptir, ancak manuel müdahale gerektiren durumlar sıkça yaşanır. Özellikle `hydrate` işlemi sırasında ana iş parçacığı kilitlenebilir. Bu noktada “Progressive Hydration” veya “Selective Hydration” tekniklerini kullanarak sayfanın etkileşime girilebilir hale gelmesini hızlandırmak, INP hatalarını gidermede hayati bir rol oynar.
2. Etkileşim Gecikmesini Önlemek İçin Olay Dinleyicilerini (Event Listeners) İyileştirme
Kullanıcı etkileşimde bulunduğunda çalışan olay dinleyicileri (event listeners), eğer optimize edilmezse INP değerini yükselten en büyük suçlulardan biri olabilir. Tıklama anında çalışan kodun mümkün olduğunca hafif olması ve ağır işlerin bir sonraki kareye (next frame) ertelenmesi gerekir.
- Pasif Olay Dinleyicileri (Passive Listeners): Kaydırma (scroll) veya dokunma (touch) olaylarında `passive: true` parametresini kullanarak tarayıcının sayfa akışını durdurmadan işlemi gerçekleştirmesini sağlayın.
- Görsel Geri Bildirimi Öne Alma: Ağır bir işlem başlamadan önce, kullanıcıya işlemin algılandığını gösteren basit bir görsel değişim (örneğin buton renginin değişmesi) yapın ve ağır mantığı `requestAnimationFrame` veya `setTimeout` sonrasına erteleyin.
- Olay Delegasyonu (Event Delegation): Her bir öğeye ayrı ayrı dinleyici eklemek yerine, ebeveyn elemente tek bir dinleyici ekleyerek bellek kullanımını ve işlem yükünü azaltın.
Bir kullanıcı “Sepete Ekle” butonuna tıkladığında, veritabanı sorgusu veya karmaşık bir hesaplama yapmadan önce arayüzün anında tepki vermesi gerekir. Eğer JavaScript kodu önce hesaplamayı yapıp sonra arayüzü güncelliyorsa, kullanıcı bu süre zarfında donma yaşar. Doğru yaklaşım, önce butonu “Yükleniyor” durumuna getirmek (anında görsel geri bildirim), ardından işlemi arka planda yürütmektir. Bu, INP metriğinin “Processing Time” ve “Presentation Delay” bileşenlerini optimize eder.
Olay dinleyicilerinin içinde senkronize (eşzamanlı) çalışan ağır işlemlerden kaçınmak zorundasınız. Örneğin, bir input alanına her harf girildiğinde çalışan bir doğrulama kodu, eğer karmaşık bir Regex kontrolü veya DOM manipülasyonu yapıyorsa yazma deneyimini bozar. Bu tür durumlarda “Debounce” veya “Throttle” teknikleri kullanarak fonksiyonun çalışma sıklığını sınırlamak, INP değerini korumak için standart bir prosedürdür.
Framework kullanıyorsanız, olay işleyicilerin (event handlers) nasıl bağlandığına dikkat etmelisiniz. React gibi kütüphanelerde, olaylar sentetik bir sistem üzerinden yönetilir. Bazen bu sistemin kendisi bile, çok sayıda etkileşimli öğe olduğunda gecikme yaratabilir. Bu yüzden, sadece gerçekten etkileşim gerektiren öğelere dinleyici atamak ve gereksiz “re-render” işlemlerini engellemek için `useMemo` veya `useCallback` gibi optimizasyon kancalarını (hooks) doğru kullanmak şarttır.
3. DOM Boyutunu ve Yapısını Optimize Etmek
Aşırı büyük ve derin bir DOM (Document Object Model) ağacı, tarayıcının sayfayı oluşturmasını ve güncellemesini zorlaştırır. Her etkileşimde tarayıcı, stil hesaplamalarını yeniden yapmak ve düzeni (layout) tekrar oluşturmak zorunda kalabilir, bu da INP süresini uzatır.
- DOM Derinliğini Azaltmak: Gereksiz `div` sarmalayıcılarını (wrappers) temizleyin ve HTML yapısını mümkün olduğunca düz (flat) tutmaya çalışın.
- CSS Seçicilerini Basitleştirmek: Karmaşık CSS seçicileri, tarayıcının hangi stilin hangi elemente uygulanacağını hesaplama süresini uzatır; sınıf (class) bazlı basit seçiciler kullanın.
- İçerik Görünürlüğü (content-visibility): `content-visibility: auto` CSS özelliğini kullanarak, ekran dışında kalan öğelerin render işlemini erteleyin ve tarayıcı yükünü hafifletin.
Büyük bir DOM yapısında, basit bir stil değişikliği bile tarayıcının binlerce öğeyi kontrol etmesine neden olabilir. Bu duruma “Layout Thrashing” denir ve INP skorlarını mahvedebilir. Özellikle JavaScript ile DOM üzerinde okuma ve yazma işlemlerini ardışık olarak yapmak (örneğin, bir öğenin genişliğini okuyup hemen değiştirmek), tarayıcının her adımda düzeni yeniden hesaplamasına yol açar. Bu işlemleri gruplamak veya `requestAnimationFrame` içinde yapmak bu sorunu çözer.
Sanal kaydırma (Virtual Scrolling) veya sanallaştırma (Virtualization), uzun listelerin olduğu sayfalarda DOM boyutunu kontrol altında tutmak için mükemmel bir yöntemdir. Kullanıcı sayfayı kaydırdıkça, sadece ekranda görünen öğeler DOM’a eklenir, ekran dışına çıkanlar silinir. Bu sayede, on binlerce satırlık bir tablo bile tarayıcı için sadece 10-20 öğelik bir yük oluşturur ve etkileşimler anında gerçekleşir.
CSS tarafında ise, kullanılmayan stillerin temizlenmesi ve kritik CSS’in satır içi (inline) olarak sunulması, ilk yükleme anındaki etkileşim gecikmelerini azaltır. Ancak INP, sayfa yaşam döngüsünün tamamını kapsadığı için, sonradan yüklenen stillerin de performansı etkilememesi gerekir. Animasyonlarda `transform` ve `opacity` dışındaki özellikleri değiştirmekten kaçınmak, GPU’nun devreye girmesini sağlayarak ana iş parçacığını rahatlatır ve etkileşimlerin akıcı kalmasına yardımcı olur.
4. Üçüncü Taraf Scriptlerin Yönetimi ve İzolasyonu
Web sitelerinde kullanılan analiz araçları, reklam ağları, sosyal medya widget’ları ve canlı sohbet botları genellikle üçüncü taraf sunuculardan yüklenir. Bu scriptler genellikle kontrolünüz dışındadır ve ana iş parçacığını engelleyerek INP sorunlarına yol açarlar.
- Scriptleri Ertelemek (Defer/Async): Kritik olmayan üçüncü taraf scriptlerini `defer` veya `async` nitelikleriyle yükleyerek sayfanın ana içeriğinin önüne geçmelerini engelleyin.
- Web Workers Kullanımı: Mümkünse, ağır işlem yapan üçüncü taraf kütüphanelerini bir Web Worker içine taşıyarak ana iş parçacığından izole edin (Partytown gibi araçlar bunu kolaylaştırır).
- Etkileşim Anında Yükleme (Lazy Loading): Canlı destek gibi widget’ları sayfa açılır açılmaz yüklemek yerine, kullanıcı ilgili butona tıkladığında veya fareyle üzerine geldiğinde yükleyin (Facade pattern).
Reklam scriptleri, genellikle sayfa içeriği yüklendikten sonra çalışır ve tam kullanıcı etkileşime geçeceği anda düzen kaymalarına veya işlemci kilitlenmelerine neden olur. Bu durum, kullanıcının bir habere tıklamak isterken yanlışlıkla reklama tıklamasına veya tıklamasının hiç algılanmamasına sebep olabilir. Reklam alanları için önceden yer ayırmak (boyut tanımlamak) ve reklam scriptlerinin önceliğini düşürmek bu riski minimize eder.
Tag Manager (GTM) gibi etiket yönetim sistemleri, kontrolsüzce eklendiğinde performans darboğazı yaratabilir. Pazarlama ekibinin eklediği her yeni takip kodu, tarayıcının işlemesi gereken ekstra JavaScript demektir. Düzenli olarak GTM container’ını denetlemek, kullanılmayan etiketleri kaldırmak ve tetikleyicileri (triggers) optimize etmek gerekir. Her sayfa görüntülemede çalışan etiketler yerine, sadece belirli olaylarda çalışan etiketler tercih edilmelidir.
“Facade” (Cephe) deseni, üçüncü taraf kaynakların INP üzerindeki etkisini sıfıra indirmek için en güçlü yöntemlerden biridir. Örneğin, bir YouTube videosu yerleştirirken, sayfa yüklendiğinde sadece videonun kapak resmini ve sahte bir “Oynat” butonu gösterirsiniz. Kullanıcı tıkladığında, gerçek YouTube oynatıcısı yüklenir. Bu sayede, sayfa yüklenirken YouTube’un ağır JavaScript kütüphaneleri indirilmez ve etkileşim performansı korunur.
🟢Resmi Kaynak: Web.dev – INP Optimizasyon Rehberi
5. İstemci Taraflı Render (CSR) ve Hidrasyon Stratejileri
Modern web uygulamalarının (SPA) çoğu, içeriği oluşturmak için tarayıcıda çalışan JavaScript’e güvenir (Client-Side Rendering). Ancak bu durum, HTML’in tarayıcıya ulaştığı an ile sayfanın etkileşime hazır olduğu an arasında bir boşluk yaratır. Bu boşlukta yapılan tıklamalar, INP skorunu olumsuz etkiler.
- Sunucu Taraflı Render (SSR) veya Statik Üretim (SSG): HTML’i sunucuda oluşturup tarayıcıya hazır göndermek, tarayıcının JavaScript’i beklemeden içeriği göstermesini sağlar, ancak etkileşim için hidrasyonun bitmesi beklenir.
- Kısmi Hidrasyon (Partial Hydration): Tüm sayfayı aynı anda etkileşime hazır hale getirmek yerine (ki bu ana iş parçacığını kilitler), sadece kullanıcının gördüğü veya etkileşime girdiği bileşenleri öncelikli olarak hidrate edin.
- JavaScript Bundle Boyutunu Küçültmek: Tree-shaking ve minifikasyon yöntemleriyle, kullanılmayan kütüphane kodlarını temizleyerek tarayıcının indirmesi ve işlemesi gereken dosya boyutunu azaltın.
Next.js, Nuxt veya Angular gibi framework’lerde INP sorunları genellikle “Hydration” aşamasında ortaya çıkar. Tarayıcı statik HTML’i gösterir, ancak JavaScript yüklenip olay dinleyicilerini bağlayana kadar sayfa “ölü” gibidir. Kullanıcı bu sırada bir butona basarsa, hiçbir şey olmaz veya işlem çok geç gerçekleşir. React 18+ ve sonraki sürümlerle gelen “Streaming SSR” ve “Selective Hydration” özellikleri, bu bloklanma süresini minimize etmeyi hedefler.
2026 standartlarında, “Islands Architecture” (Ada Mimarisi) popüler bir çözüm haline gelmiştir (Astro gibi framework’ler ile). Bu mimaride, sayfanın büyük kısmı statik HTML olarak kalır ve sadece etkileşim gerektiren küçük bölgeler (adalar) JavaScript ile canlandırılır. Bu yaklaşım, JavaScript yükünü %80-90 oranında azaltarak INP puanlarını mükemmel seviyeye (genellikle 50ms altı) çeker.
Eğer framework değiştirmek mümkün değilse, mevcut yapıda kodun çalışma zamanını profillemek gerekir. React DevTools profiler’ı kullanarak, hangi bileşenin gereksiz yere render edildiğini (re-renders) tespit edin. `React.memo`, `useMemo` gibi araçlarla bu gereksiz işlemleri engelleyin. Ayrıca, büyük veri listelerini işlerken JavaScript’in `map` veya `filter` fonksiyonlarının ana iş parçacığını ne kadar süre meşgul ettiğini kontrol edin ve gerekirse bu işlemleri sunucu tarafına taşıyın.
🟢Resmi Kaynak: Google Search Console Core Web Vitals Raporu
💡 Analiz: 2026 verilerine göre, giriş seviyesi Android cihazların pazar payındaki artış, JavaScript işlem gücünü sınırlamaktadır; bu nedenle sadece üst düzey cihazlarda test yapmak yanıltıcıdır ve INP optimizasyonlarında düşük donanımlı cihazlar referans alınmalıdır.
Sıkça Sorulan Sorular (SSS)
1. INP hatası sıralamamı ne zaman etkiler?
INP, Mart 2024’te FID’nin yerini alarak resmi bir sıralama faktörü olmuştur; yani şu anda sıralamanızı doğrudan etkilemektedir.
2. Search Console’da “Düzeltildi” dedikten sonra süreç ne kadar sürer?
Google’ın doğrulama süreci, gerçek kullanıcı verilerini (CrUX) toplamak için 28 günlük bir periyodu kapsar.
3. Sadece masaüstü INP skorunu düzeltmek yeterli mi?
Hayır, Google “Mobile-First Indexing” kullandığı için mobil INP skorunuz SEO açısından çok daha büyük bir ağırlığa sahiptir.
4. INP sorunlarını hangi araçla test etmeliyim?
PageSpeed Insights laboratuvar verisi sunar, ancak en doğru test Chrome Eklentisi “Web Vitals” ile gerçek kullanım senaryolarında yapılmalıdır.
5. JavaScript’i tamamen kaldırmak çözüm mü?
Hayır, modern web deneyimi JavaScript gerektirir; çözüm kaldırmak değil, kodu optimize etmek ve ana iş parçacığını bloklamamaktır.
💡 Özetle
INP sorunları, web sitenizin kullanıcı etkileşimlerine verdiği yanıtın yavaş olduğunu gösterir ve bu durum doğrudan SEO performansınızı düşürür. Uzun görevleri parçalayarak, DOM yapısını sadeleştirerek ve üçüncü taraf kodları izole ederek bu metrikleri iyileştirebilirsiniz.
AI-Powered Analysis by MeoMan Bot


