Shopify vous donne un bon hébergement, un CDN mondial et des themes modernes avec des réglages par défaut sensés. Et pourtant la boutique Shopify médiane échoue encore à atteindre « Bon » sur les trois Core Web Vitals en même temps, les boutiques de milieu de gamme se situant couramment entre 3 et 5 secondes de LCP sur mobile.
La raison n'est pas la plateforme. C'est que les boutiques Shopify accumulent du poids de deux façons précises, dont aucune n'a de mécanisme de nettoyage intégré. Ce guide couvre ce qui ralentit vraiment une boutique Shopify, classé par impact, et les correctifs qui tiennent plutôt que de s'éroder dans l'année qui suit.
Pourquoi la vitesse compte deux fois
Les pages Shopify lentes sont pénalisées sur deux fronts en même temps.
En organique : les Core Web Vitals sont un signal de classement confirmé depuis 2021. Les pages lentes reçoivent aussi moins de budget de crawl.
En payant : le niveau de qualité Google Ads prend en compte l'expérience sur la page de destination, donc les pages lentes coûtent plus cher au clic. L'algorithme de Meta lit le signal de rebond comme un résultat négatif et valorise la diffusion en conséquence.
Une boutique lente reçoit donc moins de trafic organique, paie plus cher le trafic payant qu'elle achète, et convertit un pourcentage plus faible des clics obtenus. C'est ce cumul qui rend le sujet sérieux, au-delà d'un score de vanité.
Les métriques, et ce qu'elles mesurent vraiment
| Métrique | Mesure | Bon | Mauvais |
|---|---|---|---|
| LCP (Largest Contentful Paint) | Le délai avant l'apparition du contenu principal | Moins de 2,5 s | Plus de 4,0 s |
| INP (Interaction to Next Paint) | La réactivité de la page aux taps et aux clics | Moins de 200 ms | Plus de 500 ms |
| CLS (Cumulative Layout Shift) | Si le contenu bouge pendant le chargement | Moins de 0,1 | Plus de 0,25 |
Deux choses à savoir :
- L'INP a remplacé le First Input Delay en mars 2024. Ils mesurent des choses différentes : le FID ne mesurait que la première interaction, l'INP mesure la pire interaction de toute la visite. Passer le FID n'a jamais garanti de passer l'INP, et les boutiques qui n'ont pas revu le sujet depuis laissent de la performance de classement sur la table.
- La barre est le 75e centile des visites réelles, pas la moyenne. Votre acheteur médian peut avoir une bonne expérience pendant que vous échouez, si le quart le plus lent des visites est assez mauvais.
Données de terrain, pas de laboratoire
Où lire les données de terrain :
- PageSpeed Insights, section du haut, si la page a assez de trafic. Lisez celle-ci, pas le score Lighthouse en dessous.
- Search Console > rapport Core Web Vitals. Regroupé par modèle d'URL, ce qui vous montre si le problème vient des pages produit, des collections ou de l'accueil.
- Le Chrome UX Report directement, pour les tendances au niveau du domaine.
Suivez le LCP de terrain chaque mois. S'il monte de 0,3 seconde d'un mois sur l'autre, quelque chose s'est cassé et un audit s'impose. C'est le signal d'alerte précoce qui attrape les problèmes avant que le taux de conversion ne baisse.
Les vraies causes, classées par impact
1. Le JavaScript des apps
La première cause de lenteur sur Shopify. Chaque app qui injecte des scripts ajoute environ 150 à 300 ms au LCP, et l'effet sur l'INP est pire, car le JavaScript sur le thread principal est exactement ce que l'INP mesure. Les boutiques à forte stack d'apps dépassent fréquemment 500 ms d'INP, largement dans la zone Mauvais.
La version cachée du problème : retirer une app depuis l'admin Shopify ne retire pas toujours son code du theme. Les boutiques accumulent des scripts d'apps désinstallées il y a des mois ou des années, qui se chargent encore sur chaque page, pour rien.
L'audit :
- Ouvrez Chrome DevTools > onglet Coverage, rechargez une page produit, et regardez le JavaScript inutilisé par fichier. Cela vous dit quels scripts se chargent sans servir.
- Cherchez les balises script dans vos fichiers de theme (
theme.liquidet vos snippets). Recoupez avec la liste des apps installées. Tout ce qui vient d'une app absente est du poids mort. - Pour chaque app restante, demandez-vous si elle justifie son coût de chargement. Une app d'avis, oui. Une troisième app d'upsell, probablement pas.
L'ordre des correctifs : retirez d'abord le code mort (gratuit, sans inconvénient), puis désinstallez les apps inutilisées, puis évaluez si celles que vous utilisez pourraient être remplacées par du natif ou du code de theme.
2. La dérive du theme
La version au ralenti de la surcharge d'apps, et celle que personne ne voit arriver.
Chaque « petite » personnalisation ajoute quelque chose : une barre d'annonce ajoute une feuille de style, une vidéo héro ajoute un script, une nouvelle mise en page de carte produit ajoute du CSS. Les themes n'ont aucun moyen intégré de les nettoyer. Le code grossit donc pendant deux ans, personne ne retire rien, et le poids cumulé étrangle progressivement le LCP.
La discipline qui l'évite : traitez le code du theme comme le code des apps. Chaque ajout s'accompagne d'un retrait ailleurs, sinon le LCP continue de grimper. Concrètement, quand vous ajoutez une section, vérifiez si celle qu'elle remplace se charge encore.
3. Les visuels héros et produit non optimisés
L'élément LCP de la plupart des pages Shopify est l'image héro de l'accueil ou l'image principale d'une page produit. Si cette image est lourde, non compressée ou servie dans le mauvais format, le LCP est lent quoi que vous fassiez d'autre.
Les correctifs, dans l'ordre :
-
Préchargez l'image LCP. Un
<link rel="preload" as="image">dans le head indique au navigateur de la récupérer en premier. -
Ajoutez
fetchpriority="high"à l'élément image LCP. Cela contourne les files d'attente bloquant le rendu. - Servez du WebP ou de l'AVIF. Les filtres d'image de Shopify le gèrent ; vérifiez que votre theme demande le bon format et la bonne largeur.
- Demandez la bonne taille. Servir une image de 2400 px dans un conteneur de 600 px gaspille l'essentiel du téléchargement.
- Ne différez jamais le chargement de l'élément LCP. Voir ci-dessous.
loading="lazy" uniquement sur les images sous la ligne de flottaison, et explicitement pas sur votre héro ou votre première image produit.
4. Les ressources bloquant le rendu
Du CSS et du JavaScript dans le <head> que le navigateur doit télécharger et traiter avant de pouvoir afficher quoi que ce soit. Sur les themes lourds, c'est un contributeur majeur au LCP.
Les correctifs :
- Intégrez le CSS critique du contenu visible en haut de page, différez le reste
- Ajoutez
deferouasyncaux scripts non critiques - Limitez les polices personnalisées à deux familles, utilisez
font-display: swap, et préchargez la police principale - Déplacez les tags tiers (widgets de chat, cartes de chaleur, pop-ups) après le premier rendu
5. Les décalages de mise en page dus aux éléments tardifs
Les problèmes de CLS sur Shopify viennent généralement de quatre sources :
- Des images sans attributs width et height. Le navigateur ne sait pas quel espace réserver, donc le contenu saute à l'arrivée de l'image. Définissez des dimensions explicites dans vos templates.
- Du contenu injecté par les apps. Widgets d'avis, badges et bannières qui apparaissent après le chargement et poussent tout vers le bas.
- Des polices web chargées tardivement, provoquant une recomposition du texte.
- Des barres d'annonce et des bannières de cookies qui s'insèrent au-dessus du contenu existant.
Réservez l'espace pour tout ce qui se charge de façon asynchrone. Un emplacement aux bonnes dimensions supprime complètement le décalage.
6. Les theme app extensions et les app blocks
Généralement préférables à l'injection de scripts, car ils se chargent via le mécanisme de Shopify. Mais un app block mal implémenté peut quand même introduire des régressions de CLS et d'INP.
Testez chaque nouvelle app avec une comparaison de données de terrain avant/après. Pas un score de laboratoire : des données de terrain, quinze jours plus tard. Si une app dégrade vos chiffres, c'est une décision commerciale sur la valeur de la fonctionnalité face au coût.
7. Les scripts de redirection géographique et Markets
Les scripts de redirection automatique pour les visiteurs internationaux peuvent retarder sensiblement le LCP, car le navigateur attend une décision avant d'afficher. Si vous utilisez Shopify Markets avec une redirection géographique côté client, voyez si cette logique peut passer côté serveur ou en edge.
8. Les composants de Checkout Extensibility
Si vous avez étendu le checkout Shopify avec des composants d'interface sur mesure, auditez-les spécifiquement sur l'INP. Les étapes de checkout sont les interactions les plus critiques de la boutique, et la réactivité y affecte directement la conversion.
9. Le theme de base
En dernier, et de loin. Les themes Online Store 2.0 modernes embarquent des réglages raisonnables : chargement différé, images responsives, gestion sensée des scripts. Une boutique lente sous Dawn l'est à cause des huit points ci-dessus, pas à cause de Dawn.
Cela compte parce que « il nous faut un theme plus rapide » est une conclusion fréquente et rarement la bonne. Passer à un theme sur mesure avec quinze apps toujours installées produit un theme sur mesure lent.
À propos des apps d'optimisation de vitesse
Elles occupent une place inconfortable.
Ce qu'elles font bien : automatiser la compression d'images, ajouter le chargement différé sous la ligne de flottaison, minifier le CSS. Cela aide le LCP et le CLS sans travail de développement.
Là où elles échouent ou se retournent : l'INP vient de l'exécution de JavaScript sur le thread principal. Une app qui injecte son propre JavaScript pour « accélérer » alimente exactement le problème que l'INP mesure. Certaines diffèrent vraiment les scripts tiers et aident ; d'autres ajoutent une couche et appellent ça de l'optimisation.
La formulation honnête : le vrai travail de performance sur Shopify consiste à retirer du poids, pas à ajouter une couche de logiciel. Si une app prétend tout résoudre automatiquement, soyez sceptique. Les correctifs durables (élaguer les apps, modifier le theme pour différer les scripts, découper les tâches longues) sont du travail structurel de développement sur le theme.
Si vous en utilisez une, mesurez les données de terrain avant et quinze jours après, et soyez prêt à la désinstaller si les chiffres ne bougent pas.
L'audit en 90 minutes
Voici la version pratique. Faites-le sur une vraie page produit, pas sur l'accueil, parce que c'est là que se trouvent la plupart des sessions et du chiffre d'affaires.
| Étape | Outil | Ce que vous cherchez |
|---|---|---|
| 1. Lire les données de terrain | PageSpeed Insights (section du haut) | LCP, INP, CLS actuels sur de vraies visites. C'est votre référence. |
| 2. Vérifier par type de page | Search Console > Core Web Vitals | Si le problème vient des pages produit, des collections ou de l'accueil |
| 3. Identifier l'élément LCP | Diagnostics PageSpeed Insights | Quel élément est réellement le LCP. En général l'image héro ou produit. |
| 4. Trouver le JavaScript inutilisé | DevTools > onglet Coverage | Les scripts chargés sans être utilisés. Notez les fichiers sources. |
| 5. Trouver le code mort d'apps | Fichiers de theme, recherche de balises script | Les scripts d'apps déjà désinstallées |
| 6. Trouver les tâches longues | DevTools > Performance, enregistrez un chargement et interagissez | Les tâches de plus de 50 ms qui bloquent le thread principal. C'est votre problème d'INP. |
| 7. Vérifier la gestion des images | Code source de l'image LCP | Si elle est préchargée, a un fetchpriority, est en WebP, et n'est PAS en chargement différé |
| 8. Vérifier les réservations d'espace | Code source d'une image et d'un widget d'app | Si width et height sont définis, si le contenu asynchrone a un espace réservé |
Livrez les correctifs sur un theme dupliqué, jamais sur celui en ligne. Puis remesurez les données de terrain deux semaines plus tard : ce sont des moyennes glissantes, elles ne bougent pas immédiatement.
L'ordre de priorité des correctifs
| Priorité | Correctif | Effort | Impact typique |
|---|---|---|---|
| 1 | Retirer le code mort d'apps des fichiers de theme | 1 à 2 heures | Élevé, gratuit, sans inconvénient |
| 2 | Désinstaller les apps inutilisées | 1 heure | Élevé |
| 3 | Précharger l'image LCP + fetchpriority, retirer son chargement différé | 1 heure | Élevé sur le LCP |
| 4 | Compresser et reformater les images héros et produit | 2 à 4 heures | Élevé sur le LCP |
| 5 | Différer le JavaScript non critique | 3 à 6 heures | Élevé sur l'INP |
| 6 | Définir width et height explicites sur toutes les images | 2 à 4 heures | Élevé sur le CLS |
| 7 | Réserver l'espace du contenu injecté par les apps | 2 à 4 heures | Élevé sur le CLS |
| 8 | Intégrer le CSS critique, différer le reste | 4 à 8 heures | Modéré sur le LCP |
| 9 | Réduire les polices personnalisées, ajouter font-display swap | 1 à 2 heures | Modéré |
| 10 | Passer les redirections géographiques côté serveur | 4 à 8 heures | Modéré, boutiques internationales uniquement |
Les points 1 à 4 représentent généralement une seule journée de travail et l'essentiel du gain disponible. Faites-les avant d'envisager quoi que ce soit de structurel.
Faire tenir les résultats
C'est la partie qui sépare une amélioration ponctuelle d'une amélioration durable.
Trois habitudes à prendre :
- Testez chaque nouvelle app sur les données de terrain quinze jours après. Si elle dégrade vos chiffres, cela devient une décision commerciale plutôt qu'un accident.
- Chaque ajout au theme s'accompagne d'un retrait. Quand vous ajoutez une section, vérifiez si celle qu'elle remplace se charge encore.
- Surveillez le LCP de terrain chaque mois. Une hausse de 0,3 seconde d'un mois sur l'autre signifie que quelque chose s'est cassé. L'attraper là coûte bien moins cher que de l'attraper quand la conversion baisse.
À quoi ressemble un bon niveau
| Métrique | Cible | Où se situent vraiment la plupart des boutiques Shopify |
|---|---|---|
| LCP mobile (terrain) | Moins de 2,5 s | 3 à 5 s |
| INP (terrain) | Moins de 200 ms | 200 à 500 ms et plus avec des stacks d'apps lourdes |
| CLS (terrain) | Moins de 0,1 | 0,1 à 0,25 |
| Apps installées | Moins de 10 qui injectent des scripts | 12 à 20 |
| Familles de polices personnalisées | 2 | 3 à 5 |
Le gain de conversion est la vraie raison de faire ce travail, plus que le signal de classement. Les boutiques qui descendent sous 2,5 secondes de LCP sur mobile voient généralement leur taux de conversion remonter de 0,4 à 0,7 point en quatre semaines, ce qui, sur la plupart des boutiques, vaut bien plus que le bénéfice de classement.
Erreurs courantes sur la vitesse
- Optimiser contre le score de laboratoire. Les données de terrain sont ce que Google utilise et ce que vivent vos acheteurs.
- Différer le chargement de l'image LCP. Cela retarde exactement ce qui est mesuré.
- Installer une app de vitesse et considérer que c'est réglé. Cela aide le LCP et le CLS au mieux ; cela peut nuire à l'INP.
- Supposer que le theme est le problème. Il arrive généralement en huitième ou neuvième position.
- Ne pas chercher le code mort d'apps. Le gain le moins cher disponible, et le plus souvent oublié.
- Ne tester que la page d'accueil. Les pages produit portent l'essentiel du trafic et du chiffre d'affaires.
- Optimiser une fois et s'arrêter. Sans rythme trimestriel, les gains s'érodent en moins d'un an.
- Viser un score PageSpeed de 90+ comme objectif. Courir après le score n'est pas la même chose que la vitesse réelle. L'objectif, c'est un LCP de terrain sous 2,5 secondes et un taux de conversion qui bouge.
- Changer de plateforme pour la vitesse avant d'avoir fait l'audit des apps et le nettoyage du theme. Un theme sur mesure avec quinze apps reste lent.
Quand faire appel à quelqu'un
Les quatre premiers points du tableau de priorité sont à la portée d'un dirigeant à l'aise techniquement et représentent l'essentiel du gain disponible. À faire soi-même avant de payer qui que ce soit.
Là où une aide extérieure se justifie, c'est le travail structurel : différer les scripts sans casser de fonctionnalité, découper les tâches longues, intégrer le CSS critique, et diagnostiquer laquelle des neuf causes possibles produit votre problème précis. Cette dernière partie est la vraie compétence, car une checklist appliquée aveuglément à la mauvaise cause ne fait rien bouger.
Voyez comment nous abordons le développement Shopify et le travail de performance : données de terrain d'abord, audit des apps et du theme avant tout changement structurel, et un objectif de LCP annoncé avec un rythme trimestriel pour le tenir.
Questions fréquentes
Quel LCP viser pour une boutique Shopify sur mobile ?
Moins de 2,5 secondes, mesuré sur de vraies visites mobiles en données de terrain plutôt qu'en test de laboratoire. Beaucoup de boutiques Shopify de milieu de gamme se situent entre 3 et 5 secondes, surtout à cause d'images héros non optimisées et de scripts de theme bloquant le rendu. Les boutiques qui descendent sous 2,5 secondes voient généralement leur taux de conversion remonter de 0,4 à 0,7 point en quatre semaines.
Les apps d'optimisation de vitesse Shopify fonctionnent-elles ?
En partie, et parfois à contresens. Les apps automatisent la compression d'images et le chargement différé, ce qui aide le LCP et le CLS. Mais l'INP vient du JavaScript, et une app qui injecte son propre JavaScript pour « accélérer » peut dégrader l'INP. Les correctifs durables consistent à élaguer les apps et à modifier le code du theme pour différer les scripts : du travail de développement structurel, pas quelque chose qu'une app fait à votre place.
Combien chaque app Shopify ralentit-elle ma boutique ?
Environ 150 à 300 ms de LCP en plus par app qui injecte des scripts, avec une fourchette large et des apps bien pires. Les boutiques à forte stack d'apps tierces dépassent fréquemment 500 ms d'INP, largement dans la zone Mauvais. Le problème plus grave est le code résiduel : retirer une app depuis l'admin ne retire pas toujours son code du theme.
Faut-il activer le chargement différé sur toutes les images Shopify ?
Sur les images sous la ligne de flottaison, oui. Jamais sur votre élément LCP, généralement l'image héro ou l'image produit principale. Différer le chargement de l'image LCP retarde exactement ce que Google mesure et dégrade votre score au lieu de l'améliorer. Préchargez-la plutôt et ajoutez fetchpriority="high".
Pourquoi ma boutique Shopify ralentit-elle à nouveau après optimisation ?
La dérive du theme et l'accumulation d'apps. Chaque nouvelle app et chaque petite personnalisation ajoute un script ou une feuille de style, et les themes n'ont aucun mécanisme interne pour les nettoyer. Les boutiques qui font un audit trimestriel restent indéfiniment sous 2,5 secondes de LCP ; celles qui optimisent une fois et s'arrêtent repassent généralement au-dessus de 3,5 secondes en 18 mois.
Vous voulez un vrai chiffre pour votre boutique ?
Envoyez-nous l'URL et la taille du catalogue. Nous reviendrons avec un devis ferme et la liste des templates qu'il couvre, sans appel nécessaire sauf si vous en souhaitez un.
Obtenir un devis