Interaction to Next Paint (INP)

Dipublikasikan: 6 Mei 2022, Terakhir diperbarui: 9 September 2025

Browser Support

  • Chrome: 96.
  • Edge: 96.
  • Firefox Technology Preview: supported.
  • Safari: not supported.

Source

Data penggunaan Chrome menunjukkan bahwa 90% waktu pengguna di halaman dihabiskan setelah halaman dimuat. Oleh karena itu, pengukuran responsivitas di seluruh siklus proses halaman secara cermat sangatlah penting. Inilah yang dinilai oleh metrik INP.

Responsivitas yang baik berarti halaman merespons interaksi dengan cepat. Saat halaman merespons interaksi, browser akan menampilkan masukan visual dalam frame berikutnya yang dirender. Masukan visual memberi tahu Anda apakah, misalnya, item yang Anda tambahkan ke keranjang belanja online benar-benar ditambahkan, apakah menu navigasi seluler telah dibuka, apakah konten formulir login sedang diautentikasi oleh server, dan sebagainya.

Beberapa interaksi secara alami membutuhkan waktu lebih lama daripada yang lain, tetapi untuk interaksi yang sangat kompleks, penting untuk segera memberikan beberapa respons visual awal untuk memberi tahu pengguna bahwa sesuatu sedang terjadi. Frame berikutnya yang akan dirender browser adalah peluang paling awal untuk melakukannya.

Oleh karena itu, maksud INP bukan untuk mengukur semua efek akhir dari suatu interaksi—seperti pengambilan data jaringan dan update UI dari operasi asinkron lainnya—tetapi waktu saat paint berikutnya diblokir. Dengan menunda masukan visual, pengguna mungkin mendapatkan kesan bahwa halaman tidak merespons cukup cepat, dan INP dikembangkan untuk membantu developer mengukur bagian pengalaman pengguna ini.

Dalam video berikut, contoh di sebelah kanan memberikan masukan visual langsung bahwa akordeon sedang terbuka. Responsivitas yang buruk ditunjukkan dalam contoh di sebelah kiri, dan bagaimana hal itu dapat menciptakan pengalaman pengguna yang buruk.

Contoh daya respons yang buruk dan baik. Di sebelah kiri, tugas panjang mencegah akordeon terbuka. Hal ini menyebabkan pengguna mengklik beberapa kali, karena mengira pengalaman tersebut rusak. Saat thread utama mengejar, thread akan memproses input yang tertunda, sehingga akordeon terbuka dan tertutup secara tidak terduga. Di sebelah kanan, halaman yang lebih responsif akan membuka akordeon dengan cepat dan tanpa insiden.

Panduan ini menjelaskan cara kerja INP, cara mengukurnya, dan menunjukkan resource untuk meningkatkannya.

Apa itu INP?

INP adalah metrik yang menilai responsivitas keseluruhan halaman terhadap interaksi pengguna dengan mengamati latensi semua interaksi klik, ketuk, dan keyboard yang terjadi selama kunjungan pengguna ke suatu halaman. Nilai INP akhir adalah interaksi terpanjang yang diamati, dengan mengabaikan pencilan.

Detail tentang cara penghitungan INP

INP dihitung dengan mengamati semua interaksi yang dilakukan dengan halaman. Untuk sebagian besar situs, interaksi dengan latensi terburuk dilaporkan sebagai INP.

Namun, untuk halaman dengan sejumlah besar interaksi, gangguan acak dapat menyebabkan interaksi latensi tinggi yang tidak biasa pada halaman yang responsif. Semakin banyak interaksi yang terjadi di halaman tertentu, semakin besar kemungkinan hal ini terjadi.

Untuk memberikan ukuran responsivitas yang lebih baik untuk halaman dengan jumlah interaksi yang tinggi, kami mengabaikan satu interaksi tertinggi untuk setiap 50 interaksi. Sebagian besar pengalaman halaman tidak memiliki lebih dari 50 interaksi, sehingga interaksi terburuk paling sering dilaporkan. Persentil ke-75 dari semua tayangan halaman kemudian dilaporkan seperti biasa, yang selanjutnya menghilangkan pencilan untuk memberikan nilai yang dialami sebagian besar pengguna atau lebih baik.

