Éléments essentiels du Web · Mis à jour le 20 avril 2026

Correction de Shopify CLS : 6 correctifs éprouvés pour le changement de mise en page (2026)

Changement de mise en page cumulatif (CLS) mesure à quel point le contenu de votre page se déplace de manière inattendue lors du chargement. Google veut un CLS inférieur à 0,1. Les changements de mise en page frustrent les visiteurs, provoquent des erreurs de clic et nuisent à votre classement dans les recherches. Voici comment réparer CLS sur votre boutique Shopify, étape par étape.

~13 min de lecture · 2 800 mots · Exemples de code inclus

Qu'est-ce que CLS et pourquoi est-ce important pour Shopify ?

Cumulative Layout Shift (CLS) est l'un des trois Core Web Vitals — les métriques qui influencent directement votre classement dans les recherches et mesurent l'expérience utilisateur réelle. Tandis que LCP mesure la vitesse de chargement du contenu et INP mesure l'interactivité, mesures CLS stabilité visuelle — si les éléments de votre page restent en place ou sautent de manière inattendue.

Imaginez ceci : un client est sur le point d'appuyer sur "Ajouter au panier" sur votre page produit lorsque soudainement un widget d'avis se charge au-dessus, en appuyant sur le bouton vers le bas. Ils cliquent accidentellement sur un autre lien et quittent votre boutique. C'est un problème CLS – et cela vous coûte de réels revenus.

