🔍 inp.works

Gestionnaire d'événement lourd : pourquoi un clic prend 500 ms et comment le corriger

Ce qui se passe

Quand un utilisateur clique, le navigateur exécute votre gestionnaire d'événement jusqu'au bout avant de pouvoir peindre le frame suivant. Si le gestionnaire effectue des centaines de millisecondes de travail synchrone — filtrer un grand tableau, construire du DOM, parser du JSON — la page est figée exactement ce temps-là. L'utilisateur ne voit rien tant que le gestionnaire n'a pas rendu la main.

C'est le problème d'INP le plus courant ; il apparaît dans la décomposition de l'INP comme une longue phase de processing time.

Comment le reconnaître

Comment corriger

Problème

button.addEventListener("click", () => {
  const results = filterRows(allRows)   // 400 ms of sync work
  renderTable(results)                  // user saw nothing until now
})

Correctif

button.addEventListener("click", async () => {
  button.classList.add("loading")       // instant feedback, painted first
  await scheduler.yield()               // let the browser paint
  const results = filterRows(allRows)
  renderTable(results)
  button.classList.remove("loading")
})
Analysez votre site gratuitement →
Advertise here