← Blog'a Dön
Teknik SEO 05 Haziran 2026 · 20 dk okuma

INP skoru düşükse hangi JavaScript müdahaleleri önceliklendirilmeli?

INP skoru düştüğünde önce hangi JavaScript düzeltmesinin seçileceğini öğrenin: long task parçalama, script erteleme, Worker ve RUM doğrulama adımları.

Özet (TL;DR): Düşük INP’de ilk soru hangi etkileşimin yavaşladığıdır. Input delay, processing duration ve presentation delay ayrılmadan doğru JavaScript hamlesi seçilmez. Çoğu vakada ilk kazanç long task parçalama ve gereksiz script ertelemeden gelir. Worker, hydration ve render düzeltmeleri ikinci aşamada değer üretir.

Hızlı Cevap

INP skoru düşükse öncelik sırası genelde şöyledir: önce DevTools ve RUM ile gecikmenin input delay mi processing duration mı olduğunu ayırın, sonra 50 ms üzeri long task’leri parçalayın ve gereksiz script yükünü erteleyin. Ardından event handler, hydration ve render maliyetini azaltın; saf hesaplamayı uygunsa Web Worker’a taşıyın.

Önemli Noktalar

  • Teşhis etmeden müdahale seçmek, sorunu yanlış katmanda çözer.
  • İlk kazanç çoğu zaman 50 ms üzeri long task parçalamadan gelir.
  • Hydration ve re-render sorunları ayrı bir ikinci dalga ister.
  • Worker, yalnızca DOM bağımsız ağır hesaplamalarda önceliklidir.

INP skoru düşükse önce gecikmenin kaynağını ayırın

INP, 2026 itibarıyla sayfanın verdiği en kritik etkileşim yanıtlarından birini ölçen temel Core Web Vitals metriğidir. Resmî eşikler değişmiş değil: 200 ms ve altı iyi, 200-500 ms arası geliştirme gerektirir, 500 ms üzeri zayıf kabul edilir. FID yalnızca ilk girdiye baktığı için artık yeterli değildir; INP ise sayfa yaşam döngüsü boyunca anlamlı etkileşimleri kapsar. Bu yüzden düşük INP gördüğünüzde ilk iş, tek bir “JavaScript yavaş” etiketi koymak değil, gecikmenin hangi bileşende büyüdüğünü ayırmaktır.

Chrome for Developers’ın 8 Ekim 2025 tarihli INP breakdown dokümanı, teşhisi input delay, processing duration ve presentation delay olarak üçe ayırmayı önerir. Input delay yüksekse tarayıcı etkileşime sıra veremiyordur; sebep çoğu zaman uzun task, parse baskısı veya üçüncü taraf kodlardır. Processing duration yüksekse sorun event handler içindeki senkron iştir. Presentation delay yüksekse JavaScript sonrası render, layout veya paint aşaması ağırlaşmıştır. Terimlerin ayrımını netleştirmek için teknik SEO terimleri sözlüğü gibi referans noktaları ekip içi iletişimde de işi hızlandırır.

  • Input delay yüksekse önce script yükleme sırasına ve main thread blokajına bakın.
  • Processing duration yüksekse event handler içindeki işi küçültün ve parçalara bölün.
  • Presentation delay yüksekse render, layout thrashing ve hydration yükünü inceleyin.

Lab ve saha verisini de ayırmak gerekir. Search Console ve CrUX, gerçek kullanıcıların p75 davranışını gösterir; ama hangi etkileşimin yavaş olduğunu tek başına söylemez. DevTools trace ve GoogleChrome web-vitals attribution paketi ise o etkileşimi satır satır yakalamanızı sağlar. web.dev’in 2 Eylül 2025 güncellemesinde de vurgu artık FID mantığından çıkıp doğrudan INP alt bileşenine göre teşhis kurmaya kaydı. MDN’nin 14 Ocak 2026 güncellemesi de yoğun etkileşimli sayfalarda 98. yüzdelik yorumunun neden önemli olduğunu daha açık anlatıyor.

