Pourquoi votre site Next.js est lent et comment y remédier
Retour au Blog
Performance & Optimisation

Pourquoi votre site Next.js est lent et comment y remédier

Belk Digital Editorial TeamAugust 21, 202612 lecture

Un site Next.js lent nuit à votre référencement et à vos conversions ? Découvrez les vraies causes des mauvais Core Web Vitals et comment Belk Digital les résout rapidement.

Introduction

Votre score Lighthouse affiche 45. Votre client vous demande pourquoi la page d'accueil met quatre secondes à devenir interactive. Et lors d'une rétrospective de sprint, quelqu'un pose la question évidente : ne l'avons-nous pas conçu avec Next.js pour que ce soit rapide par défaut ?

C'est une question légitime, et la réponse honnête est non. Next.js vous fournit les outils pour concevoir un site réellement rapide, mais il ne le fait pas à votre place. Avec ses paramètres par défaut, une application Next.js peut livrer les mêmes bundles surdimensionnés, images non optimisées et surcharges d'hydratation que n'importe quel autre framework JavaScript — parfois pire, car les équipes supposent que la vitesse est intégrée.

Ce guide détaille pourquoi les sites Next.js ralentissent réellement, comment vérifier si le vôtre est concerné, et la séquence de correctifs que nous utilisons chez Belk Digital pour reprendre le contrôle des sites à forte exigence de performance. Explorez nos services spécialisés en performance Next.js ou demandez un audit Core Web Vitals pour évaluer votre application.

Le paradoxe de la vitesse de Next.js : pourquoi moderne ne signifie pas automatiquement rapide

Next.js a été créé pour résoudre les problèmes de performance qui affectaient les premières applications React : écrans blancs, bundles client gigantesques et référencement SEO faible dû au rendu exclusivement côté client. Le rendu côté serveur (SSR), la génération statique (SSG), le découpage automatique du code et le modèle de streaming de l'App Router existent tous spécifiquement pour accélérer le chargement des pages.

Rien de tout cela ne se produit automatiquement dès qu'un projet dépasse le stade de la démonstration. Ajoutez suffisamment de composants client, de scripts tiers et d'images non optimisées, et un site Next.js régresse vers les problèmes exacts qu'il était censé éviter. Le framework fournit la capacité ; la qualité de l'implémentation détermine le résultat.

Next.js propose le SSR, le SSG, l'ISR et le streaming via l'App Router, mais aucun n'offre une vitesse automatique sans architecture réfléchie.

Développer une application avec un excès de composants client et de scripts tiers entraîne une régression vers des problèmes de performance React monolithiques.

La qualité de l'implémentation, la gestion des actifs et les stratégies de récupération des données déterminent la performance finale.

Comment savoir si votre site Next.js est réellement lent

Avant de corriger quoi que ce soit, confirmez ce qui est réellement défaillant. « Semble lent » et « mesurablement lent » sont deux problèmes différents qui nécessitent des outils distincts.

Google mesure la vitesse des sites et l'expérience utilisateur à travers trois Core Web Vitals : Largest Contentful Paint (LCP), Interaction to Next Paint (INP) et Cumulative Layout Shift (CLS). Le LCP mesure le temps nécessaire pour afficher le plus grand élément visible (généralement une image principale ou un titre). L'INP mesure la réactivité de la page lors de chaque clic, appui et pression de touche pendant la visite. Le CLS mesure le décalage inattendu du contenu pendant le chargement de la page.

Statistique / MètreBonÀ améliorerMauvais
Largest Contentful Paint (LCP)≤ 2,5s2,5s – 4,0s> 4,0s
Interaction to Next Paint (INP)≤ 200ms200ms – 500ms> 500ms
Cumulative Layout Shift (CLS)≤ 0,10,1 – 0,25> 0,25

Google évalue ces seuils au 75e percentile des sessions de visiteurs réels sur une fenêtre glissante de 28 jours, à l'aide des données de terrain du Chrome UX Report (CrUX), et non lors d'un test unique en environnement de développement. Une page peut sembler rapide dans Lighthouse et échouer dans le monde réel si une part significative des visiteurs sur téléphones anciens ou connexions lentes subit une expérience dégradée.