CLS est calculé en multipliant le fraction d'impact (dans quelle mesure la fenêtre d'affichage a été décalée) par le fraction de distance (jusqu'où les éléments se sont déplacés). Le score est sans unité – et non mesuré en secondes ou en millisecondes comme LCP et INP.

≤ 0.1

Bon

0.1–0.25

Besoin d'amélioration

> 0.25

Mauvais

Pourquoi CLS est important pour votre boutique Shopify :

  • Classements SEO : Google utilise CLS comme signal de classement — un CLS médiocre signifie des positions de recherche inférieures
  • Conversions : Les changements de mise en page provoquent des erreurs de clic qui frustrent les clients et augmentent le taux de rebond
  • Confiance des utilisateurs : Les pages qui sautent semblent cassées et non polies
  • Impact mobile : CLS est généralement pire sur mobile où les écrans sont plus petits et les décalages sont plus visibles

La bonne nouvelle ? Contrairement à LCP, qui dépend en partie de l'infrastructure serveur de Shopify, CLS est presque entièrement sous votre contrôle. La plupart des correctifs CLS impliquent des modifications CSS et des attributs HTML appropriés – aucune mise à niveau du serveur n'est nécessaire. Selon une analyse HTTP Archive de 2026, 38 % des magasins Shopify ont encore un CLS « médiocre » sur mobile – donc réparer le vôtre vous donne une longueur d'avance sur la concurrence. Vous souhaitez vérifier votre score CLS actuel ? Exécutez un test de vitesse gratuit sur votre boutique et comparer avec Benchmarks de vitesse Shopify.

La solution facile : optimisation automatique du CLS

Avant de plonger dans les modifications manuelles du thème, il existe une approche plus rapide. Thunder Page Speed Optimizer répond automatiquement à plusieurs des causes les plus courantes de CLS élevé dans les magasins Shopify.

Comment Thunder réduit le CLS :

Différé de script intelligent

Diffère les scripts d'applications tierces qui injectent du contenu tardivement, réduisant ainsi les changements de mise en page après le chargement

Optimisation des polices

Implémente l'affichage des polices : échange et préchargement pour minimiser les décalages de redistribution du texte

Inline CSS critique

Inlines above-the-fold CSS to prevent late-arriving stylesheets from causing shifts

Chargement sensible aux dépendances

Gère l'ordre de chargement des scripts afin que les widgets d'application s'initialisent sans déplacer le contenu de la page

Amélioration moyenne : +27 points PageSpeed

Thunder aborde CLS aux côtés de LCP et INP – la plupart des magasins voient les trois Core Web Vitals s'améliorer quelques minutes après avoir activé les optimisations.

Corrigez votre score CLS maintenant →

Plan gratuit disponible · Aucune carte de crédit requise · Configuration en 30 secondes · Fonctionne avec tous les thèmes

Vous préférez le faire vous-même ? Continuez à lire ↓

Comment mesurer le score CLS de votre boutique Shopify

Avant de corriger CLS, vous devez connaître votre score actuel et identifier exactement quels éléments changent. Voici les meilleurs outils pour les magasins Shopify :

PageSpeed Insights (point de départ recommandé)

Aller à pagespeed.web.dev ou utilisez notre test de vitesse Shopify gratuit. Regardez deux sections :

  • Données de terrain (top) — Real user CLS from Chrome users over 28 days. This is what Google uses for rankings.
  • Données de laboratoire — Simulated CLS from a controlled test. Only captures load-time shifts, not post-load.

Faites défiler jusqu'à la section Diagnostics et recherchez "Éviter les grands changements de disposition" — il répertorie chaque élément qui a changé et sa contribution individuelle à CLS.

Panneau de performances de Chrome DevTools

Ouvrez DevTools (F12), accédez à l'onglet Performances, cochez « Web Vitals » et enregistrez un rechargement de page. La chronologie montre un Piste des changements de disposition avec des barres violettes mettant en évidence chaque événement d'équipe :

  • Cliquez sur n'importe quel marqueur de décalage pour voir exactement quel élément s'est déplacé et de combien
  • Les diamants plus gros indiquent des changements plus importants — concentrez-vous d'abord sur ceux-ci
  • Le panneau Résumé affiche le score de changement, les éléments affectés et le timing.

Conseil de pro : Utilisez la vue Live Metrics dans le panneau de performances pour interagir avec votre page et détecter les problèmes CLS après chargement qui n'apparaissent que lors du défilement ou du clic.

Google Search Console

Sous Expérience → Core Web Vitals, vous verrez les performances de vos pages sur les trois mesures. La Search Console regroupe les pages par statut (Bon / Nécessite une amélioration / Mauvais) et utilise des données utilisateur réelles. Il s'agit du meilleur outil pour suivre les améliorations CLS sur l'ensemble de votre site au fil du temps. N'oubliez pas : les données utilisent une moyenne mobile sur 28 jours, il faut donc environ un mois pour que les améliorations soient pleinement reflétées.

Observateur de performances JavaScript (avancé)

Pour déboguer des équipes spécifiques, collez ceci dans la console de votre navigateur tout en parcourant votre boutique :

new PerformanceObserver((entryList) => {
  for (const entry of entryList.getEntries()) {
    if (!entry.hadRecentInput) {
      console.log('CLS shift:', entry.value.toFixed(4));
      for (const source of entry.sources) {
        console.log('  Element:', source.node);
      }
    }
  }
}).observe({ type: "layout-shift", buffered: true });

Ceci enregistre chaque changement de disposition au fur et à mesure qu'il se produit, y compris l'élément DOM spécifique qui a été déplacé. Faites défiler votre page pour détecter les changements de post-chargement manqués par PageSpeed ​​Insights.

Correctif n°1 : ajouter des dimensions à toutes les images

Les images sans attributs explicites de largeur et de hauteur sont les #1 cause of CLS, représentant environ 60 % de tous les problèmes de changement de disposition. Lorsque le navigateur affiche votre page pour la première fois, il ne sait pas quelle sera la hauteur d'une image. Il s'affiche donc avec une hauteur nulle. Lorsque l'image se charge, tout ce qui se trouve en dessous saute.

Le problème

De nombreux thèmes Shopify génèrent des images sans dimensions, en particulier dans les grilles de produits, les pages de collection et les images présentées dans les articles de blog. Le navigateur n'alloue aucun espace, puis déplace le contenu lorsque les images arrivent.

Le correctif : attributs de largeur et de hauteur

Ajouter largeur et hauteur Attributs attributs à chaque Balise Étiquette . Cela indique au navigateur le rapport hauteur/largeur afin qu'il puisse réserver l'espace correct avant le chargement de l'image :

<img src="product.jpg" alt="Photo du produit">

<img src="product.jpg" alt="Photo du produit" width="800" height="600">

Ensuite, dans votre CSS, assurez-vous que les images évoluent de manière réactive sans rompre les proportions :

img {
  max-width: 100%;
  height: auto;
}

Shopify Liquid : utilisez image_tag

Si vous modifiez des fichiers de thème Liquid, l'approche la plus simple consiste à utiliser l'outil de Shopify. image_tag Le filtre , qui ajoute automatiquement les attributs de largeur et de hauteur :

{{ product.featured_image | image_url: width: 800 | image_tag }}

Cela génère un Étiquette tag with proper width, height, and srcset attributes — eliminating CLS from product images automatically.

Alternative : format d'image CSS

Pour les conteneurs d'images pour lesquels vous souhaitez un rapport hauteur/largeur fixe quelles que soient les dimensions réelles de l'image (comme les grilles de produits), utilisez le CSS rapport hauteur/largeur Propriété :

.product-card__image {
  aspect-ratio: 1 / 1;  /* Square */
  width: 100%;
  object-fit: cover;
}

Ceci est particulièrement utile pour les grilles de collection où vous souhaitez des hauteurs de cartes uniformes — le navigateur réserve de l'espace pour le rapport hauteur/largeur exact, et ajustement d'objet : couverture recadre l'image pour l'adapter.

Correctif n°2 : réserver de l'espace pour le contenu injecté par l'application

Les applications Shopify qui injectent du contenu dans votre vitrine (étoiles d'avis, badges de confiance, barres d'annonces, icônes de paiement, compteurs d'inventaire) sont la deuxième cause la plus importante de CLS. Ces applications se chargent via JavaScript, ce qui signifie que leur contenu apparaît après la page a déjà été rendue. Lorsque le contenu apparaît, tout autour change.

Blocs d'application : utilisez la hauteur minimale

Pour les applications qui utilisent Extensions d'application thématique (blocs d'application), vous pouvez définir une hauteur minimale sur leur conteneur à l'aide de CSS personnalisé dans l'éditeur de thème. Sélectionnez la section parent du bloc d'application, puis ajoutez :

/* Reserve space for app block content */
.shopify-app-block {
  min-height: 24px; /* Adjust to match your app's rendered height */
}

Mesurez la hauteur réelle rendue du contenu de l'application (utilisez DevTools → inspecter l'élément → vérifiez la hauteur), puis définissez hauteur min à cette valeur. Même si la hauteur exacte varie, le réglage d'un minimum réduit réduit considérablement la distance de changement de vitesse.

