Digital Transformation
Web Worker
Web Worker adalah API browser yang menjalankan skrip JavaScript di thread terpisah dari main thread, sehingga halaman tetap responsif saat menjalankan tugas berat.
TL;DR: Web Worker adalah mekanisme browser untuk menjalankan JavaScript di thread terpisah, sehingga tugas berat seperti parsing data, kompresi, atau skrip pihak ketiga tidak memblokir UI. Pemakaian yang tepat sering menurunkan INP dan menjaga halaman tetap responsif.
Apa itu Web Worker?
Web Worker adalah API standar (didokumentasikan di MDN Web Docs) yang membuat browser bisa menjalankan skrip JavaScript di luar main thread. Main thread adalah jalur tunggal yang juga mengurus rendering, input pengguna, dan layout. Ketika tugas berat berjalan di sana, halaman terasa nge-lag. Dengan Web Worker, tugas tersebut dipindahkan ke thread terpisah dan komunikasi antar-thread dilakukan via pesan.
Tiga varian utama: Dedicated Worker (1 worker untuk 1 halaman), Shared Worker (dipakai antar-tab dari origin sama), dan Service Worker (khusus untuk caching dan offline, lihat service worker). Untuk konteks performa interaksi, baca juga INP dan long task.
Use Case Praktis
| Use Case | Kenapa Perlu Worker |
|---|---|
| Parsing CSV besar di browser | Hindari freeze saat user upload |
| Kompresi atau enkripsi sisi klien | Operasi CPU-intensif |
| Skrip analitik pihak ketiga | Cegah skrip eksternal blok main thread |
| Image manipulation | Filter atau resize tanpa lag |
Kenapa Penting?
Saat membantu klien e-commerce Indonesia menurunkan INP di bawah 200 ms, salah satu intervensi paling berdampak adalah memindahkan beban skrip tracking pihak ketiga ke worker via Partytown. Hasilnya konsisten: long task berkurang, halaman terasa lebih cepat tanpa harus mengorbankan instrumentasi. Untuk marketer dan developer Indonesia, Web Worker membuka jalan agar fitur kompleks tetap bisa hidup di sisi klien tanpa merusak skor Core Web Vitals.
Pertanyaan Umum
Apakah Web Worker bisa akses DOM?
Tidak. Worker tidak bisa menyentuh DOM secara langsung. Komunikasi dilakukan via postMessage, lalu main thread yang mengupdate UI berdasarkan pesan dari worker.
Kapan tidak perlu Web Worker?
Untuk tugas ringan dan sinkron yang selesai di bawah 50 ms, overhead worker (serialisasi pesan) lebih besar daripada manfaatnya.