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
Hasil Evaluasi Core Web Vitals (INP)
// 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.
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.