Scripts non-App-Block : solutions de contournement CSS

Certaines applications injectent toujours du contenu via l'ancienne API ScriptTag (et non des blocs d'application). Ce sont plus difficiles à réparer. Vous devrez identifier le sélecteur de l'élément injecté et réserver de l'espace avec CSS. Par exemple, si un widget d'avis s'injecte au-dessus de la description de votre produit :

/* Reserve space for a review widget that loads late */
:not(.review-widget-wrapper) + .product__description {
  margin-top: 80px; /* Height of the review widget */
}

Cette approche est fragile : si l'application modifie sa structure HTML ou si vous déplacez le widget, le CSS se brise. Une alternative plus maintenable : déplacer le contenu de l'application en dessous du pli où les changements ont moins d'impact sur CLS, ou passez à une application prenant en charge les blocages d'applications.

Barres et bannières d'annonce

Les barres d'annonces qui apparaissent en haut de la page sont une source CLS classique. Lorsqu'ils se chargent tardivement, chaque élément de la page se déplace vers le bas. Deux approches :

  • Rendu côté serveur : Utilisez la barre d'annonce intégrée de votre thème (rendu en Liquid, pas en JavaScript) au lieu d'une application tierce
  • Réservez l'espace : Ajoutez un espace réservé à hauteur fixe dans l'en-tête de votre thème qui correspond à la hauteur de la bannière
/* Reserve 40px for announcement bar */
.header-wrapper {
  padding-top: 40px;
}

Correctif n°3 : optimiser le chargement des polices Web pour empêcher CLS