Les outils incontournables :

  • [Google PageSpeed Insights](https://pagespeed.web.dev/) : Combine les données de terrain (CrUX) et de laboratoire (Lighthouse) pour mobile et ordinateur.
  • [Rapport Core Web Vitals de Search Console](https://support.google.com/webmasters/answer/9205520) : Affiche le statut réel de réussite/échec par groupe d'URL.
  • Panneau Performance de Chrome DevTools : Pour cibler les goulots d'étranglement spécifiques pendant le développement.
  • WebPageTest : Analyse en cascade approfondie, utile pour diagnostiquer le TTFB et les ressources bloquant le rendu.
  • Vercel Analytics ou outils RUM : Pour la surveillance continue des utilisateurs réels plutôt que des mesures ponctuelles.

Les données de laboratoire indiquent ce qui ne va pas dans un test contrôlé. Les données de terrain montrent ce que vivent vos utilisateurs réels. Les équipes qui ne consultent que Lighthouse manquent systématiquement les utilisateurs mobiles et à faible bande passante qui rencontrent des difficultés réelles ; utilisez les deux.

Distinguez les données de diagnostic de laboratoire (Lighthouse) des données de terrain des utilisateurs réels CrUX sur 28 jours.

Surveillez le LCP (≤2,5s), l'INP (≤200ms) et le CLS (≤0,1) au 75e percentile des sessions réelles.

Combinez PageSpeed Insights, DevTools, Search Console et RUM pour une visibilité complète.

Les six causes profondes d'un site Next.js lent

Une fois le diagnostic confirmé, la solution dépend de la cause fondamentale parmi les six identifiées. La plupart des sites Next.js lents présentent plusieurs causes simultanées :

1. Une stratégie de rendu inadaptée au contenu

Next.js prend en charge plusieurs stratégies de rendu, et choisir la mauvaise pour une page donnée constitue l'une des erreurs les plus courantes et les plus coûteuses que nous observons.

StratégieFonctionnementIdéal pourCompromis / Inconvénient
Server-Side Rendering (SSR)Génère la page à chaque requêteContenu hautement personnalisé ou très dynamiqueTTFB plus élevé ; le serveur travaille à chaque visite
Static Site Generation (SSG)Génère les pages lors du buildPages marketing, blogs, documentationLivraison la plus rapide ; les mises à jour nécessitent un re-build
Incremental Static Regeneration (ISR)Sert des pages statiques et les régénère à intervalle définiCatalogues produits, contenus mis à jour régulièrementVitesse quasi statique avec un contenu rafraîchi

Un tableau de bord rendu en SSR à chaque requête sera toujours plus lent que nécessaire si les données sous-jacentes ne changent qu'une fois par heure. Passez ce tableau de bord en ISR, et le TTFB chutera drastiquement sans perdre la fraîcheur du contenu. Consultez notre guide d'architecture CMS headless pour approfondir les modèles de rendu.

2. Une surcharge d'hydratation côté client

L'hydratation est le processus par lequel React attache l'interactivité au HTML statique déjà envoyé par le serveur. Tant que l'hydratation n'est pas terminée, les boutons semblent cliquables mais ne le sont pas. Sur les pages chargées en JavaScript comportant des dizaines de composants client, ce délai devient perceptible et nuit lourdement à l'INP.

Les React Server Components, introduits avec l'App Router, réduisent ce problème en conservant les parties non interactives d'une page exclusivement sur le serveur. Une page remplie de composants client qui n'ont pas réellement besoin d'interactivité paie une taxe d'hydratation inutile.

3. Des bundles JavaScript surdimensionnés

Chaque importation inutile, bibliothèque non utilisée et dépendance dupliquée ajoute du poids que le navigateur doit télécharger, analyser et exécuter avant que la page ne devienne utilisable. Coupables fréquents : importer une bibliothèque d'icônes entière pour seulement trois icônes, inclure une lourde bibliothèque de dates alors que le formatage natif Intl suffirait, et envoyer du code d'administration à tous les visiteurs.

Le découpage de code et les importations dynamiques (`next/dynamic`) permettent à un composant lourd (une modale, un graphique, un éditeur de texte riche) de ne se charger que lorsqu'il est réellement nécessaire, plutôt lors du chargement initial. `@next/bundle-analyzer` permet de visualiser exactement ce qui alourdit le bundle avant de décider quoi couper.

4. Des images et polices non optimisées

Les images restent l'élément le plus lourd sur la majorité des pages web, et Next.js intègre le composant `next/image` conçu spécifiquement pour cela : redimensionnement automatique, chargement différé et conversion vers des formats modernes comme WebP ou AVIF. L'inconvénient est qu'il ne fonctionne que s'il est utilisé correctement. L'absence de la propriété `priority` sur les images principales au-dessus de la ligne de flottaison, l'absence de dimensions explicites (`width` et `height`) provoquant des décalages de mise en page, et les images servies depuis des sources externes non optimisées annulent les bénéfices de l'outil. Pour des techniques d'images avancées, lisez notre guide sur les 7 techniques pratiques pour améliorer le LCP dans Next.js.

Les polices posent un problème similaire. Sans stratégie de chargement définie, les polices personnalisées créent un flash de texte non stylisé ou invisible pendant leur chargement, nuisant au CLS et à la vitesse perçue. `next/font` héberge et précharge automatiquement les fichiers de polices, éliminant la requête bloquante vers des fournisseurs tiers.

5. Un temps de réponse serveur (TTFB) lent et un manque de mise en cache

Le TTFB mesure le temps que met le serveur à répondre avant que le navigateur ne puisse commencer le rendu. Un TTFB lent dégrade toutes les métriques en aval : un LCP médiocre de cinq secondes est souvent le symptôme d'un temps de réponse serveur de deux secondes, et non d'un problème front-end.

Les causes fréquentes incluent les requêtes SSR non mises en cache, les démarrages à froid des fonctions serverless, l'absence de cache CDN en bordure de réseau (Edge) et les requêtes de base de données exécutées de manière synchrone à chaque chargement. Des en-têtes `Cache-Control` appropriés, une mise en cache CDN (via le réseau Edge de Vercel ou Cloudflare) et le déplacement des traitements lourds hors du chemin de la requête grâce à l'ISR ou à des tâches en arrière-plan résolvent la plupart de ces problèmes.

6. Des scripts tiers et requêtes de base de données non optimisés

Les pixels d'analyse, widgets de chat, balises publicitaires et outils marketing ajoutent leur propre JavaScript, et chacun entre en compétition avec le code du site pour le thread principal. Une page peut disposer d'un code parfaitement optimisé et échouer à l'INP parce qu'un script tiers non optimisé bloque l'interaction pendant une demi-seconde.

Côté backend, les problèmes de requêtes N+1 et l'absence d'index de base de données ralentissent les routes SSR et API même si le front-end est bien conçu. Si une page interroge la base de données dix fois pour afficher une liste, aucune optimisation front-end ne pourra régler le problème : le correctif doit intervenir au niveau de l'ORM ou de la requête.

Adaptez la stratégie de rendu (SSG, ISR, SSR) à la fréquence réelle de mise à jour des données pour réduire le TTFB.

Exploitez les React Server Components dans l'App Router pour réduire la surcharge d'hydratation et améliorer l'INP.

Éliminez les bundles JS surdimensionnés via des importations dynamiques, auto-hébergez les polices avec next/font et priorisez les images LCP.

App Router vs Pages Router : est-ce vraiment déterminant pour la vitesse ?

Migrer vers l'App Router seul ne garantit pas un site plus rapide, même si cette idée reçue est fréquente. Les véritables avantages de performance de l'App Router (React Server Components, streaming et mise en cache plus fine) ne se manifestent que lorsqu'ils sont exploités volontairement. Un projet qui change de router mais conserve la directive « use client » sur chaque composant garde exactement la même surcharge d'hydratation qu'auparavant, simplement enveloppée dans une syntaxe plus récente.

Le router importe moins que les choix d'architecture effectués en son sein.

Les avantages de l'App Router nécessitent des choix d'architecture délibérés (Server Components, streaming, cache Edge).

Envelopper tous les composants dans « use client » conserve la surcharge d'hydratation de l'ancien Pages Router.

Comment nous réparons un site Next.js lent : notre processus d'audit et de correction

Chez Belk Digital, nous suivons une méthodologie systématique de correction en 7 étapes pour maîtriser la vitesse des sites :

  1. Établir le bilan de l'état actuel : Exécuter PageSpeed Insights et consulter le rapport Core Web Vitals de Search Console pour obtenir des données de terrain réelles avant de modifier le moindre code.
  2. Identifier le goulot d'étranglement principal : TTFB, taille du bundle, hydratation, images ou combinaison de facteurs. Corriger le mauvais élément en premier fait perdre un sprint entier.
  3. Optimiser le temps de réponse serveur en priorité : Les ajustements de stratégie de rendu et de mise en cache offrent généralement la plus forte amélioration, car tout le reste en dépend.
  4. Optimiser les images et les polices : Ce sont généralement les gains les plus rapides avec le moins de risques de régression sur la page.
  5. Réduire et découper le bundle JavaScript : Auditer les dépendances, convertir les composants client inutiles en composants serveur et ajouter des importations dynamiques pour les éléments UI lourds non critiques.
  6. Auditer les scripts tiers : Différer, charger tardivement ou supprimer les scripts qui n'apportent pas une valeur proportionnelle à leur poids.
  7. Re-tester et mettre en place une surveillance continue : Un correctif ponctuel se dégrade au fil du déploiement de nouvelles fonctionnalités ; le RUM détecte les régressions avant que les utilisateurs ne les signalent.

Établissez des lignes de base réelles avec les données CrUX avant de refactoriser le code.

Traitez le TTFB et la stratégie de rendu en premier pour un impact maximal sur les performances aval.

Mettez en place un suivi RUM continu pour éviter les régressions lors de la livraison de nouvelles fonctionnalités.

Quand corriger soi-même vs quand faire appel à un expert en performance Next.js

Les équipes disposant de ressources d'ingénierie internes peuvent généralement gérer l'optimisation des images, le chargement des polices et le nettoyage de base des bundles sans aide extérieure ; ce sont des correctifs bien documentés et à faible risque. En revanche, les changements de stratégie de rendu, les migrations App Router et l'optimisation des requêtes en base de données comportent plus de risques, car ils touchent à l'architecture plutôt qu'à des composants isolés, et une mauvaise décision peut introduire de nouveaux bugs tout en cherchant à gagner en vitesse.

Si un site reste lent depuis des mois malgré des tentatives internes, ou si la résolution exige de repenser la circulation des données dans l'application, un audit externe constitue généralement la voie la plus rapide et la plus économique. Pour obtenir des conseils sur les tarifs et l'évaluation avant de prendre cette décision, consultez notre guide sur comment choisir le bon partenaire digital.

Les correctifs isolés (images, polices, réduction du bundle) présentent peu de risques pour les équipes internes.

Les changements d'architecture (stratégies de rendu, requêtes DB) bénéficient fortement d'audits d'experts.

Belk Digital propose des audits de performance à périmètre fixe pour débloquer vos équipes d'ingénierie.

Pourquoi la vitesse d'un site est un enjeu commercial, pas seulement technique

La vitesse d'un site ne reste pas cantonnée à l'onglet DevTools. Les Core Web Vitals sont un signal de classement Google confirmé, et les pages lentes ou instables ont tendance à enregistrer des taux de rebond plus élevés et un engagement plus faible que les pages qui valident les trois métriques avec marge. Google a documenté des études de cas de e-commerçants ayant amélioré leurs scores Core Web Vitals tout en constatant des gains mesurables en revenus publicitaires, durée de session et trafic organique — bien que les résultats varient selon les sites et ne doivent pas être considérés comme une formule magique.

L'élément essentiel est que le travail sur les performances se cumule directement avec les efforts de SEO, d'UX et de conversion détaillés dans notre article sur comment la performance d'un site web impacte le chiffre d'affaires. Traiter la vitesse comme un projet technique ponctuel, au lieu d'une discipline continue, est la raison principale pour laquelle un site réparé se dégrade à nouveau six mois plus tard.

Les Core Web Vitals servent de signal de classement Google et de levier de conversion.

Les gains de performance renforcent directement la visibilité SEO et l'engagement utilisateur.

Une discipline de performance continue évite les régressions après les livraisons de fonctionnalités.

Conclusion

Un site Next.js lent est presque toujours un problème d'implémentation, et non une limite du framework. En auditant vos données de terrain dans Search Console, en sélectionnant la bonne stratégie de rendu pour chaque type de page, en exploitant les React Server Components et en instaurant une surveillance continue, vous pouvez concevoir une application web rapide et évolutive offrant une expérience utilisateur exceptionnelle et d'excellents Core Web Vitals.

Prêt à éliminer vos goulots d'étranglement de performance ? Explorez nos services de performance Next.js chez Belk Digital ou contactez notre équipe d'ingénierie pour planifier un audit Core Web Vitals.

Questions Fréquentes

Next.js fournit des outils de performance tels que le découpage automatique du code, l'optimisation des images et le rendu serveur, mais aucun ne s'applique tout seul. Un site ralentit lorsque ces outils sont mal configurés ou inutilisés — le framework est rarement le goulot d'étranglement, c'est l'implémentation qui l'est.
Google considère qu'une page est « bonne » lorsque le LCP est de 2,5 secondes ou moins, l'INP de 200 millisecondes ou moins, et le CLS de 0,1 ou moins, mesurés au 75e percentile des sessions d'utilisateurs réels.
Testez votre URL sur Google PageSpeed Insights pour obtenir une vue combinée des données de laboratoire (Lighthouse) et de terrain (CrUX), puis consultez le rapport Core Web Vitals dans Google Search Console pour connaître le statut de réussite réel.
Utilisez le SSG pour les contenus qui ne changent pas à chaque requête, comme les pages marketing et les articles de blog. Utilisez le SSR uniquement si le contenu est véritablement personnalisé ou doit être rafraîchi à chaque chargement. L'ISR représente généralement le meilleur compromis pour les contenus mis à jour régulièrement.
Non. Les avantages de performance de l'App Router proviennent des React Server Components et du streaming, et ceux-ci n'aident que si les composants sont conçus pour les exploiter. Migrer de router sans modifier l'architecture des composants conserve généralement les mêmes problèmes de performance.
Les requêtes de rendu serveur non mises en cache, les démarrages à froid des fonctions serverless, l'absence de mise en cache CDN et les requêtes de base de données lentes ou non indexées sont les causes les plus fréquentes d'un TTFB élevé.
Vérifiez que les images au-dessus de la ligne de flottaison disposent de l'attribut priority, que la largeur (width) et la hauteur (height) sont définies pour éviter les décalages de mise en page, et que les images sont servies depuis une source optimisée plutôt qu'une URL externe non optimisée.
Lighthouse mesure des données de laboratoire sur une seule exécution. Les utilisateurs réels sur des connexions plus lentes ou des appareils anciens peuvent subir une expérience nettement moins bonne qu'un test de laboratoire contrôlé ne capture pas, c'est pourquoi les données de terrain CrUX ou Search Console sont plus importantes pour diagnostiquer la lenteur réelle.
Oui. Chaque composant marqué « use client » envoie du JavaScript au navigateur et augmente le temps d'hydratation, même si le composant lui-même n'a pas besoin d'interactivité. Convertir les composants non interactifs en composants serveur réduit cette surcharge.
Le coût dépend du périmètre. Des correctifs isolés comme l'optimisation des images et des polices sont relativement peu coûteux, tandis qu'une refonte de la stratégie de rendu ou l'optimisation des requêtes en base de données demande plus de temps d'ingénierie. Un audit de performance précède généralement un devis à périmètre fixe.
Oui, particulièrement concernant l'INP. Chaque script tiers entre en compétition avec le JavaScript du site pour le thread principal du navigateur, et un seul script d'analyse ou widget de chat non optimisé puede retarder la réactivité de façon mesurable.
Les Core Web Vitals constituent un signal de classement confirmé par Google, bien qu'ils servent davantage de critère de départage entre pages de pertinence similaire que de facteur annulant la qualité du contenu. Les pages lentes et instables enregistrent également des taux de rebond plus élevés, ce qui aggrave indirectement l'impact SEO.
Dans la plupart des cas, oui. Les ajustements de stratégie de rendu, la configuration de la mise en cache, l'optimisation des images et polices et le dégraissage du bundle peuvent généralement s'effectuer de manière incrémentale sur le code existant. Une reconstruction complète n'est nécessaire que si l'architecture sous-jacente ne peut supporter les correctifs.
Un audit de référence après le lancement, puis un réexamen à chaque livraison majeure de fonctionnalité ou changement de comportement de trafic, constitue un rythme adapté. La surveillance continue RUM permet d'intercepter les régressions entre deux audits formels.

Besoin d'un expert pour cela ?

Si vous cherchez à mettre en œuvre ces stratégies pour votre entreprise, notre équipe peut vous aider à planifier, construire et évoluer en toute confiance.

Contact

Prêt à Transformer Votre Présence Digitale?

Let's discuss how we can help you achieve your digital goals and create an exceptional online presence.