PAGE DE TEST - Bon INP Optimisée

← Tous les tests

Optimisation

Travail différé, debounce, et async

Résultat

INP (Interaction to Next Paint) < 200ms

Description

Toutes les interactions répondent instantanément

⚡ Interactions Rapides

Cliquez sur les boutons - ils répondent tous en moins de 50ms !

✅ Feedback immédiat

Le bouton répond immédiatement, le travail lourd est fait après

0ms
En attente du clic...

✅ requestIdleCallback

Le travail lourd est différé quand le navigateur est libre

0ms
En attente du clic...

✅ Calcul simulé (async)

Le calcul intensif serait fait dans un Web Worker

0ms
En attente du clic...

✅ Traitement par chunks

Le travail est divisé en petites tâches avec yield

0ms
En attente du clic...

📜 Scroll optimisé (passive + throttle)

Scrollez - le handler utilise passive: true et un throttle de 100ms

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Scrollez pour voir les événements throttled...

⌨️ Saisie avec debounce (300ms)

Tapez rapidement - le traitement ne se fait qu'après 300ms d'inactivité

Tapez pour voir le debounce en action...

✅ Techniques pour un bon INP

Comparaison des approches

❌ Mauvais (bloque le thread)

button.onclick = () => {
  // Bloque le thread pendant 1s
  while (Date.now() - start < 1000) {
    Math.random();
  }
  updateUI();
};

✅ Bon (feedback immédiat)

button.onclick = () => {
  // Feedback immédiat
  button.textContent = "Chargement...";

  // Travail différé
  requestIdleCallback(() => {
    doHeavyWork();
    updateUI();
  });
};
Dernier INP :