Les polices Web provoquent CLS via un phénomène appelé FOUT (Flash de texte sans style). Lorsque votre police personnalisée n'est pas encore chargée, le navigateur affiche le texte dans une police système de secours. Lorsque la police personnalisée arrive, le texte est restitué – et comme les deux polices ont des mesures différentes (largeur des caractères, hauteur de ligne, espacement des lettres), le texte se déplace, repoussant le contenu environnant.

Étape 1 : Utiliser font-display : swap (ou facultatif)

Dans votre @font-face déclarations, ensemble affichage des polices : échange pour afficher immédiatement le texte de secours, puis passez à la police personnalisée lorsque vous êtes prêt :

@font-face {
  font-family: 'YourBrandFont';
  src: url('/fonts/brand-font.woff2') format('woff2');
  font-display: swap;
  font-weight: 400;
}

Pour un CLS minimal, affichage des polices : facultatif est encore mieux : il n'utilise la police personnalisée que si elle se charge dans un délai d'environ 100 ms, sinon elle s'en tient à la solution de secours. Aucun échange de police ne signifie pas de CLS, mais votre police personnalisée peut ne pas s'afficher sur les connexions lentes.

Étape 2 : Précharger les polices critiques

Ajoutez des astuces de préchargement pour vos fichiers de polices les plus importants dans votre thème <head>:

<link rel="preload" href="/fonts/brand-font.woff2" as="font" type="font/woff2" crossorigin>

Préchargez uniquement 1 à 2 polices (votre titre principal et votre police de corps). Précharger trop de polices gaspille de la bande passante et peut ralentir d’autres ressources critiques.

Étape 3 : Faire correspondre les métriques de police de secours

Le CSS ajustement de la taille, neutralisation de la montée, et neutralisation de la descente Les propriétés vous permettent d'ajuster votre police de secours pour qu'elle corresponde aux métriques de votre police personnalisée, minimisant ainsi le décalage lorsque l'échange se produit :

@font-face {
  font-family: 'BrandFallback';
  src: local('Arial');
  size-adjust: 105%;
  ascent-override: 95%;
  descent-override: 22%;
  line-gap-override: 0%;
}

Des outils comme Générateur de polices de secours peut calculer ces valeurs de remplacement pour vos polices spécifiques. Il s’agit de l’un des correctifs CLS les plus efficaces pour les thèmes Shopify contenant beaucoup de polices. Pour une analyse plus approfondie des performances des polices, consultez notre guide complet d'optimisation de la vitesse Shopify.

Correctif n°4 : empêcher les changements CSS tardifs

Lorsque CSS se charge après que le rendu de la page a déjà commencé, le navigateur recalcule les mises en page, ce qui entraîne le saut du contenu à mesure que de nouveaux styles sont appliqués. Cela se produit généralement avec :

  • Fichiers CSS chargés via @import dans d'autres fichiers CSS (chargement chaîné)
  • Feuilles de style d'applications tierces qui se chargent de manière asynchrone
  • Styles injectés en JavaScript (communs avec les composants React/Vue dans les thèmes)

Le correctif : CSS critique en ligne

Insérez le CSS nécessaire pour le contenu au-dessus de la ligne de flottaison directement dans votre <head>. This ensures the browser has all the styles it needs for the initial render — no shifts from late-arriving stylesheets.

L'extraction et l'intégration manuelles de CSS critiques sont complexes et sujettes aux erreurs. C'est là que Thunder brille : il identifie et intègre automatiquement les CSS critiques pour chaque type de page, puis reporte le reste. Le résultat : aucun changement de mise en page lié au CSS sans aucun travail manuel.

Évitez CSS @import

Si votre thème ou vos applications utilisent @import dans les fichiers CSS, remplacez-les par Balises Balises dans le HTML. @import crée une cascade : le navigateur télécharge le CSS, découvre l'importation, puis télécharge plus CSS. Chaque étape risque un recalcul et un déplacement de la disposition. En savoir plus sur correction des ressources bloquant le rendu sur Shopify.

Correctif n°5 : utilisez les transformations CSS au lieu des animations déclenchant la mise en page