Interaksi adalah sekelompok pengendali peristiwa yang diaktifkan selama gestur pengguna logis yang sama. Misalnya, interaksi "ketuk" pada perangkat layar sentuh mencakup beberapa peristiwa, seperti pointerup, pointerdown, dan click. Interaksi dapat didorong oleh JavaScript, CSS, kontrol browser bawaan (seperti elemen formulir), atau kombinasi keduanya.

Latensi interaksi terdiri dari durasi terpanjang tunggal dari sekelompok pengendali peristiwa yang mendorong interaksi, dari saat pengguna memulai interaksi hingga saat browser dapat melakukan paint frame berikutnya. Dalam kasus yang jarang terjadi, mungkin tidak ada frame yang akan digambar, tetapi interaksi berakhir saat browser dapat menggambar frame.

Berapa skor INP yang baik?

Menyematkan label seperti "baik" atau "buruk" pada metrik responsivitas sulit dilakukan. Di satu sisi, Anda ingin mendorong praktik pengembangan yang memprioritaskan responsivitas yang baik. Di sisi lain, Anda harus memperhitungkan fakta bahwa ada variabilitas yang cukup besar dalam kemampuan perangkat yang digunakan orang untuk menetapkan ekspektasi pengembangan yang dapat dicapai.

Untuk memastikan Anda memberikan pengalaman pengguna dengan responsivitas yang baik, nilai minimum yang baik untuk diukur adalah persentil ke-75 pemuatan halaman yang direkam di lapangan, yang disegmentasikan di seluruh perangkat seluler dan desktop:

  • INP di bawah atau pada 200 milidetik berarti halaman memiliki responsivitas yang baik.
  • INP di atas 200 milidetik dan di bawah atau sama dengan 500 milidetik berarti responsivitas halaman perlu ditingkatkan.
  • INP di atas 500 milidetik berarti halaman memiliki responsivitas yang buruk.
Nilai INP yang baik adalah 200 milidetik atau kurang, nilai yang buruk lebih dari 500 milidetik, dan nilai di antaranya perlu ditingkatkan.
Nilai INP yang baik adalah 200 milidetik atau kurang. Nilai buruk lebih besar dari 500 milidetik.

Apa yang ada dalam interaksi?

Diagram yang menggambarkan interaksi di thread utama. Pengguna memasukkan input saat tugas pemblokiran berjalan. Input ditunda hingga tugas tersebut selesai, setelah itu pengendali peristiwa pointerup, mouseup, dan klik akan berjalan, lalu rendering dan pekerjaan menggambar akan dimulai hingga frame berikutnya ditampilkan.
Siklus proses interaksi. Penundaan input terjadi hingga pengendali peristiwa mulai berjalan, yang mungkin disebabkan oleh faktor-faktor seperti tugas yang berjalan lama di thread utama. Callback handler peristiwa interaksi kemudian berjalan, dan terjadi penundaan sebelum frame berikutnya ditampilkan.

Pendorong utama interaktivitas sering kali adalah JavaScript, meskipun browser menyediakan interaktivitas melalui kontrol yang tidak didukung oleh JavaScript, seperti kotak centang, tombol pilihan, dan kontrol yang didukung oleh CSS.

Karena tujuan INP, hanya jenis interaksi berikut yang diamati:

  • Mengklik dengan mouse.
  • Mengetuk perangkat dengan layar sentuh.
  • Menekan tombol pada keyboard fisik atau virtual.

Interaksi terjadi di dokumen utama atau di iframe yang disematkan dalam dokumen, misalnya mengklik tombol putar pada video yang disematkan. Pengguna akhir tidak akan mengetahui apakah konten berada dalam iframe atau tidak. Oleh karena itu, INP dalam iframe diperlukan untuk mengukur pengalaman pengguna di halaman tingkat teratas. Karena JavaScript Web API tidak memiliki akses ke konten iframe, hal ini dapat ditampilkan sebagai perbedaan antara CrUX dan RUM