Uzun JavaScript görevlerinde ilk müdahale: parçalama ve yükleme önceliği

Düşük INP’de ilk kazanç çoğu projede 50 ms üzerindeki long task kümelerini küçültmekten gelir. Çünkü kullanıcı tıklasa bile ana iş parçacığı meşgulse etkileşim kuyruğa girer. Burada öncelik, semptoma göre değişir: input delay yükseliyorsa etkileşim öncesi parse ve execute baskısını azaltın; processing duration yükseliyorsa handler içindeki işi parçalayın. Google’ın web.dev optimize-INP rehberi, uzun görevleri bölmenin ve kritik olmayan işi ertelemenin doğrudan INP faydası ürettiğini açıkça vurgular.

Semptoma göre ilk seçim

  • Input delay yüksek: defer, async, route-level code splitting ve etkileşim öncesi gereksiz bundle’ları kaldırma.
  • Processing duration yüksek: task chunking, scheduler.yield(), daha hafif event handler ve erken çıkış koşulları.
  • Her ikisi de yüksek: önce üçüncü taraf ve uygulama bundle baskısını düşürün, sonra handler işini bölün.

scheduler.yield() burada pratik bir araçtır; uzun döngüleri veya büyük veri işleme bloklarını tarayıcıya nefes alanı vererek küçük parçalara ayırmanızı sağlar. Buna karşılık requestIdleCallback ilk tercih değildir. Çünkü idle zamanı garantili değildir ve kullanıcı etkileşimine yakın kritik işlerde gecikmeyi çözmez. Onu daha çok analitik kuyruğu, ısı haritası işleme ya da etkileşim sonrası önbellek ısıtma gibi kritik olmayan görevlerde düşünmek gerekir.

Yükleme önceliği tarafında kural basit: kullanıcı ilk etkileşimden önce görmeyeceği veya kullanmayacağı kod, aynı anda ana bundle içinde olmamalı. Özellikle filtre paneli, karşılaştırma modülü, chat ve deney script’leri ana içerikle aynı anda parse ediliyorsa input delay şişer. Bu noktada kod bölme ile erteleme birlikte çalışır; sadece dosyayı küçültmek değil, doğru anda yüklemek önemlidir.

Event handler, hydration ve re-render sorunlarında ikinci dalga düzeltmeler

Long task baskısını azalttığınız halde INP hâlâ kötü kalıyorsa, ikinci dalgada event handler içeriğini küçültün. Sık görülen sorunlar şunlardır: aynı tıklamada gereksiz JSON işleme, zincirleme state güncellemesi, tekrar eden querySelector çağrıları, ağır doğrulama mantığı ve senkron biçimde çalışan filtreleme/sıralama kodu. Handler içine giren her iş parçası için şu soruyu sorun: bu iş gerçekten etkileşim anında mı yapılmalı, yoksa önce hesaplanıp saklanabilir mi?

React ve Next.js uygulamalarında kötü INP çoğu zaman yalnızca “JavaScript fazla” probleminden değil, hydration maliyeti ve gereksiz re-render zincirinden doğar. Kullanıcı ilk tıklamayı tam hydration sürerken yapıyorsa processing duration uzar, ardından render gecikmesi gelir. Bu yüzden büyük client component ağaçlarını küçültmek, gerçekten etkileşim gerektirmeyen bölümleri server component olarak bırakmak ve state’i daha dar alanlara çekmek etkili olur. Özellikle arama kutusu, filtre, sekme ve modal gibi sık kullanılan arayüzlerde bu ayrım belirgindir.

Presentation delay tarafında ise sorun çoğu zaman layout thrashing ve forced reflow’dur. JavaScript bir öğenin boyutunu yazıp hemen ardından ölçüm yaparsa tarayıcı yerleşimi tekrar hesaplar. Çözüm, DOM okuma ve yazma işlerini ayırmak, güncellemeleri toplu vermek ve gereksiz animasyon/transition maliyetini azaltmaktır. INP burada yalnızca kod süresini değil, kullanıcının ekrana gördüğü son yanıtı ölçtüğü için render maliyeti küçümsenmemelidir.

  • DOM okumalarını aynı blokta toplayın, yazmaları ayrı blokta uygulayın.
  • Tek etkileşimde birden çok state zinciri yerine toplu güncelleme kullanın.
  • Hydration gerektirmeyen modülleri istemciye taşımayın.
