Une checklist d'ingénieur senior pour auditer les Core Web Vitals d'une boutique Shopify en 2026. Diagnostiquer INP, LCP et CLS, identifier les apps qui plombent la performance, et les corriger sans casser la boutique.

Chaque boutique Shopify qu'on nous a demandé d'auditer avait un problème de Core Web Vitals. Certaines le savaient. La plupart pensaient que leur site était "plutôt rapide" parce que la home tournait bien sur le MacBook du fondateur en Wi-Fi du bureau. Puis nous avons mesuré ce même site avec un outil de monitoring utilisateur réel sur un Android milieu de gamme en 4G, ce qui correspond au vrai trafic mobile, et les chiffres racontaient une autre histoire.
Voici la checklist que nous déroulons le premier jour d'une mission de performance. C'est le même process diagnostic qui nous sert à rédiger une proposition, et c'est exactement ce que plus de marchands devraient faire avant de croire que la prochaine app installée va régler le problème.
Trois métriques comptent pour le ranking et la conversion. Les seuils "Good" n'ont pas bougé en 2026, mais le poids relatif d'INP continue de croître à mesure que Google insiste sur la qualité réelle de l'interaction.
| Métrique | Ce qu'elle mesure | Seuil "Good" | Ce qui la tue sur Shopify |
|---|---|---|---|
| LCP (Largest Contentful Paint) | Temps de rendu du plus grand élément above-the-fold | sous 2,5s | Images hero non optimisées, CSS d'app bloquant, sections Liquid lentes |
| INP (Interaction to Next Paint) | Réactivité du pire scénario sur toute la session | sous 200ms | JavaScript tiers lourd, embeds d'app qui monopolisent le main thread |
| CLS (Cumulative Layout Shift) | Décalages visuels pendant le chargement | sous 0,1 | Apps qui se chargent tard, dimensions d'image manquantes, swap de webfont |
INP a remplacé FID en mars 2024 et c'est la métrique qui surprend le plus de boutiques. FID ne mesurait que le premier clic. INP mesure chaque interaction, ce qui veut dire qu'une modale d'avis qui met 800ms à s'ouvrir en fin de session compte autant qu'un add-to-cart lent.
Les données lab de PageSpeed Insights sont un point de départ, pas un verdict. Google classe sur les données field issues d'utilisateurs Chrome réels (le dataset CrUX). Si votre score lab est vert mais que votre data field est rouge, c'est la data field qui gagne. Toujours vérifier les deux onglets de PageSpeed Insights.
On ne prouve pas une amélioration sans avoir mesuré le point de départ. Nous tirons les données baseline de trois sources avant d'écrire la moindre ligne de code.
Consignez ces chiffres dans un tableur. Chaque fix des 30 jours suivants doit être mesurable par rapport à ce baseline.
C'est là que vit presque chaque problème de performance Shopify. Pas dans le thème, pas dans les images, dans les scripts tiers que les apps injectent sur chaque page.
Ouvrez Chrome DevTools sur une page produit en navigation privée (extensions désactivées), et suivez cette séquence :
// Dans la console DevTools sur une page produit :
performance.getEntriesByType('resource')
.filter(r => r.initiatorType === 'script')
.sort((a, b) => b.transferSize - a.transferSize)
.slice(0, 15)
.forEach(r => console.log(
`${Math.round(r.transferSize/1024)}KB ${r.duration.toFixed(0)}ms ${r.name}`
));Ça vous sort les quinze plus gros fichiers JavaScript par taille de transfert, avec leur durée de chargement. Sur une boutique surchargée, vous verrez par exemple un widget d'avis de 280KB, une app d'upsell de 190KB, un bundle de chat de 140KB, et un outil d'analytics replay de 90KB, le tout sur une page où 80% des visiteurs ne dépasseront jamais le fold.
Allez ensuite dans l'onglet Coverage de DevTools, rechargez la page, et regardez la colonne "Unused Bytes". Sur une boutique Shopify typique, 60% à 80% du JavaScript chargé n'est pas utilisé sur une page donnée. C'est toute l'opportunité de ranking qui dort là.
Trois seaux. Soyez honnête sur le seau de chaque script.
Testez les suppressions sur un thème dupliqué, pas en production. Désactivez l'app embed, poussez sur un thème preview, lancez PageSpeed Insights contre cette URL preview. Si LCP et INP s'améliorent et que rien de visible ne casse, désinstallez complètement l'app pour que les fichiers résiduels disparaissent aussi.
Pour chaque template clé (home, collection, produit), identifiez ce qu'est réellement l'élément LCP. C'est généralement l'image hero. Parfois, gênant, c'est un paragraphe de texte parce que l'image hero est tellement lente que Chrome choisit l'élément suivant.
Utilisez le panneau Performance Insights de DevTools ou le diagnostic Lighthouse "Largest Contentful Paint element". Puis vérifiez dans l'ordre :
| Vérification | Ce qu'on cherche | Correction |
|---|---|---|
| Format d'image | L'image LCP est-elle en WebP ou AVIF ? | Conversion en WebP via le filtre Liquid image_url: format: 'webp' |
| Dimensions d'image | L'image servie est-elle plus grande que la taille rendue ? | srcset responsive avec le paramètre width de Shopify image_url |
| Preload | L'image LCP est-elle préchargée ? | Ajouter <link rel="preload" as="image" imagesrcset="..." fetchpriority="high"> dans theme.liquid |
| CSS bloquant | Combien de CSS chargé avant l'élément LCP ? | Inliner le CSS critique, différer le reste |
| TTFB (réponse serveur) | Le document lui-même est-il lent ? | Probablement une boucle Liquid lourde ou un appel API tiers dans une section |
Le changement à plus fort impact sur la majorité des boutiques Shopify, c'est précharger l'image hero avec fetchpriority="high". Nous avons vu le LCP tomber de 4,2s à 1,8s en un seul déploiement avec ce changement plus la suppression du CSS bloquant pour le above-the-fold.
INP est la métrique que la plupart des boutiques ratent en 2026 parce que les apps Shopify ne sont pas optimisées pour elle. Pour trouver les coupables, ouvrez le panneau Performance de DevTools, démarrez l'enregistrement, faites ce que les vrais utilisateurs font (ouvrir un sélecteur de variante, add-to-cart, ouvrir le tiroir panier, cliquer une promo banner) et arrêtez l'enregistrement.
Examinez le flame chart. Toute "long task" au-dessus de 50ms est candidate. Les long tasks pendant les interactions tuent l'INP. Les coupables fréquents sur Shopify :
Pour chacun, la correction suit le même schéma : différer le travail non critique, casser les long tasks en chunks via requestIdleCallback, et éviter les mutations DOM synchrones pendant les interactions.
CLS est le plus facile des trois à corriger parce que les causes sont mécaniques.
<img> a des attributs width et height explicites (pas juste en CSS). Les thèmes Shopify antérieurs à OS 2.0 oublient souvent.font-display: optional ou swap avec un fallback métriquement équivalent, pour que le swap soit invisible.transform: translateX(), pas via une animation qui affecte le layout.La majorité des boutiques Shopify atteignent un CLS sous 0,05 avec ces cinq changements seuls. Les autres ont un problème de thème custom qui demande un refactoring chirurgical.
Validation finale sur :
Si la data field traîne derrière la data lab de plus de 30 jours post-déploiement, il y a une régression quelque part, généralement une nouvelle app installée ou un embed poussé par l'équipe marketing. C'est pour ça qu'on met en place un performance budget en CI pour chaque client Sentinu après lancement : toute pull request qui pousse LCP, INP ou CLS au-delà des seuils définis fait échouer le build avant déploiement.
Nous avons compilé les diagnostics des dix derniers audits Shopify menés au Q4 2025. Les patterns sont remarquablement constants.
| Problème | Boutiques touchées (sur 10) |
|---|---|
| Image LCP non préchargée ou au mauvais format | 9 |
| Au moins une app injectant plus de 100KB de JS inutilisé | 10 |
| Échec INP causé par les apps d'avis ou d'upsell | 7 |
| CLS causé par dimensions d'image manquantes | 6 |
| CSS bloquant de plus de 80KB avant LCP | 8 |
Webfonts chargées sans stratégie font-display | 5 |
| Requêtes tierces synchrones dans le tiroir panier | 4 |
Le point n'est pas que Shopify est lent. Le point est que Shopify est rapide et que la plupart des marchands sont lents à cause de ce qu'ils empilent au-dessus.
Vous pouvez faire les trois premières étapes de cette checklist seul, avec un compte PageSpeed Insights gratuit et un après-midi. Supprimer les apps mortes et précharger l'image hero, c'est vraiment du DIY accessible.
Il faut un partenaire d'ingénierie quand :
Ce dernier point, c'est ce qu'on entend par "corriger durablement". Un audit one-shot redresse votre score pour un trimestre. Un performance budget le garde vert pour toujours.
Oui. Les Core Web Vitals font partie des signaux de page experience de Google et restent un facteur de ranking confirmé, particulièrement sur mobile et pour les requêtes où plusieurs résultats ont une pertinence topique proche. L'effet est rarement la différence entre page un et page cinq, mais c'est régulièrement la différence entre position trois et position sept.
Pour la plupart des boutiques Shopify, les gains faciles (preload d'image, conversion de format, suppression d'apps mortes) sont livrés en semaine un et apparaissent dans la data field CrUX 28 jours plus tard. Le travail INP plus profond et le refactoring de thème prennent 3 à 6 semaines. Le cycle complet d'audit à data field durablement verte, c'est typiquement 60 à 90 jours.
Il gère la livraison d'assets, le redimensionnement d'image via image_url et le push HTTP/2. Il ne vous protège pas du bloat d'app, du CSS bloquant ou du code de thème qui fait trop de travail synchrone. Ça reste votre responsabilité.
Pas forcément. La majorité des boutiques peuvent atteindre des Core Web Vitals verts sur un thème Liquid bien construit. Le headless est la bonne réponse quand vous avez besoin de fonctionnalités de rendu que Liquid ne peut pas livrer (personnalisation temps réel, caching avancé, TTI sous la seconde sur des templates complexes), pas quand vous voulez simplement un site plus rapide. Voir notre comparatif Hydrogen vs Next.js pour l'analyse complète.
Désactivez l'app embed dans le customizer de thème (ou utilisez les réglages de l'app pour retirer son injection de script), publiez sur un thème preview, et lancez cette URL preview dans PageSpeed Insights. Si LCP ou INP s'améliorent de 200ms ou plus, cette app a un coût de performance mesurable. Reste à savoir si elle mérite ce coût au regard du chiffre qu'elle génère.
Nous visons LCP sous 2,0s, INP sous 150ms, CLS sous 0,05 en data field sur les cinq templates principaux. C'est confortablement à l'intérieur du seuil "good" de Google et ça vous laisse de la marge pour l'inévitable ajout d'app sans repasser sous la ligne.
Pour un regard plus approfondi sur l'approche d'ingénierie que nous utilisons en performance, voir notre service optimisation de la vitesse Shopify. Si vous envisagez un changement architectural plus profond plutôt que des fixes incrémentaux, la page commerce headless couvre les arbitrages.
Si vous préférez simplement nous envoyer une URL et recevoir un rapport d'audit en retour, c'est habituellement à quoi ressemble la première conversation.

Le business case des Core Web Vitals pour les sites ecommerce, en chiffres. Impact réel sur la conversion mesuré chez Vodafone, NDTV, Carpe, Rakuten et 30 autres cas. Ce que 100 ms de LCP vous coûtent réellement par mois.

Comparaison d'ingénieur entre Shopify Hydrogen et Next.js pour le commerce headless. Arbitrages d'architecture, stratégies de rendu, SEO, hébergement et grille de décision issue de projets réels.

Le 30 juin 2026 est un mur. L'édition des Scripts est déjà verrouillée. Si vos remises de checkout, règles de livraison ou logique de paiement tournent encore sur Scripts, voici le playbook de migration, les modes d'échec et ce que ça coûte.