Interaksi dapat terdiri dari beberapa peristiwa. Misalnya, penekanan tombol mencakup peristiwa keydown, keypress, dan keyup. Interaksi ketuk berisi peristiwa pointerup dan pointerdown. Peristiwa dengan durasi terlama dalam interaksi adalah yang berkontribusi pada total latensi interaksi.

Penggambaran interaksi yang lebih kompleks yang berisi dua interaksi. Yang pertama adalah peristiwa mousedown, yang menghasilkan frame sebelum tombol mouse dilepaskan, yang memulai lebih banyak pekerjaan hingga frame lain ditampilkan sebagai hasilnya.
Penggambaran interaksi dengan beberapa pengendali peristiwa. Bagian pertama interaksi menerima input saat pengguna mengklik tombol mouse. Namun, sebelum melepaskan tombol mouse, frame akan ditampilkan. Saat pengguna melepaskan tombol mouse, serangkaian pengendali peristiwa lain harus berjalan sebelum frame berikutnya ditampilkan.

Seperti yang ditunjukkan dalam diagram, durasi pemrosesan INP mencakup semua callback handler peristiwa dalam frame tersebut. Hal ini membuat penundaan input menjadi waktu sebelum callback untuk interaksi ditangani, durasi pemrosesan menjadi waktu untuk semua callback dieksekusi, dan penundaan presentasi menjadi waktu setelah callback dieksekusi hingga frame ditampilkan di layar pengguna.

INP halaman dihitung saat pengguna meninggalkan halaman. Hasilnya adalah satu nilai yang mewakili responsivitas keseluruhan halaman selama siklus prosesnya. INP yang rendah berarti halaman merespons input pengguna dengan andal.

Apa perbedaan INP dengan Penundaan Input Pertama (FID)?

INP adalah metrik pengganti Penundaan Input Pertama (FID). Meskipun keduanya merupakan metrik responsivitas, FID hanya mengukur penundaan input interaksi pertama di halaman. INP meningkatkan FID dengan mengamati semua interaksi di halaman, mulai dari penundaan input, hingga waktu yang diperlukan untuk menjalankan penangan peristiwa, dan akhirnya hingga browser telah menggambar frame berikutnya.

Perbedaan ini berarti bahwa INP dan FID adalah jenis metrik responsivitas yang berbeda. Jika FID adalah metrik responsivitas pemuatan yang dirancang untuk menilai kesan pertama halaman pada pengguna, INP adalah indikator responsivitas keseluruhan yang lebih andal, terlepas dari kapan interaksi terjadi dalam siklus proses halaman.

Bagaimana jika tidak ada nilai INP yang dilaporkan?

Halaman dapat tidak menampilkan nilai INP. Hal ini dapat terjadi karena beberapa alasan, termasuk:

  • Halaman dimuat, tetapi pengguna tidak pernah mengklik, mengetuk, atau menekan tombol di keyboard.
  • Halaman dimuat, tetapi pengguna berinteraksi dengannya menggunakan gestur yang tidak diukur, seperti men-scroll atau mengarahkan kursor ke elemen.
  • Halaman diakses oleh bot seperti crawler penelusuran atau browser tanpa antarmuka yang belum diberi skrip untuk berinteraksi dengan halaman.

Cara mengukur INP

INP dapat diukur baik di lapangan maupun di laboratorium, sejauh Anda dapat menyimulasikan interaksi pengguna yang realistis.

Di lapangan

Idealnya, perjalanan Anda dalam mengoptimalkan INP akan dimulai dengan data lapangan. Pada kondisi terbaiknya, data lapangan dari Pemantauan Pengguna Nyata (RUM) tidak hanya akan memberi Anda nilai INP halaman, tetapi juga data kontekstual yang menyoroti interaksi spesifik yang bertanggung jawab atas nilai INP itu sendiri, apakah interaksi terjadi selama atau setelah pemuatan halaman, jenis interaksi (klik, penekanan tombol, atau ketuk), dan waktu berharga lainnya yang dapat membantu Anda mengidentifikasi bagian interaksi mana yang memengaruhi responsivitas.