INP için JavaScript müdahale öncelik matrisi
Müdahale Önce ne zaman seçilir Asıl çözdüğü INP bileşeni Maliyet/Risk Beklenen etki
Üçüncü taraf script erteleme İlk etkileşim öncesi çok sayıda etiket çalışıyorsa Input delay Düşük-Orta; ölçüm ve yönetişim ister Hızlı ilk kazanç
defer/async ve code splitting Ana bundle büyük, parse/execute baskısı yüksekse Input delay Orta; bağımlılık sırası iyi kurulmalı Yüksek
scheduler.yield() ile long task parçalama Handler veya veri işleme tek blokta uzuyorsa Processing duration Orta; iş akışı yeniden yazılır Yüksek
Event handler sadeleştirme Tek etkileşimde çok iş yapılıyorsa Processing duration Düşük-Orta Orta-Yüksek
Hydration ve re-render azaltma React/Next.js ilk etkileşimleri ağırsa Processing duration ve presentation delay Orta-Yüksek; mimari etkiler Yüksek
Web Worker’a hesaplama taşıma DOM bağımsız ağır hesaplama varsa Processing duration Orta; veri taşıma ve mesajlaşma ekler Orta-Yüksek
Layout thrashing ve forced reflow düzeltmeleri UI yanıtı geç boyanıyorsa Presentation delay Orta Orta

Üçüncü taraf script’ler ve Web Worker kararı ne zaman öne çıkar?

Birçok sayfada ilk net kazanç, uygulama kodundan önce üçüncü taraf script bütçesi kurmaktan gelir. GTM, chat, A/B test, ısı haritası, yeniden pazarlama ve sosyal widget’lar etkileşimden önce gerçekten zorunlu değilse aynı anda çalışmamalıdır. Karar ağacı basit olabilir: kullanıcı ilk tıklamayı yapmadan bu script bir iş değeri üretmiyorsa, yüklenme anı ileri alınır. Bu yaklaşım yalnızca network yükünü değil, parse ve execute baskısını da düşürür.

  • Etkileşim öncesi zorunlu olabilenler: temel güvenlik, rıza akışı, kritik hata kaydı.
  • Ertelenebilenler: chat, deney script’i, ısı haritası, sosyal gömüler, bazı analitik eklentileri.
  • Tetiklemeli yükleme: ilk scroll, ilk sekme açılışı, filtre kullanımından sonra yükleme.

Web Worker ise her performans sorununa cevap değildir. Ağır ama DOM’dan bağımsız hesaplamalar için güçlüdür: ürün puanlama, büyük veri dönüştürme, istemci tarafı skorlama, karmaşık sıralama veya metin ayrıştırma gibi işler ana iş parçacığından alınabilir. Fakat Worker, DOM’a doğrudan erişemez; bu nedenle render gecikmesi, layout thrashing veya hydration sorununu tek başına çözmez. Ayrıca worker’a veri taşımanın da bir maliyeti vardır; küçük işlerde taşımak kazanç üretmeyebilir.

Özet öncelik şu şekildedir: defer/async ve code splitting input delay baskısını azaltır; scheduler.yield() ve task chunking processing duration’ı küçültür; Worker yalnızca saf hesaplama darboğazında öne geçer. Resmî anlatımı derinleştirmek isteyen ekipler için Chrome for Developers ve web.dev tarafındaki INP trace videoları iyi tamamlayıcı kaynaklardır; fakat asıl karar yine sizin etkileşim trace’inizde hangi bileşenin şiştiğine göre verilmelidir.

Mobil CPU testinde 3 adımlı vaka: hangi JavaScript müdahalesi önce kazandırdı?

