Studi Kasus Ade Mulyana: Pakai INP Sub-parts Pulihkan Score Interaction dari 380 ke 140 ms di 2026
TL;DR: Site personal brand Ade Mulyana stuck di INP 380 ms (kategori "needs improvement") meski LCP dan CLS sudah hijau. Pakai INP sub-parts breakdown dari web-vitals.js v4, kami isolasi penyebab ke satu komponen filter tag yang me-render 240 item sekaligus. Setelah virtualisasi dan defer pekerjaan render ke
requestIdleCallback, INP turun ke 140 ms dalam 5 hari kerja.
Banyak audit Core Web Vitals masih berhenti di "INP buruk" tanpa breakdown akar masalahnya. Padahal sejak web-vitals.js v4, breakdown INP ke tiga sub-parts (input delay, processing time, presentation delay) sudah jadi standar industri.
Tulisan ini mencatat proses audit yang Vito Atmo jalankan untuk site personal brand Ade Mulyana periode April 2026. Fokus pada metodologi, bukan klaim ajaib.
Konteks Masalah
Site Ade Mulyana (Next.js 15, static export) sudah lulus LCP (2,1 detik) dan CLS (0,04). Tapi INP terdeteksi 380 ms di lapangan dari data CrUX. Halaman utama: portfolio listing dengan 240 tag filter aktif. Setiap klik filter butuh sekitar 0,4 detik sebelum visual berubah, terutama di perangkat Android mid-range.
Pendekatan Audit
Kami pasang web-vitals.js v4 dengan attribution payload, kirim hasil ke endpoint kustom. Dalam 72 jam terkumpul 1.840 sample interaksi dari pengguna nyata. Breakdown agregat:
| Sub-part | Median | P75 | Kontribusi |
|---|---|---|---|
| Input delay | 18 ms | 32 ms | 8% |
| Processing time | 220 ms | 295 ms | 78% |
| Presentation delay | 28 ms | 53 ms | 14% |
Processing time mendominasi. Itu artinya event handler atau callback JavaScript-nya berat, bukan masalah render atau main thread blocking dari luar. Pendekatan ini sejalan dengan rekomendasi Core Web Vitals Attribution.
Diagnosa Komponen
Pakai Long Animation Frames API (LoAF), kami tag interaksi paling lambat. Hasilnya menunjuk ke satu komponen <TagFilter> yang melakukan Array.filter() di 240 item lalu setState array baru ke React. Re-render menyentuh 240 elemen DOM sekaligus.
Selengkapnya tentang metrik ini ada di Long Animation Frames (LoAF) API. Referensi resmi di web.dev Optimize INP.
Solusi yang Diterapkan
Saat membangun perbaikan, kami pilih tiga langkah konservatif (tanpa ubah desain visual):
- Virtualisasi list: pakai
react-window, render hanya 20 item terlihat. Sisanya placeholder. - Defer state update: filter logic dibungkus
startTransition(React 18) supaya non-urgent. - Idle pre-compute: hasil filter populer di-cache di
requestIdleCallbacksaat halaman idle.
Hasil
| Metrik | Sebelum | Sesudah | Delta |
|---|---|---|---|
| INP (P75) | 380 ms | 140 ms | -63% |
| Bounce rate halaman portfolio | 38% | 31% | -7 pp |
| Klik filter per sesi | 1,8 | 2,6 | +44% |
Angka di atas berbasis 14 hari data CrUX dan GA4 internal. Bukan klaim universal: profil traffic site personal brand berbeda dari e-commerce.
Pertanyaan Umum
Apakah INP sub-parts wajib pakai web-vitals.js v4?
Tidak wajib, tapi paling mudah. v4 sudah include attribution payload tanpa konfigurasi tambahan. Versi lama hanya memberi nilai INP agregat.
Apakah virtualisasi list selalu solusi?
Tidak. Virtualisasi berguna saat list lebih dari 50-100 item. Untuk list pendek, optimasi event handler dan memoization biasanya cukup.
Berapa lama hasil INP terlihat di Search Console?
CrUX update bulanan (data 28 hari). Sinyal di Search Console biasanya muncul 4-6 minggu setelah perbaikan deploy.
Apakah perlu Lighthouse untuk verifikasi?
Lighthouse memberi data lab (simulasi). Untuk INP, data lapangan dari CrUX atau RUM jauh lebih akurat karena INP hanya valid pada interaksi nyata.
Penutup
Audit INP yang efektif berhenti bertanya "berapa angkanya" dan mulai bertanya "sub-part mana yang dominan". Pendekatan ini membuat optimasi terarah, hemat waktu, dan menghindari over-engineering. Untuk site dengan traffic kecil-menengah, breakdown 72 jam sudah cukup untuk mengisolasi penyebab utama.
Artikel Terkait
Case Study
Studi Kasus Nalesha: Pillar Cluster Strategy Naikkan Organic Traffic Parfum dari 1.200 ke 4.800 Sesi per Bulan di 2026
Bagaimana Nalesha membangun pillar content "Panduan Memilih Parfum" plus 11 artikel cluster dan menumbuhkan organic traffic 4x dalam 7 bulan tanpa tambah budget iklan.
Case Study
Studi Kasus Felicia Tan: Pasang BreadcrumbList Schema di 380 Halaman Kategori Naikkan CTR Organik dari 2,1% ke 2,6% di 2026
Toko online Felicia punya 380 halaman kategori dengan URL panjang yang dipotong Google di SERP. Setelah pasang BreadcrumbList Schema, breadcrumb mengganti URL dan CTR naik 23% dalam 5 minggu.
Case Study
Studi Kasus Ade Mulyana: Pasang Product Schema di Halaman Paket Layanan Notaris untuk Naikkan CTR Organik 23% di 2026
Halaman paket layanan Ade Mulyana hanya dapat klik organik tipis meski sudah rank 4. Setelah pasang Product Schema dengan harga dan rating, CTR naik dari 1,8% ke 2,2% dalam 6 minggu.
Butuh website yang benar-benar bekerja?
Hubungi Vito untuk konsultasi gratis 15 menit.
WhatsApp Sekarang