Jika situs Anda memenuhi syarat untuk disertakan dalam Chrome User Experience Report (CrUX), Anda dapat dengan cepat mendapatkan data kolom untuk INP melalui CrUX di PageSpeed Insights (dan Data Web Inti lainnya). Setidaknya, Anda bisa mendapatkan gambaran INP situs Anda di tingkat asal, tetapi dalam beberapa kasus, Anda juga bisa mendapatkan data tingkat URL.

Namun, meskipun CrUX dapat memberi tahu Anda jika ada masalah, CrUX tidak dapat memberi tahu Anda penyebab masalah tersebut. Solusi RUM dapat membantu Anda menemukan detail lebih lanjut tentang halaman, pengguna, atau interaksi pengguna yang mengalami masalah responsivitas. Dengan dapat mengatribusikan INP ke setiap interaksi, Anda dapat menghindari tebakan dan upaya yang sia-sia.

Di laboratorium

Sebaiknya Anda mulai menguji di lab setelah memiliki data lapangan yang menunjukkan bahwa halaman memiliki interaksi yang lambat. Data lapangan akan membuat pekerjaan mereproduksi interaksi bermasalah di lab menjadi tugas yang jauh lebih mudah.

Namun, sangat mungkin Anda tidak memiliki data lapangan. Meskipun INP dapat diukur di beberapa alat lab, nilai INP yang dihasilkan untuk halaman selama pengujian lab akan bergantung pada interaksi yang dilakukan selama periode pengukuran. Perilaku pengguna bisa tidak terduga dan sangat bervariasi, yang berarti pengujian Anda di lab mungkin tidak memunculkan interaksi masalah dengan cara yang sama seperti data lapangan. Selain itu, beberapa alat lab tidak akan melaporkan INP halaman karena hanya mengamati pemuatan halaman tanpa interaksi apa pun. Dalam kasus tersebut, Total Blocking Time (TBT) mungkin merupakan metrik proxy yang wajar untuk INP, tetapi bukan pengganti INP itu sendiri.

Meskipun ada batasan dalam alat lab terkait penilaian INP halaman, ada beberapa strategi untuk mereproduksi interaksi lambat di lab. Strateginya mencakup mengikuti alur pengguna umum dan menguji interaksi di sepanjang proses, serta berinteraksi dengan halaman saat halaman dimuat—saat thread utama sering kali paling sibuk—untuk mengidentifikasi interaksi lambat selama bagian penting dari pengalaman pengguna tersebut.

Mengukur INP di JavaScript

Untuk mengukur INP di JavaScript, Anda perlu mengukur waktu peristiwa untuk semua interaksi, lalu mengambil persentil ke-98 di semua interaksi ini saat halaman dibongkar. Anda dapat melihat kode sumber library JavaScript web vitals yang berisi penerapan referensi tentang cara menghitung INP.

Dalam sebagian besar kasus, nilai INP saat ini pada saat halaman dibongkar adalah nilai INP akhir untuk halaman tersebut, tetapi ada beberapa pengecualian penting seperti yang tercantum di bagian berikutnya. Library JavaScript web vitals memperhitungkan hal ini sebanyak mungkin, dalam batasan Web API.