Animations qui modifient l'apparence d'un élément haut, gauche, largeur, hauteur Attributs, , ou Rembourrage déclenche des recalculs de disposition qui comptent comme CLS. Utilisez plutôt Transformation et opacité — ceux-ci sont gérés par le compositeur GPU et ne provoquent pas de changements de disposition.

/* ❌ Bad: Triggers layout shift */

.slide-in {
  animation: slideIn 0.3s ease;
}
@keyframes slideIn {
  from { margin-left: -100px; }
  to { margin-left: 0; }
}

/* ✅ Good: No layout shift */

.slide-in {
  animation: slideIn 0.3s ease;
}
@keyframes slideIn {
  from { transform: translateX(-100px); }
  to { transform: translateX(0); }
}

Auditez le CSS de votre thème pour toutes les animations utilisant les propriétés de déclenchement de la mise en page. Les coupables courants : les barres d'annonces coulissantes, les menus de navigation étendus et les effets de zoom sur l'image du produit. Vérifiez également tout scripts tiers qui ajoute des effets d'animation.

Correctif n°6 : stabiliser les diaporamas et les carrousels

Les diaporamas Hero et les carrousels de produits sont une source fréquente de CLS. Le JavaScript du carrousel s'initialise après le chargement de la page, calcule les dimensions de la diapositive et réorganise les éléments, provoquant souvent des décalages visibles.

Réservez la hauteur du diaporama

Définissez un rapport hauteur/largeur fixe ou une hauteur minimale sur votre conteneur de diaporama afin que le navigateur réserve l'espace correct avant l'initialisation de JavaScript :

.slideshow-container {
  aspect-ratio: 16 / 9;  /* Or your preferred ratio */
  width: 100%;
  overflow: hidden;
  background-color: #f5f5f5; /* Prevent flash of empty space */
}

Rendre la première diapositive côté serveur

La plupart des thèmes Shopify modernes (comme Dawn) affichent la première diapositive dans Liquid afin qu'elle s'affiche immédiatement, puis JavaScript prend le relais pour les transitions. Si votre thème affiche uniquement les diapositives via JavaScript, envisagez de procéder à une restructuration pour afficher la première diapositive en HTML/Liquide : cela élimine complètement le décalage initial.

Pensez à supprimer entièrement le diaporama. Plusieurs études montrent que les diaporamas de héros sont souvent moins performants qu'une seule image de héros statique en termes de conversions et de performances. Si votre diaporama pose des problèmes CLS tenaces, un héros statique bien conçu peut en fait améliorer à la fois votre et vos Core Web Vitals. Pour en savoir plus sur l'optimisation de vos images de héros, consultez notre Guide d'optimisation des images Shopify. Un CLS élevé augmente également taux de rebond, ce qui vous coûte des revenus.

Correctifs manuels CLS vs Thunder : comparaison côte à côte

Voici comment l'approche manuelle se compare au fait de laisser Thunder gérer automatiquement l'optimisation CLS :

Correctif CLS Approche manuelle Approche Thunder
Dimensions de l'image Modifiez les modèles Liquid, ajoutez de la largeur/hauteur à chaque balise img Gestion intelligente des images avec dimensionnement réactif
Contenu injecté par l'application Identifiez le DOM de chaque application, écrivez des règles de hauteur minimale CSS personnalisées Diffère les scripts non critiques pour éviter les décalages après chargement
Chargement de la police Modifiez les règles @font-face, ajoutez des conseils de préchargement, calculez les valeurs d'ajustement de la taille Optimisation et préchargement automatiques de l'affichage des polices
CSS critique Extraire et intégrer manuellement le CSS au-dessus de la ligne de flottaison Extraction et inline CSS critiques automatisées
Temps de mise en œuvre 2 à 8 heures (varie selon la complexité du thème) 30 secondes (installation en un clic)
Entretien Doit refaire après les mises à jour du thème ou l'ajout de nouvelles applications S'adapte automatiquement aux changements de thème et d'application

Les correctifs manuels vous donnent un contrôle total mais nécessitent une maintenance continue. Thunder gère automatiquement les optimisations les plus percutantes et s'adapte à mesure que votre magasin évolue. De nombreux marchands combinent les deux : installez Thunder pour le gros du travail, puis appliquez des correctifs manuels pour les problèmes spécifiques à un thème. Voir les plans tarifaires Thunder.

