Furkan KapukayaYazılım geliştirme
Web Tasarım ve Geliştirme3 dk okuma

INP Nasıl İyileştirilir? Interaction to Next Paint İçin Uygulamalı Rehber

Core Web Vitals metriği INP'nin ölçtüğü şey, 200 ms hedefi, uzun görevlerin bulunması, olay işleyicilerini hafifletme, üçüncü taraf betikler, reklam ve analitik kodlarının etkisi ve adım adım iyileştirme.

Interaction to Next Paint (INP), bir kullanıcının sayfayla etkileşimi (tıklama, dokunma, tuşa basma) ile ekranın buna tepki olarak güncellenmesi arasında geçen süreyi ölçen Core Web Vitals metriğidir. Mart 2024'te FID'in yerini aldı ve o günden beri pek çok sitenin en zayıf metriği oldu. Sebebi basit: Sayfaya eklenen her betik, ana iş parçacığında (main thread) yer kaplar. Bu yazıda INP'yi nasıl ölçeceğinizi ve somut olarak nasıl iyileştireceğinizi anlatıyoruz.

Hedef değerler

  • İyi: 200 ms ve altı
  • İyileştirilmeli: 200-500 ms
  • Zayıf: 500 ms üzeri

INP, ziyaret boyunca yapılan etkileşimlerin en yavaşlarından birini temsil eder. Yani sayfadaki tek bir ağır buton bile tüm sayfanın puanını düşürebilir.

Bir etkileşim neden yavaşlar?

Bir tıklamanın süresi üç parçadan oluşur:

  1. Girdi gecikmesi: Tarayıcı o anda başka bir işle (örneğin bir betiği çalıştırmakla) meşgulse tıklama sıraya girer.
  2. İşleme süresi: Tıklamaya bağlı JavaScript kodunun çalışma süresi.
  3. Sunum gecikmesi: Kod bittikten sonra tarayıcının stil hesaplaması, yerleşim ve çizim yapması.

Adım 1: Ölçün

  • Saha verisi: Search Console'daki Core Web Vitals raporu ve PageSpeed Insights gerçek kullanıcı (CrUX) verisini gösterir. Önce hangi sayfa gruplarının sorunlu olduğuna bakın.
  • Laboratuvar: Chrome DevTools'un Performance panelinde etkileşimi kaydedin; uzun görevler (50 ms üzeri) kırmızı işaretle görünür.
  • Gerçek kullanıcı izleme: web-vitals kütüphanesiyle INP değerini ve hangi öğeye tıklandığını kendi analitiğinize gönderebilirsiniz.

Adım 2: Ana iş parçacığını boşaltın

  1. Gereksiz betikleri kaldırın: Kullanılmayan eklentiler, eski izleme kodları, birden fazla analitik aracı.
  2. Üçüncü taraf betikleri erteleyin: Sohbet widget'ları, reklam ve analitik betikleri sayfa yüklendikten veya kullanıcı etkileşiminden sonra yüklensin. Bu sitedeki reklam betiği de sayfa yüklendikten sonra, tarayıcı boşta kaldığında yükleniyor.
  3. Uzun görevleri bölün: Büyük bir döngüyü parçalara ayırıp aralarda tarayıcıya nefes aldırın. Destekleyen tarayıcılarda scheduler.yield(), diğerlerinde setTimeout ile.
  4. Kod bölme: Sayfada hemen gerekmeyen JavaScript'i ilk yüklemeden çıkarın.

Adım 3: Olay işleyicilerini hafifletin

button.addEventListener('click', async () => {
  // 1) Kullanıcıya hemen geri bildirim ver
  button.classList.add('is-loading');
  // 2) Tarayıcının ekranı çizmesine izin ver
  await new Promise(r => setTimeout(r, 0));
  // 3) Ağır işi sonra yap
  hesaplaVeFiltrele();
});

Kullanıcıya önce görsel geri bildirim vermek, ağır işi sonraya bırakmak algılanan hızı ve INP'yi birlikte iyileştirir.

Adım 4: Çizim maliyetini azaltın

  • Çok büyük DOM ağaçlarından kaçının; binlerce öğe içeren listelerde sayfalama veya sanal liste kullanın.
  • Animasyonlarda transform ve opacity kullanın; width, top gibi yerleşimi değiştiren özellikler pahalıdır.
  • Görünür olmayan bölümler için content-visibility: auto düşünün.

Sık görülen INP sorunları

  1. Mobil menü açılırken tüm sayfanın yeniden hesaplanması.
  2. Filtre seçildiğinde yüzlerce ürün kartının senkron olarak yeniden oluşturulması.
  3. Çerez onay bandının ağır bir kütüphane ile yüklenmesi.
  4. Tag manager içinde birikmiş onlarca etiket.
  5. Her tuş vuruşunda arama yapan ve debounce kullanmayan arama kutuları.

Sık sorulan sorular

INP sıralamayı ne kadar etkiler?

Core Web Vitals, sayfa deneyimi sinyallerinin bir parçasıdır; içerik kalitesinin önüne geçmez. Ancak benzer kalitede sayfalar arasında fark yaratabilir ve dönüşüm oranını doğrudan etkiler.

Laboratuvarda iyi, sahada kötü çıkıyor. Neden?

Gerçek kullanıcılar daha yavaş telefonlar kullanır ve sayfada daha çok etkileşim yapar. Test ederken DevTools'ta CPU yavaşlatma (4x veya 6x) kullanın.

Reklamlar INP'yi bozar mı?

Ağır reklam betikleri bozabilir. Reklam kodunu geç yüklemek ve reklam alanı sayısını makul tutmak etkiyi azaltır.

Sonuç

INP'yi iyileştirmenin özü, ana iş parçacığını kullanıcıya ayırmaktır: daha az betik, daha kısa görevler, önce geri bildirim. Sitenizin Core Web Vitals değerlerini birlikte iyileştirmek için bize ulaşın.

  • #INP
  • #CoreWebVitals
  • #WebPerformansı
  • #PageSpeed
  • #JavaScript
  • #SEO