Perbedaan antara metrik dan API

  • Entri event di bawah 104 milidetik tidak dilaporkan secara default menggunakan pengamat performa. Default ini dapat diubah saat pengamat performa didaftarkan menggunakan parameter durationThreshold, tetapi nilai minimumnya adalah 16 milidetik. Oleh karena itu, sebaiknya amati juga entri first-input, yang juga merupakan entri Waktu Peristiwa, tetapi dijamin dapat diamati meskipun durasinya kurang dari durationThreshold. Hal ini membantu memastikan bahwa halaman dengan interaksi selalu melaporkan beberapa nilai INP.
  • Secara teknis, penghitungan persentil yang sempurna memerlukan penyimpanan semua sampel dalam memori, yang dapat menimbulkan biaya besar. Namun, Anda dapat memperkirakan persentil, terutama persentil yang sangat tinggi seperti p98, hanya dengan menyimpan daftar kecil interaksi N terburuk. 10 adalah pilihan umum.
  • Jika halaman dipulihkan dari back/forward cache, nilai INP-nya harus direset ke nol karena pengguna mengalami hal ini sebagai kunjungan halaman yang berbeda.
  • API tidak melaporkan entri event untuk interaksi yang terjadi dalam iframe, tetapi metrik ini melakukannya karena merupakan bagian dari pengalaman pengguna di halaman. Hal ini dapat ditampilkan sebagai perbedaan antara CrUX dan RUM. Untuk mengukur INP dengan benar, Anda harus mempertimbangkannya. Sub-frame dapat menggunakan API untuk melaporkan entri event-timing ke frame induk.

Selain pengecualian ini, INP memiliki beberapa kompleksitas tambahan karena mengukur seluruh masa aktif halaman:

  • Pengguna mungkin membiarkan tab tetap terbuka untuk waktu yang sangat lama—berhari-hari, berminggu-minggu, berbulan-bulan. Bahkan, pengguna mungkin tidak pernah menutup tab.
  • Di sistem operasi seluler, browser biasanya tidak menjalankan callback pelepasan halaman untuk tab latar belakang, sehingga sulit untuk melaporkan nilai "akhir".

Untuk menangani kasus tersebut, INP harus dilaporkan setiap kali halaman berada di latar belakang—selain setiap kali halaman dibongkar (peristiwa visibilitychange mencakup kedua skenario ini). Kemudian, sistem analisis yang menerima data ini perlu menghitung nilai INP akhir di backend.

Daripada menghafal dan bergelut dengan semua kasus ini sendiri, developer dapat menggunakan library JavaScript web-vitals untuk mengukur INP, yang memperhitungkan semua hal yang disebutkan sebelumnya, kecuali kasus iframe:

import {onINP} from 'web-vitals';

// Measure and log INP in all situations
// where it needs to be reported.
onINP(console.log);

Cara meningkatkan INP

Kumpulan panduan tentang mengoptimalkan INP tersedia untuk memandu Anda melalui proses mengidentifikasi interaksi lambat di lapangan, dan menggunakan data lab untuk membantu Anda mengidentifikasi penyebab dan mengoptimalkannya.

Log perubahan

Terkadang, bug ditemukan di API yang digunakan untuk mengukur metrik, dan terkadang di definisi metrik itu sendiri. Akibatnya, perubahan terkadang harus dilakukan, dan perubahan ini dapat muncul sebagai peningkatan atau regresi dalam laporan dan dasbor internal Anda.

Untuk membantu Anda mengelola hal ini, semua perubahan pada penerapan atau definisi metrik ini akan ditampilkan di Log Perubahan ini.

Jika Anda memiliki masukan untuk metrik ini, berikan di grup Google web-vitals-feedback.

Menguji pengetahuan Anda

Apa tujuan utama metrik INP?

Untuk mengukur waktu yang diperlukan agar konten pertama halaman ditampilkan.
Salah - Ini menjelaskan First Contentful Paint
Untuk mengukur stabilitas visual halaman dan meminimalkan pergeseran tata letak yang tidak terduga.
Salah - Ini menjelaskan Cumulative Layout Shift
Untuk menilai waktu yang diperlukan halaman agar menjadi interaktif sepenuhnya.
Salah - Ini terkait dengan Time to Interactive, tetapi INP secara khusus berfokus pada responsivitas terhadap input pengguna
Untuk meminimalkan waktu sejak pengguna memulai interaksi hingga frame berikutnya dilukis, untuk semua atau sebagian besar interaksi yang dimulai pengguna.
Benar.

Jenis interaksi mana saja berikut ini yang diamati untuk tujuan penghitungan INP? (Pilih semua yang sesuai).