Foire aux questions

Qu'est-ce qu'un bon score CLS pour Shopify ?

Google considère un score CLS inférieur à 0,1 comme « bon », 0,1 à 0,25 comme « à améliorer » et supérieur à 0,25 comme « mauvais ». La plupart des magasins Shopify bien optimisés peuvent atteindre un CLS inférieur à 0,1 sur ordinateur et inférieur à 0,15 sur mobile. Contrairement à LCP, qui est limité par l'infrastructure de Shopify, CLS est presque entièrement sous votre contrôle grâce à un dimensionnement d'image approprié, des techniques CSS et des stratégies de chargement de polices.

Qu'est-ce qui cause un CLS élevé sur les magasins Shopify ?

The most common causes of high CLS on Shopify are: images without explicit width and height attributes (accounting for ~60% of CLS issues), dynamically injected content from third-party apps (review widgets, announcement bars, payment badges), late-loading web fonts that cause text to reflow (FOUT), CSS that arrives after initial render, and slideshow or carousel components that resize during initialization.

CLS affecte-t-il les classements SEO ?

Oui. CLS est l'un des trois Core Web Vitals de Google (aux côtés de LCP et INP) qui servent de signaux de classement. Les pages avec de « bons » scores CLS (inférieurs à 0,1) bénéficient d'un avantage de classement par rapport aux pages avec une mauvaise stabilité visuelle. Dans le commerce électronique, CLS a également un impact direct sur les conversions : les changements de mise en page peuvent amener les utilisateurs à cliquer sur de mauvais boutons, à abandonner leur panier ou à quitter complètement le site.

Les applications Shopify peuvent-elles provoquer des problèmes CLS ?

Absolument. Les applications Shopify tierces sont l'une des principales causes du CLS. Les applications qui injectent du contenu dans votre vitrine (widgets d'évaluation, badges de confiance, barres d'annonces, comptes à rebours et fenêtres contextuelles de vente incitative) se chargent souvent via JavaScript après le rendu de la page. Lorsque leur contenu apparaît, il déplace les éléments existants. Thunder aide en différant les scripts d'application non critiques et en gérant leur séquence de chargement.

Comment trouver la cause du CLS sur ma boutique Shopify ?

Utilisez Google PageSpeed ​​Insights (pagespeed.web.dev) — faites défiler jusqu'au diagnostic « Éviter les changements de mise en page importants » pour voir exactement quels éléments ont changé et dans quelle mesure. Le panneau Performances de Chrome DevTools affiche également les changements de disposition dans une piste dédiée. Pour les données de terrain, consultez Google Search Console sous Expérience → Core Web Vitals. Vous pouvez également utiliser notre outil de test de vitesse gratuit sur Thunderpagespeed.com/tools/speed-test/ pour une vérification rapide.

La réparation de CLS nécessite-t-elle des connaissances en codage ?

Certains correctifs CLS sont simples (ajout de largeur/hauteur aux images), tandis que d'autres nécessitent des connaissances CSS et Liquid (réservation d'espace pour le contenu dynamique, mise en œuvre de stratégies d'affichage des polices). Si vous n'êtes pas à l'aise avec la modification du code du thème, Thunder Page Speed ​​Optimizer gère automatiquement les correctifs CLS les plus importants, y compris l'optimisation des polices, le report des scripts pour éviter les décalages injectés tardivement et le chargement intelligent des ressources.

Pourquoi mon CLS est-il pire dans Google Search Console que dans PageSpeed ​​Insights ?

PageSpeed Insights lab data only measures CLS during initial page load. Google Search Console uses real user data (CrUX) that captures CLS throughout the entire page lifecycle — including shifts from scrolling, lazy-loaded content, and user interactions. Post-load CLS from app widgets, cookie banners, and dynamically loaded sections often accounts for the difference.

Do It Yourself

Free plan · 1-click install · Instant results

Install Thunder Free →

Done For You

Core Web Vitals guarantee · 2-week delivery · 6 months Thunder free

Get Expert Optimization →

Starting from €1,500