Expertise en Agence de Webdesign

Optimisation INP : guide des interactions

18 October 2026 9 min de lecture Nathan Hayes

Écrit par :

Conception et développement web

Voir le profil

Ask AI about this page

9 views 9 min de lecture

Interaction to Next Paint (INP) est une métrique Core Web Vitals qui mesure la réactivité globale d’un site web aux interactions des utilisateurs telles que les clics, les appuis et les saisies au clavier au cours d’une session. Un bon score INP est de 200 millisecondes ou moins. L’amélioration de l’INP nécessite de diviser les tâches longues sur le thread principal, de réduire les scripts tiers, de céder le contrôle au thread principal lors d’opérations de rendu lourdes et d’optimiser les gestionnaires d’événements pour garantir un retour visuel instantané.

Qu’est-ce qui cause une forte latence d’Interaction to Next Paint ?

Les navigateurs web exécutent JavaScript sur un seul thread appelé thread principal (main thread). Lorsqu’un utilisateur clique sur un bouton ou ouvre un menu mobile, le navigateur doit mettre en file d’attente le gestionnaire d’événements JavaScript correspondant, exécuter le code et recalculer la mise en page pour peindre l’image mise à jour. Si le thread principal est occupé par un bloc d’exécution durat plus de 50 millisecondes — connu sous le nom de tâche longue (long task) —, l’interaction de l’utilisateur est retardée. Le temps total passé à attendre l’exécution, à exécuter le gestionnaire et à rendre la mise à jour forme la durée totale de l’INP.

Improving INP: A Practical Guide to Faster Interactions — overview

Dans une structure de compte ou de site typique, une forte latence provient généralement de trois phases distinctes : le délai de saisie, le temps de traitement et le délai de présentation. Le délai de saisie se produit lorsque des tâches précédentes bloquent le thread principal avant même que votre gestionnaire d’événements ne commence. Le temps de traitement représente la durée du code du gestionnaire d’événements lui-même. Le délai de présentation est le temps passé à recalculer les styles, à mettre à jour les arbres de mise en page et à rendre les pixels à l’écran. Les arbres DOM complexes avec des milliers de nœuds amplifient considérablement le délai de présentation.

Comment mesurer l’INP dans Chrome DevTools ?

Le diagnostic du décalage d’interaction nécessite la capture de données de performance tout en interagissant activement avec la page. Ouvrez Chrome DevTools, sélectionnez le panneau Performance et lancez un enregistrement manuel tout en cliquant sur des éléments, en tapant dans des champs ou en basculant des menus interactifs. Une fois l’enregistrement arrêté, observez la piste Interactions en haut de la chronologie. Les interactions longues sont surlignées avec des indicateurs rouges, montrant la durée exacte du délai de saisie, de la durée de traitement et du délai de présentation.

Pour imiter les appareils mobiles réels, activez la limitation du processeur (CPU throttling) dans les paramètres de performance de DevTools. Définir un ralentissement du processeur par 4 met en évidence les goulets d’étranglement qui pourraient rester invisibles sur du matériel de développement de bureau puissant. Les outils de test synthétiques comme Lighthouse fournissent des données de laboratoire, mais les données de terrain collectées via Google Search Console ou des outils de surveillance des utilisateurs réels reflètent les expériences réelles des visiteurs à travers différentes vitesses de réseau et capacités matérielles.

Improving INP: A Practical Guide to Faster Interactions — in practice
Pourquoi les scripts tiers ruinent-ils votre score INP ?

Les scripts tiers ajoutés via des gestionnaires de balises exécutent souvent du JavaScript non coordonné pendant les pics d’activité des utilisateurs. Les traqueurs d’analyse, les outils de cartographie thermique, les widgets de chat et les pixels publicitaires traitent en continu les événements entrants ou interrogent le réseau. Lorsqu’un utilisateur clique sur un élément interactif pendant qu’une balise marketing tierce évalue des règles en arrière-plan, l’action de l’utilisateur est mise en file d’attente derrière l’exécution du suivi, poussant la latence au-delà de l’objectif de 200 ms.

L’audit des scripts tiers nécessite d’évaluer à la fois le temps de chargement et le coût d’exécution. Consolidez les fonctions de suivi dans Google Tag Manager et supprimez les balises redondantes qui collectent des données qui se chevauchent. Configurez les conditions de déclenchement afin que les balises marketing non essentielles s’exécutent après l’interaction utilisateur initiale ou pendant les périodes d’inactivité à l’aide des méthodes requestIdleCallback. Réduire la concurrence du thread principal par les scripts externes crée une marge immédiate pour les événements initiés par l’utilisateur.

Fractionnement des tâches longues sur le thread principal

Les tâches longues bloquent le thread principal et empêchent le navigateur de répondre rapidement aux entrées de l’utilisateur. Pour résoudre ce problème, les développeurs peuvent diviser manuellement les fonctions monolithiques en morceaux asynchrones plus petits. Céder le contrôle au thread principal donne au navigateur une brève fenêtre pour traiter les interactions utilisateur en file d’attente et rendre les images visuelles mises à jour avant de reprendre le calcul lourd en arrière-plan.

