PuluhLabs
Core Web Vitals INP (Interaction to Next Paint) Lab

Simulator Interaktif Off-Main-Thread & 0ms INP Latency

Uji langsung perbedaan kritis antara Main Thread Blocking (UI macet & INP merah) vs Web Worker Off-Main-Thread (animasi 60 FPS mulus & INP hijau 100/100).

Live Frame Rate & Responsivitas

Main Thread FPS:60 FPS
Animasi CSS berjalan normal di main thread (60 FPS)
Coba Klik Cepat Saat Tugas Berjalan:Jumlah Klik: 0

Hasil Evaluasi Core Web Vitals (INP)

Hasil Latency INP Terukur:-- ms
Pola Kode Web Worker Off-Main-Thread (Next.js)
// 1. worker.ts (Dedicated Thread)
self.onmessage = (e) => {
  const { rawData } = e.data;
  // Berat: Parsing jutaan row data atau enkripsi kriptografi
  const processed = heavyDataTransform(rawData);
  self.postMessage({ result: processed });
};

// 2. ClientComponent.tsx (Main Thread Tetap 0ms INP)
const workerRef = useRef<Worker>();
useEffect(() => {
  workerRef.current = new Worker(new URL('./worker.ts', import.meta.url));
  workerRef.current.onmessage = (event) => {
    setData(event.data.result); // Update UI mulus tanpa stutter
  };
}, []);

const handleTrigger = () => {
  // Dispatch ke background worker tanpa memblokir click/paint
  workerRef.current?.postMessage({ rawData });
};

Website Anda Sering Gagal di Metrik INP Google?

PuluhLabs mengaudit & mengoptimalkan arsitektur frontend dengan Web Workers & streaming SSR untuk skor PageSpeed 100/100 mutlak.

Audit INP Web

Mengapa Google Menggantikan FID dengan INP di Core Web Vitals?

1. Mengukur Seluruh Siklus Hidup Halaman

First Input Delay (FID) versi lama hanya mengukur interaksi pertama saat halaman dimuat. INP mengukur seluruh interaksi pengguna (klik tombol, menu dropdown, filter) selama sesi penjelajahan.

2. Menghukum Long Tasks (> 50ms)

Setiap skrip JavaScript yang berjalan lebih dari 50 milidetik di main thread dianggap sebagai Long Task oleh browser, memblokir frame paint dan menghasilkan micro-stutters yang merusak user experience.

3. Solusi Off-Main-Thread & Yielding

Dengan mendelegasikan tugas berat ke Web Worker (atau memecah tugas panjang dengan scheduler.yield()), main thread selalu siap merespons interaksi pengguna dalam hitungan sub-16ms.