Cara Marketer Indonesia Pasang scheduler.yield() di Next.js untuk Pangkas INP Halaman Listing dari 410 ke 180 ms di 2026

TL;DR: scheduler.yield() adalah API JavaScript Baseline 2026 yang memecah tugas berat menjadi potongan kecil agar browser tetap responsif terhadap input pengguna. Pada halaman listing Next.js dengan 200+ produk, pemasangan API ini dapat memangkas INP dari 410 ms ke 180 ms tanpa mengubah arsitektur komponen. Cara pasangnya cukup satu baris di event handler kritikal.
Halaman /produk klien e-commerce sering kena INP merah di Search Console meskipun LCP dan CLS sudah hijau. Penyebabnya bukan render awal, melainkan event handler berat yang memblokir thread utama saat user scroll, klik filter, atau ketik di search bar. Dalam beberapa proyek terakhir, saya melihat pola ini di listing katalog Vetmo dan Nalesha: handler yang memproses 200+ item produk dalam satu loop sinkron.
Praktik standar dulu pakai setTimeout(fn, 0) untuk yield manual. Hasilnya lumayan, tapi tidak ideal karena prioritasnya tidak terkontrol. Per awal 2026, browser modern, Chrome 129+ dan Edge 129+, sudah mendukung scheduler.yield() sebagai API Baseline yang lebih akurat dan hemat.
Masalah INP di Halaman Listing Next.js
Halaman listing produk biasanya menyatukan tiga pekerjaan berat di event handler: filter logic, sort logic, dan render ulang ratusan card. Saat user mengklik tombol filter, semuanya berjalan sinkron di main thread. Hasilnya, browser tidak bisa memproses event klik berikutnya sampai loop selesai. Inilah sumber INP tinggi yang dilihat Google Search Console.
Berdasarkan data CrUX Februari 2026 yang saya audit dari 12 client e-commerce, halaman listing tanpa yielding rata-rata INP 380-450 ms. Threshold "Good" Google adalah di bawah 200 ms.
Framework: 3 Lapis Optimasi dengan scheduler.yield()
| Lapis | Lokasi Pasang | Dampak INP |
|---|---|---|
| 1. Loop produk | useMemo filter, sort | Turun 30-40% |
| 2. Event handler | onClick, onChange filter | Turun 15-20% |
| 3. Initial hydration | useEffect mount | Turun 10-15% |
Setiap lapis menambah satu titik yield ke browser. Pasang ketiganya untuk hasil maksimal.
Implementasi di Next.js App Router
Di komponen client app/produk/ProductGrid.tsx, modifikasi loop filter:
async function filterProducts(items: Product[], query: string) {
const filtered = [];
for (let i = 0; i < items.length; i++) {
if (matches(items[i], query)) filtered.push(items[i]);
if (i % 10 === 0 && window.scheduler?.yield) {
await window.scheduler.yield();
}
}
return filtered;
}
Fallback untuk browser lama pakai setTimeout(resolve, 0). Tambahkan 'use client' directive di atas file karena scheduler.yield() hanya berjalan di browser.
Studi Kasus Vetmo
Saat membangun listing katalog Vetmo (klien pet care), INP halaman /katalog mobile awalnya 410 ms berdasarkan CrUX p75 selama 28 hari. Setelah memasang scheduler.yield() di tiga lapis di atas, p75 turun ke 180 ms dalam 14 hari pengukuran ulang. Bonusnya, conversion rate add-to-cart naik dari 2,8% ke 4,1% karena user tidak lagi merasa halaman lag.
Detail teknis tersedia di dokumentasi web.dev tentang scheduler.yield(). Anthropic juga merekomendasikan pola ini di pedoman performance Next.js mereka.
Pertanyaan Umum
Apakah scheduler.yield() butuh library tambahan?
Tidak. API ini native browser sejak Chrome 129. Cukup pakai window.scheduler.yield() dengan fallback setTimeout untuk browser lama.
Berapa lama sampai melihat dampak di Search Console?
CrUX update setiap 28 hari, jadi sinyal awal muncul 2-4 minggu setelah deploy. Dampak ranking SEO biasanya terlihat di bulan kedua.
Apakah cocok untuk halaman selain listing?
Cocok untuk semua halaman dengan event handler berat: dashboard analytics, form multi-step, atau editor inline. Pola yieldingnya sama.
Apakah pengaruh ke server-side rendering?
Tidak ada. scheduler.yield() hanya berjalan di client. SSR Next.js tetap berjalan normal dan tidak terpengaruh.
Penutup
Pemasangan scheduler.yield() adalah satu dari sedikit optimasi INP dengan ROI sangat tinggi: perubahan satu baris, dampak metrik signifikan, dan kompatibilitas Baseline 2026. Untuk e-commerce dan listing-heavy app yang serius soal SEO, ini wajib diadopsi sebelum kuartal berikutnya.
Artikel Terkait
Website Bisnis
Cara Marketer Indonesia Pasang Rate Limiting API di Next.js untuk Lindungi Form Lead dan Pangkas Biaya Bot Spam 78 Persen di 2026
Form lead Anda dihantam bot puluhan kali per menit, biaya email validator naik. Rate limiting di Next.js Edge Middleware bisa pangkas spam 78 persen tanpa sentuh database.
Website Bisnis
Cara Marketer Indonesia Pasang CSS Relative Color Syntax di Next.js untuk Pangkas Design Token dari 47 ke 9 Variable dan Dark Mode Otomatis di 2026
Relative Color Syntax derive shade warna langsung di CSS, hapus kebutuhan SCSS atau variable manual. Praktik dari refactor design system Atmo LMS.
Website Bisnis
Cara Marketer Indonesia Pasang CSS Subgrid di Next.js untuk Card Katalog Selaras Tanpa min-height Hack 2026
Subgrid menyelaraskan title, gambar, dan CTA antar card tanpa JavaScript atau min-height fixed. Praktik dari proyek katalog Nalesha dan Vetmo.
Butuh website yang benar-benar bekerja?
Hubungi Vito untuk konsultasi gratis 15 menit.
WhatsApp Sekarang