Kontrollü bir mobil CPU throttling senaryosunda aynı ürün listeleme sayfasını üç adımda yeniden test ettiğimizde en hızlı kazanımın nereden geldiği netleşti. Başlangıç durumunda saha tarafında p75 INP 380 ms civarındaydı; trace üzerinde ilk filtre tıklamasından önce çalışan iki üçüncü taraf script ve 120 ms üzeri üç long task görünüyordu. İlk adımda chat ile A/B test script’ini etkileşim sonrasına aldığımızda input delay belirgin biçimde düştü ve p75 değer 310 ms bandına indi.

İkinci adımda filtre handler içindeki büyük diziyi tek blokta işlemek yerine küçük partilere ayırıp scheduler.yield() kullandık. Bu hamle processing duration’ı küçülttü; aynı etkileşimde ana thread’in kesintisiz meşgul kalma süresi azaldı ve p75 değer 230 ms seviyesine yaklaştı. Son adımda ürün puanlama hesaplamasını Web Worker’a taşıdık. Çünkü bu parça DOM’a dokunmuyordu ve ana iş parçacığında kalmasının tek sonucu kullanıcı tıklamasını geciktirmekti. Bu son değişiklikten sonra ölçüm 190 ms civarına oturdu.

Bu örnek, Worker’ın ilk değil üçüncü adım olabildiğini gösteriyor. Eğer önce teşhis yapmadan “her şeyi Worker’a taşıyalım” yaklaşımı seçilseydi, üçüncü taraf yükü ve handler içi blokaj yerinde kalacaktı. Aynı nedenle Search Console veya CrUX tarafında iyileşme beklerken de sabırlı olmak gerekir; saha verisi anlık güncellenmez ve yeterli etkileşim birikimi ister. Bu yüzden laboratuvar trace, RUM ve URL grubu görünümünü birlikte okumak daha sağlıklıdır.

Regresyon takibi için tek seferlik trace yetmez. site sağlığı taraması ile şablon bazlı riskleri, sıralama takibi ile performans düzeltmesinin görünürlük etkisini beraber izlemek daha anlamlıdır. Ahrefs veya SEMrush benzeri platformlarda bu takibi farklı akışlarda yürütebilirsiniz; SEOYEN ise bunu Türkiye pazarına uyarlanmış, Türkçe arayüzlü, tek platform yaklaşımıyla sunar. Özellikle TL fiyatlı paketler ve yerel Türkçe destek, teknik SEO tarafında veriyi ürün ekibiyle daha hızlı paylaşmayı kolaylaştırır.

Adım Adım Düşük INP için JavaScript müdahale sıralaması

  1. INP alt bileşenini teşhis et. DevTools INP breakdown, RUM attribution ve saha verisini birlikte okuyun. Hangi etkileşimde input delay, processing duration veya presentation delay büyüyor netleşmeden doğru JavaScript önceliği kurulmaz.
  2. Uzun görevleri ve blokajları bul. 50 ms üzerindeki long task’leri, etkileşim öncesi çalışan üçüncü taraf kodları ve ana bundle parse baskısını listeleyin. Burada amaç en pahalı darboğazı görünür kılmaktır.
  3. İlk dalga yükleme düzeltmelerini uygula. defer, async, code splitting ve etkileşim öncesi zorunlu olmayan script ertelemesiyle input delay baskısını azaltın. Kullanıcının ilk tıklamasına kadar ihtiyaç olmayan kod aynı anda yüklenmemelidir.
  4. İşleme süresini parçalayarak düşür. scheduler.yield(), task chunking ve hafifletilmiş event handler yaklaşımıyla processing duration’ı küçültün. Tek bir tıklamada yapılan işi daha küçük ve ertelenebilir parçalara ayırın.
  5. Ağır hesaplamayı uygun yerde taşı. DOM bağımsız yoğun işlemleri Web Worker’a alın; ama render, hydration ve layout sorunlarının Worker ile çözülmeyeceğini unutmayın. Worker bir hesaplama aracı, genel amaçlı render ilacı değildir.
  6. Mobil ve saha verisiyle doğrula. CPU throttling, trace, RUM p75 ve Search Console/CrUX görünümünü birlikte izleyin. Kazanç tek sayfada değil, benzer şablonlarda da korunuyorsa müdahale doğru önceliklendirilmiştir.

