Comment diagnostiquer les problèmes de chargement paresseux de Shopify
Avant de passer aux correctifs, confirmez que le chargement différé est réellement interrompu. Voici un diagnostic rapide de 2 minutes :
Étape 1 : Vérifiez l'onglet Réseau
- 1. Ouvrez votre boutique Shopify dans Chrome
- 2. Ouvrez DevTools (F12 ou Cmd+Opt+I sur Mac) Réseau
- 3. Accédez au
- 4. Filtrer par Img (images uniquement)
- 5. Rechargement dur : Ctrl+Maj+R (ou Cmd+Shift+R)
- 6. Comptez les demandes d'images qui se déclenchent immédiatement
- 7. Maintenant, faites défiler lentement vers le bas : de nouvelles demandes apparaissent-elles ?
Si toutes les images se chargent en même temps lors du chargement de la page : Lazy loading is not working at all.
Si certaines images se chargent lors du défilement mais que beaucoup se chargent à l'avance : Le chargement paresseux fonctionne partiellement mais certaines images sont manquées.
Si les images se chargent au fur et à mesure du défilement : Le chargement différé fonctionne – la suggestion PageSpeed peut concerner un problème différent.
Step 2: Inspect Individual Images
Cliquez avec le bouton droit sur une image ci-dessous → Inspecter. Vérifiez le
Balise pour :
Étiquette
chargement="paresseux" → Native lazy loading is set
class="lazyload" ou data-src="..." → Chargement paresseux de JavaScript (peut fonctionner mais ajoute une surcharge)
Attribut
Non chargement
Attribut → Image chargée avec impatience par défaut
Vous pouvez également effectuer une vérification rapide auprès de notre test de vitesse Shopify gratuit — il signale automatiquement les problèmes d'image différés.
Ignorer le dépannage : Thunder résout automatiquement les 8 problèmes
Chaque correctif ci-dessous nécessite une édition du code du thème, du temps de développement et une maintenance continue. Thunder Page Speed Optimizer gère le chargement paresseux, le report de script, le CSS critique et l'optimisation des polices en une seule installation - quelle que soit la configuration de votre thème ou de votre application.
- ✦ Fonctionne avec n'importe quel thème — chargement paresseux ancien, nouveau, personnalisé ou cassé
- ✦ Handles app-injected content — diffère les scripts et optimise les ressources ajoutées par les applications
- ✦ Détection automatique du LCP — ne charge jamais paresseusement ce qui devrait être impatient
- ✦ Amélioration du score de vitesse moyen de plus de 27 points
Correctif 1 : votre thème n'est pas utilisé image_tag
Le filtre
Le problème : De nombreux thèmes Shopify, en particulier ceux créés avant 2022 ou ceux fortement personnalisés, utilisent des thèmes bruts.
Balises au lieu de celles de Shopify
Étiquette
image_tag
Le filtre Filtre à liquide. Sans image_tag
Le filtre, il n'y a pas de chargement paresseux automatique, pas de réponse srcset
Attributs, et pas de livraison WebP.
Comment vérifier : Ouvrez votre code de thème (Boutique en ligne → Thèmes → Modifier le code) et recherchez image_tag
Le filtre dans les fichiers de section. Si vous trouvez majoritairement cru <img src= à la place, votre thème n'utilise pas le pipeline d'images moderne de Shopify.
Le correctif : Remplacer brut
Balises avec le
Filtre
Étiquette
image_tag
Le filtre . Cela nécessite de modifier les fichiers Liquid dans votre thème :
Avant :
<img src="{{ image | image_url: width: 800 }}" alt="{{ image.alt }}" /> Après :
{{ image | image_url: width: 800 | image_tag: loading: "lazy", alt: image.alt }}
Pour le guide complet d'implémentation du chargement paresseux natif, y compris section.index logique, voir notre Guide de chargement paresseux natif de Shopify.
Correctif 2 : les images injectées par l'application contournent le chargement paresseux de votre thème
Le problème : Chaque application Shopify qui ajoute des éléments visuels — widgets d'avis (Judge.me, Loox), badges de confiance (Trust Hero), popups de vente incitative (ReConvert), widgets de discussion (Tidio) — injecte son propre code HTML et ses propres images directement dans la page. Ces images sont non rendu via les modèles Liquid de votre thème, afin que la logique de chargement paresseux de votre thème ne les touche jamais.
La boutique Shopify moyenne compte 6 à 8 applications. Chacun peut injecter 1 à 5 images plus JavaScript. Cela représente potentiellement plus de 30 images et scripts qui se chargent avec impatience et que votre thème ne peut pas contrôler.
Comment vérifier : Dans DevTools, regardez les images ci-dessous qui ont été chargées immédiatement. Cliquez avec le bouton droit → Inspecter. Si l'image est enveloppée dans un <div> avec une classe spécifique à l'application (comme widget-jdgm ou widget-loox) plutôt que dans la section HTML de votre thème, il est injecté par l'application.
Le correctif : C'est le problème le plus difficile à résoudre manuellement. Possibilités :
Contacter chaque développeur d'application et demandez-leur d'ajouter chargement="paresseux" à leurs images injectées. Certains le feront, mais la plupart n’y donneront pas la priorité.
Écrire du JavaScript personnalisé qui trouve les images injectées par l'application après le chargement de la page et ajoute l'attribut paresseux. Ceci est fragile et se brise lorsque les applications mettent à jour leur code.
Utiliser une application d'optimisation de vitesse qui gère les scripts d'application au niveau du réseau, reportant les charges utiles entières de l'application jusqu'à ce qu'elles soient nécessaires. C'est ce que Thunder le fait automatiquement.
Correctif 3 : JavaScript et le chargement différé natif sont en conflit
Le problème : Certains thèmes incluent une bibliothèque de chargement paresseux JavaScript (comme lazysizes) et natif
Attributs chargement="paresseux" . Cela crée un double traitement : l'IntersectionObserver natif du navigateur se déclenche, et la bibliothèque JS exécute son propre observateur. Le résultat peut être des images qui clignotent, se chargent deux fois ou, dans certains cas, ne se chargent jamais du tout.
Cela se produit également lorsque les commerçants installent une application de chargement différé au-dessus d'un thème qui dispose déjà d'un chargement différé natif.
Comment vérifier : Recherchez les deux sur la même image :
- •
chargement="paresseux"(natif) - •
class="lazyload"oudonnées-src(bibliothèque JavaScript)
Si vous voyez les deux, il y a un conflit. Recherchez également lazysizes.js ou des bibliothèques similaires dans le dossier des ressources de votre thème.
Le correctif : Supprimez la bibliothèque de chargement paresseux JavaScript et comptez sur le natif chargement="paresseux" à la place. En 2026, le chargement paresseux natif a 96 %+ de prise en charge du navigateur — there's no reason to add a JS library. Remove the library script from your theme and convert any données-src renvoie les attributs à src
Attributs avec chargement="paresseux".
Avant (chargement paresseux JS) :
<img data-src="product.jpg" class="lazyload" alt="Produit" /> Après (chargement différé natif) : L'attribut
<img src="product.jpg" loading="lazy" alt="Produit" width="600" height="400" /> Correctif 4 : les images d'arrière-plan CSS ne peuvent pas être chargées paresseusement
Le problème : Le chargement="paresseux" ne fonctionne que sur et
Étiquette
. Images définies via CSS image d'arrière-plan
Les sont toujours téléchargés dès que le CSS est analysé, même si l'élément est bien en dessous de la ligne de flottaison.
De nombreux thèmes utilisent des images d'arrière-plan CSS pour les sections de héros, les superpositions de bannières, les effets de parallaxe et les motifs décoratifs. Ceux-ci sont invisibles au chargement paresseux natif.
Comment vérifier : Dans DevTools, recherchez les images dans l'onglet Réseau qui ont été chargées immédiatement mais qui ne sont pas visibles à l'écran. Cliquez sur l'URL de l'image → vérifiez si elle est référencée dans un fichier CSS plutôt que dans un HTML
Balise .
Étiquette
Le correctif : Deux approches :
Option A : Convertir en balises
Remplacez les images d'arrière-plan CSS par les images réelles éléments positionnés avec CSS (en utilisant
Étiquette
ajustement d'objet : couverture et positionnement absolu). Cela vous permet d'ajouter chargement="paresseux".
Option B : JavaScript IntersectionObserver
Écrivez un JS personnalisé qui surveille les sections inférieures entrant dans la fenêtre, puis applique dynamiquement le image d'arrière-plan
Les CSS. Plus complexe mais préserve votre structure de mise en page existante.
Pour les sections de héros au-dessus de la ligne de flottaison, les images d'arrière-plan CSS conviennent : elles devrait se charge immédiatement. Le problème vient des sections ci-dessous utilisant des images d’arrière-plan. Apprenez-en davantage sur l’optimisation de tous les types d’images dans notre Guide d'optimisation des images Shopify.
Correctif 5 : sections personnalisées manquant le
Attribut chargement
Attribut
Le problème : Les sections par défaut de votre thème peuvent gérer correctement le chargement différé, mais les sections personnalisées (ajoutées par les développeurs ou les applications de création de sections) l'ignorent souvent. Une seule section personnalisée avec des images chargées avec impatience peut charger 5 à 10 images supplémentaires sur chaque page.
Comment vérifier : Inspect images in different sections of your page. Pay attention to sections that look different from the theme's default style — these are likely custom additions. Check each one for chargement="paresseux".
Le correctif : Modifiez chaque fichier de section personnalisée et ajoutez le section.index logique :
{'{%- liquid'}
{' if section.index > 2'}
{' assign loading = "lazy"'}
{' else'}
{' assign loading = "eager"'}
{' endif'}
{'-%}'}
{'{{ section.settings.image | image_url: width: 1200 | image_tag: loading: loading }}'}
Appliquez ceci à chaque section personnalisée qui affiche des images. Pour un aperçu de la façon dont section.index fonctionne et quand l'utiliser chargement paresseux ou impatient, voir notre guide comparatif.
Correctif 6 : votre thème charge paresseusement les images au-dessus du pli (ce qui fait mal au LCP)
Le problème : C'est le problème inverse — et ironiquement, c'est pire que de ne pas avoir de chargement paresseux du tout. Certains thèmes s'appliquent chargement="paresseux" à tous les
Page , comprenant la bannière du héros et la photo principale du produit. Cela oblige le navigateur à exécuter IntersectionObserver avant de télécharger votre image la plus importante, ajoutant ainsi 200 à 1 000 ms à votre LCP.
⚠️ Cela vous coûte 1 seconde de LCP
L'équipe de performance de Shopify a mesuré un Pénalité LCP médiane de 1,0 seconde pour les magasins qui chargent paresseusement leur image LCP. Votre image de héros devrait toujours chargement impatient.
Comment vérifier : Accédez à votre page d'accueil. Faites un clic droit sur votre image de héros/bannière → Inspecter. Si tu vois chargement="paresseux", ça fait mal à ton LCP. Faites de même pour l’image principale du produit sur une page produit.
Le correctif : Remplacez les images au-dessus de la ligne de flottaison par un chargement rapide et ajoutez-les fetchpriority="haut" à votre image LCP :
{'{{ section.settings.hero_image | image_url: width: 1400 | image_tag: loading: "eager", fetchpriority: "high" }}'}
Pour un dépannage détaillé du LCP, consultez notre Guide d'optimisation Shopify LCP.
Correctif 7 : la largeur et la hauteur manquantes provoquent un changement de disposition
Le problème : Images chargées paresseusement sans cause de dimensions explicites Changement de mise en page cumulatif (CLS). Avant le chargement de l’image, le navigateur ne lui réserve aucun espace. Lorsque l'image est finalement téléchargée, la page saute en poussant le contenu vers le bas. Les visiteurs voient du texte alternatif dans un petit espace effondré, puis un changement visuel soudain – une expérience terrible.
Comment vérifier : Dans DevTools, surveillez les sauts de mise en page lorsque vous faites défiler. Vous pouvez également exécuter un audit Lighthouse : les problèmes CLS seront signalés par « Les éléments de l'image n'ont pas de largeur et de hauteur explicites ». Attributs
Le correctif : Toujours inclure largeur et hauteur
Attributs sur les images, ou utilisez CSS rapport hauteur/largeur
Propriété:
Option A : Attributs HTML
<img src="product.jpg" loading="lazy" alt="Produit" width="600" height="400" />
Option B : format d'image CSS
.product-image {'{'}
rapport d'aspect : 3 / 2 ;
largeur : 100 % ;
ajustement d'objet : couverture ;
Le filtre
{'}'}
Conseil de pro : Shopify image_tag
Le filtre ajoute automatiquement les attributs de largeur et de hauteur. Si vous utilisez du brut
Balises , vous devez les ajouter vous-même. C'est une raison de plus pour utilise le filtre image_tag natif de Shopify.
Étiquette
Correctif 8 : Compatibilité Safari et navigateur
Le problème : Safari added native lazy loading support in version 15.4 (March 2022). If you're testing in an older Safari version, lazy loading won't work. More commonly, Safari's lazy loading threshold is different from Chrome's — Safari starts loading lazy images earlier (further from the viewport), which can make it seem like lazy loading isn't working on Apple devices.
Comment vérifier : Si le chargement différé fonctionne dans Chrome mais pas dans Safari, vérifiez la version de Safari. Notez également que l'implémentation d'IntersectionObserver de Safari a des marges racine légèrement différentes : les images peuvent commencer à charger 2 à 3 hauteurs d'écran avant d'entrer dans la fenêtre d'affichage.
Le correctif : Dans la plupart des cas, le comportement de Safari est en fait correct : il est simplement plus agressif en matière de préchargement. Si vous avez besoin d'une parité exacte entre les navigateurs, vous aurez besoin d'un chargement paresseux basé sur JavaScript avec des seuils explicites, mais le chargement paresseux natif avec des seuils par défaut du navigateur est l'approche recommandée en 2026.
Pour les vraiment paranoïaques, cochez caniuse.com/loading-lazy-attr pour la prise en charge actuelle du navigateur : elle est de plus de 96 % à l'échelle mondiale, couvrant pratiquement tous les acheteurs Shopify.
Quand arrêter le dépannage DIY
Si 2 à 3 de ces problèmes se produisent simultanément (ce qui est courant dans les magasins proposant des thèmes plus anciens et plusieurs applications), les résoudre manuellement devient peu pratique. Chaque correctif nécessite des modifications du code du thème qui peuvent être interrompues lors des mises à jour du thème, et le contenu injecté par l'application est essentiellement hors de votre contrôle.
C'est ici qu'un gagne sa place. Au lieu de corriger des problèmes individuels, vous obtenez une solution qui gère l'ensemble de la pile d'optimisation (images, scripts, CSS, polices) sur n'importe quel thème et n'importe quelle combinaison d'applications.
Pas prêt pour une application ? Au minimum, effectuez un test de vitesse gratuit pour comprendre votre base de référence actuelle et identifier les problèmes qui ont réellement le plus d'impact sur vos performances. Pour des conseils d'optimisation plus larges, notre guide complet d'optimisation de la vitesse Shopify couvre chaque technique en détail.
Foire aux questions
{item.question}
{item.answer}
Faites fonctionner correctement votre chargement différé Shopify
Lazy loading issues on Shopify almost always come down to theme implementation gaps, app conflicts, or incorrect above-fold behavior. The fixes range from simple (adding chargement="paresseux" à quelques images) à complexe (refonte des sections personnalisées et gestion du contenu injecté par l'application).
N'oubliez pas : même le chargement paresseux parfait ne concerne que la livraison d'images. Scripts bloquant le rendu et CSS non optimisés causent souvent plus de dégâts que les images non différées. Une approche globale – gestion conjointe des images, des scripts, du CSS et des polices – donne les meilleurs résultats.
Commencez ici : Testez la vitesse de votre boutique pour voir exactement ce qui affecte les performances, puis appliquez les correctifs ci-dessus - ou laissez Thunder le gère automatiquement. Les forfaits commencent à 19,99$/mois avec un essai gratuit.