Les API des navigateurs modernes offrent des modèles clairs pour céder l’exécution sans perturber la logique des fonctions. L’insertion de points de cession dans les boucles longues ou les calculs en plusieurs étapes permet au thread principal de gérer immédiatement les événements de saisie entrants.

  • Utilisez scheduler.yield() dans les navigateurs compatibles pour rendre le contrôle au thread principal tout en préservant la priorité d’exécution.
  • Revenez à setTimeout avec un paramètre de délai nul pour mettre en file d’attente le travail restant dans une nouvelle macro-tâche.
  • Enveloppez les transformations de données gourmandes en processeur dans des Web Workers pour déplacer entièrement le traitement hors du thread principal.
  • Divisez les mises à jour massives du DOM en opérations par lots à l’aide de requestAnimationFrame pour aligner les modifications sur les actualisations d’images.
Comment devez-vous optimiser les gestionnaires d’événements lourds ?

Les gestionnaires d’événements attachés aux entrées utilisateur tentent souvent d’accomplir trop de tâches dans un seul bloc synchrone. Par exemple, un bouton de filtre sur une plateforme e-commerce peut mettre à jour des paramètres URL, filtrer des collections de produits, recalculer des plages de prix et déclencher des pixels de suivi en un seul événement de clic. L’exécution synchrone de toutes ces opérations bloque le rendu, laissant l’utilisateur avec une interface utilisateur figée pendant plusieurs centaines de millisecondes.

Pour corriger les gestionnaires d’événements lourds, priorisez le retour visuel immédiat par rapport à l’achèvement computationnel complet. Modifiez instantanément l’état de l’interface utilisateur — comme l’affichage d’un indicateur de chargement ou la mise à jour des états des boutons — avant d’exécuter la logique de filtrage lourde. Déplacez les effets secondaires non critiques, tels que l’envoi de pings analytiques ou la sauvegarde de l’état temporaire de l’utilisateur dans localStorage, hors de la boucle de rendu principale.

Alien Road recommande de passer en revue les écouteurs d’événements de saisie sur les composants interactifs pour séparer les changements d’état visuel du traitement en arrière-plan. Le refactoring des gestionnaires garantit que les gestes de l’utilisateur produisent des confirmations visuelles immédiates, maintenant la latence d’interaction perçue et mesurée bien en dessous de 200 ms.

  • Fournissez un retour visuel immédiat dans le gestionnaire d’événements pour accuser réception de l’action de l’utilisateur instantanément.
  • Appliquez le debounce sur les événements de saisie continus tels que le redimensionnement de la fenêtre, le défilement ou la frappe dans une recherche.
  • Séparez les mises à jour visuelles du DOM du traitement des données en arrière-plan à l’aide de micro-tâches ou de workers asynchrones.
  • Supprimez les écouteurs d’événements obsolètes ou en double enregistrés sur les éléments conteneurs parents.

Gestion des structures DOM complexes et du délai de présentation

Le délai de présentation constitue le dernier composant de la latence d’Interaction to Next Paint. Une fois l’exécution de JavaScript terminée, le navigateur doit calculer les styles calculés, mettre en page la géométrie de la page et peindre les pixels. Les grands arbres DOM contenant des milliers d’éléments augmentent la complexité du rendu, rendant même les modifications simples du DOM coûteuses à calculer.

Maintenez la taille du DOM gérable en supprimant les éléments cachés, en effectuant un rendu paresseux (lazy rendering) des listes hors écran et en appliquant des propriétés de confinement CSS modernes. Les propriétés CSS telles que contain-intrinsic-size et content-visibility: auto permettent aux navigateurs d’ignorer les calculs de style et de mise en page pour les composants hors écran jusqu’à ce qu’ils défilent dans la vue. La réduction du temps de recalcul de la mise en page diminue directement le délai de présentation lors des clics des utilisateurs.

Par où commencer pour améliorer l’INP cette semaine

L’amélioration de la réactivité des interactions nécessite une approche méthodique qui s’attaque d’abord aux goulets d’étranglement à fort impact. Commencez par auditer vos données de terrain d’utilisateurs réels dans Google Search Console sous Core Web Vitals pour identifier les URL spécifiques subissant des interactions lentes.

Ensuite, reproduisez ces retards d’interaction à l’aide du panneau Performance de Chrome DevTools avec une limitation du processeur par 4. Concentrez vos efforts d’ingénierie sur le fractionnement des tâches longues qui s’exécutent lors des clics des utilisateurs, le nettoyage des balises tierces inutiles et la cession de l’exécution du thread principal. En maintenant les scores INP à 200 ms ou moins, votre site offre une expérience réactive qui maintient l’engagement des visiteurs.

Continuer la lecture : Conception et développement web · Design web

Partager