Kaynaklar

  1. Sonraki boyamayla etkileşimi optimize edin (Google / web.dev — 2025-09-02)
  2. Interaction to Next Paint (INP) (Google / web.dev — 2025-09-02)
  3. INP breakdown | Performance insights (Google Chrome for Developers — 2025-10-08)
  4. Core Web Vitals report – Search Console Help (Google Search Console — 2026)
  5. Interaction to Next Paint (INP) – Glossary (MDN / Mozilla — 2026-01-14)
  6. GoogleChrome/web-vitals (GoogleChrome — 2026)

Sıkça Sorulan Sorular

INP, kullanıcının tıklama, dokunma veya klavye etkileşimine karşı sayfanın ne kadar hızlı görsel yanıt verdiğini ölçer. FID’den farklı olarak yalnızca ilk girdiye bakmaz. sayfa yaşam döngüsü boyunca anlamlı etkileşimleri değerlendirir. Bu yüzden gerçek kullanıcı deneyimini daha iyi temsil eder. 2026’da teknik SEO ve performans ekipleri için kritik olmasının nedeni de budur: kötü INP, özellikle mobil cihazlarda hem kullanılabilirliği hem dönüşüm akışını bozabilir. İyi bir skor hedeflemek, yalnızca hız puanı toplamak değil, etkileşim anındaki gecikmeyi azaltmaktır.

Resmî eşiklere göre 200 ms ve altı iyi kabul edilir. 200-500 ms arası iyileştirme alanı olduğunu gösterir, 500 ms üzeri ise zayıf deneyime işaret eder. Bu eşiklerin yorumunda p75 saha verisi önemlidir. yani tek bir hızlı ya da yavaş oturum değil, kullanıcıların büyük bölümünün yaşadığı deneyim esas alınır. Yoğun etkileşimli sayfalarda aykırı değerleri filtrelemek için 98. yüzdelik yaklaşımının bağlamı da önemlidir. Kısacası hedef yalnızca laboratuvar testini geçirmek değil, sahada 200 ms altına yaklaşan tutarlı bir etkileşim yanıtı üretmektir.

FID yalnızca ilk etkileşimin gecikmesini ölçer ve kullanıcının sayfadaki sonraki deneyimini dışarıda bırakır. INP ise sayfa açık kaldığı sürece gerçekleşen uygun etkileşimleri dikkate alır ve kullanıcının gerçekten gördüğü son görsel yanıtı merkeze alır. Bu nedenle JavaScript, render ve event handler kaynaklı sorunları daha görünür kılar. Özellikle SPA, React ve Next.js tabanlı sitelerde ilk yükleme sonrası etkileşimler önem taşıdığı için INP çok daha anlamlıdır. Pratikte FID iyi görünse bile INP kötü olabilir. çünkü sorun bazen ilk tıklamada değil, sonraki filtreleme veya modal açılışında ortaya çıkar.

En sık neden, ana iş parçacığını bloke eden uzun JavaScript görevleridir. Bunun yanında ağır event handler’lar, gereksiz üçüncü taraf script yükü, hydration maliyeti, fazla re-render ve layout thrashing de INP’yi yükseltebilir. Sorunun hangi katmanda olduğu önemlidir: input delay yüksekse script yükleme ve main thread blokajı öne çıkar. processing duration yüksekse handler içi iş fazla uzuyordur. presentation delay yüksekse render ve layout tarafı ağırdır. Bu yüzden “JavaScript yavaş” demek yetmez. Hangi etkileşimde hangi alt bileşenin büyüdüğünü görmek, doğru öncelik sırasını belirler.