Mengklik dengan mouse.
Benar.
Men-scroll halaman dengan roda mouse atau trackpad.
Salah - INP tidak mempertimbangkan scrolling
Mengetuk layar sentuh.
Benar.
Mengarahkan kursor mouse ke elemen.
Salah - INP tidak mempertimbangkan pengarahan kursor
Menekan tombol di keyboard.
Benar.
Memperbesar atau memperkecil halaman.
Salah - INP tidak mempertimbangkan zoom

Bagaimana "latensi" interaksi didefinisikan untuk INP?

Jumlah waktu yang diperlukan browser untuk memproses pengendali peristiwa interaksi.
Salah - Ini hanya memperhitungkan durasi pemrosesan, bukan penundaan input atau waktu untuk menampilkan frame berikutnya
Waktu rata-rata yang diperlukan semua interaksi di halaman untuk menghasilkan respons visual.
Salah - INP berfokus pada interaksi terlama, bukan rata-rata
Waktu yang diperlukan browser untuk mulai memproses pengendali peristiwa yang terkait dengan interaksi.
Salah - Ini hanya memperhitungkan penundaan input, bukan waktu pemrosesan dan rendering
Waktu dari awal interaksi hingga saat frame berikutnya ditampilkan sepenuhnya.
Benar.

Apa perbedaan antara INP dan FID?

INP mengukur waktu yang diperlukan untuk menampilkan konten pertama halaman, sedangkan FID mengukur responsivitas terhadap input pengguna.
Salah - Deskripsi ini menjelaskan First Contentful Paint, bukan INP
INP mempertimbangkan durasi penuh semua interaksi, sedangkan FID hanya mengukur penundaan input interaksi pertama.
Benar.
INP dan FID mengukur stempel waktu yang berbeda saat halaman menjadi interaktif.
Salah - INP dan FID adalah ukuran seberapa cepat halaman merespons interaksi, terlepas dari kapan interaksi terjadi
Tidak ada perbedaan; INP dan FID hanyalah dua nama berbeda untuk metrik yang sama.
Salah - Keduanya memiliki definisi yang berbeda

Dalam keadaan apa data INP mungkin tidak tersedia untuk halaman di alat seperti PageSpeed Insights?

Halaman menggunakan library pengukuran performa kustom yang tidak melaporkan data INP.
Salah - INP diukur secara otomatis menggunakan API platform web dan tidak bergantung pada halaman yang melaporkan sendiri performanya melalui library kustom.
Data interaksi dari pengguna Chrome tidak cukup untuk menghitung nilai INP yang bermakna dalam set data CrUX.
Benar.
Pengguna berinteraksi dengan halaman hanya dengan men-scroll dan mengarahkan kursor, yang tidak dipertimbangkan untuk INP.
Benar.
Halaman ini dibuat menggunakan framework yang otomatis dioptimalkan untuk INP, sehingga tidak perlu dilaporkan.
Salah - Framework dapat membantu INP, tetapi metrik ini tetap relevan dan dilaporkan jika data tersedia

Apa strategi paling efektif untuk mereproduksi interaksi lambat di lingkungan lab?

Menyimulasikan perangkat kelas atas dengan koneksi jaringan yang lambat dan tidak andal untuk menciptakan kondisi yang menantang.
Salah - Meskipun jaringan dapat berperan, kemampuan perangkat lebih mungkin memunculkan interaksi yang lambat
Menguji interaksi hanya setelah halaman dimuat sepenuhnya dan tidak ada aktivitas.
Salah - Hal ini dapat melewatkan interaksi yang lambat selama pemuatan
Berinteraksi dengan halaman selama pemuatan dan mengikuti alur pengguna umum untuk mengidentifikasi potensi hambatan.
Benar.
Berfokus pada interaksi rumit dan kasus ekstrem yang kemungkinan tidak akan dialami oleh sebagian besar pengguna.
Salah - Alur pengguna umum lebih relevan untuk mengidentifikasi masalah INP umum

Kuis ini dibuat oleh Gemini 1.5 dan ditinjau oleh petugas. Berikan masukan Anda