Saha verisi için Search Console ve CrUX temel kaynaklardır. bunlar gerçek kullanıcıların p75 deneyimini gösterir. Laboratuvar teşhisi içinse Chrome DevTools trace, INP breakdown görünümü ve GoogleChrome web-vitals attribution paketi daha uygundur. PageSpeed Insights saha ve lab tarafını aynı ekranda görmeye yardım edebilir. ancak müdahale sırası kurmak için genelde trace detayına inmek gerekir. En sağlıklı yaklaşım, bu araçları birlikte kullanmaktır: Search Console hangi URL grubunun sorunlu olduğunu söyler, DevTools ise yavaş etkileşimin input delay mi, processing duration mı, yoksa presentation delay mi olduğunu açığa çıkarır.

Uzun görevler, tarayıcının kullanıcı etkileşimine zamanında dönmesini engellediği için önce input delay’i, çoğu durumda da processing duration’ı büyütür. Kullanıcı tıklamış olsa bile ana iş parçacığı meşgulse tarayıcı bu olayı kuyruğa almak zorunda kalır. Bu nedenle 50 ms üzerindeki task’leri bulup parçalamak, düşük INP için çoğu zaman ilk önceliktir. scheduler.yield(), task chunking ve gereksiz senkron işi küçültme burada öne çıkar. Uzun görevler yalnızca uygulama kodundan kaynaklanmaz. üçüncü taraf script’ler, büyük bundle parse maliyeti ve ağır filtreleme mantığı da aynı sonucu doğurabilir.

Evet, özellikle etkileşim öncesi çalışan chat, A/B test, analitik ve benzeri etiketler ana iş parçacığını meşgul ederek INP’yi kötüleştirebilir. Sorun yalnızca ağdan yüklenmeleri değildir. parse ve execute aşamasında da gecikme yaratırlar. Bu yüzden üçüncü taraf kodlar için bütçe yaklaşımı gerekir: ilk etkileşimden önce gerçekten zorunlu mu, değil mi? Zorunlu değilse ilk scroll, ilk sekme açılışı veya etkileşim sonrası tetiklenebilir. Doğru erteleme stratejisi, çoğu zaman uygulama koduna dokunmadan bile ilk kazancı getirir. Ancak analitik kaybı yaşamamak için tetikleme mantığını kontrollü kurmak gerekir.

Uygun senaryoda evet, ama her sorun için değil. Web Worker, DOM’dan bağımsız ağır hesaplamaları ana iş parçacığından alarak processing duration’ı düşürebilir. Büyük veri dönüştürme, istemci tarafı puanlama, karmaşık sıralama veya metin ayrıştırma gibi işlerde anlamlı kazanç üretebilir. Buna karşılık render gecikmesi, forced reflow, hydration veya DOM güncellemesi kaynaklı sorunları tek başına çözmez. çünkü Worker DOM’a doğrudan erişemez. Bu yüzden Worker genelde üçüncü taraf yükü ve long task parçalama sonrası gündeme gelmelidir. Önce doğru darboğazı teşhis etmek, burada da en kritik adımdır.

← Üçüncü taraf scriptleri etkileşimi yavaşlatıyorsa nasıl izole edilir İçerik Planlamasında Arama Talebi Mevsimselliği Nasıl Kullanılır? →

İlgili Yazılar

📝
Teknik SEO

CLS (düzen kayması) skoru yüksekse hangi müdahaleler öne alınır?

13.06.2026 Oku →
📝
Teknik SEO

X-Robots-Tag HTTP Başlığı ve Robots Meta Etiketi Farkı

13.06.2026 Oku →
📝
Teknik SEO

Üçüncü taraf scriptleri Core Web Vitals’ı nasıl bozar ve ertelenir

13.06.2026 Oku →
📝
Teknik SEO

Sayfa içi optimizasyon kontrol listesi: 2026 güncel rehber

12.06.2026 Oku →
📝
Teknik SEO

Google Başlık Etiketini Yeniden Yazıyorsa Ne Kontrol Edilir?

12.06.2026 Oku →
📝
Teknik SEO

Büyük Sitelerde Yinelenen Başlık Etiketleri Nasıl Önceliklenir?

12.06.2026 Oku →