Skip to main content
Guide performance11 min de lecture
Guide performance

Performance Next.js Atteindre Lighthouse 95+

Techniques concrètes pour des performances Next.js maximales : LCP sous 1 seconde, CLS proche de zéro, INP sous 50 ms. Grâce à ces méthodes, nos projets atteignent durablement des scores Lighthouse supérieurs à 95.

Optimisation des performances

Comprendre les Core Web Vitals

Les Core Web Vitals de Google sont les indicateurs de performance décisifs pour le SEO et l'expérience utilisateur : LCP (Largest Contentful Paint) : combien de temps faut-il pour que le plus grand élément visible de la page soit chargé ? Objectif : moins de 2,5 secondes, idéalement moins de 1 seconde. INP (Interaction to Next Paint) : à quelle vitesse la page réagit-elle aux interactions de l'utilisateur ? Objectif : moins de 200 ms, idéalement moins de 50 ms. CLS (Cumulative Layout Shift) : dans quelle mesure les éléments se déplacent-ils pendant le chargement ? Objectif : moins de 0,1, idéalement 0,02 ou moins. Next.js offre nativement de meilleures conditions pour ces trois métriques que WordPress ou les SPA classiques, mais des implémentations incorrectes peuvent anéantir ces avantages.
Google utilise les Core Web Vitals comme facteur de classement. Les pages aux bons vitals se classent en moyenne 15 à 25 % mieux que des pages comparables aux vitals médiocres.

Optimisation des images avec next/image

Les images sont le principal tueur de LCP. Next.js `` résout la plupart des problèmes automatiquement : Conversion WebP/AVIF automatique : Next.js livre les images dans le meilleur format pris en charge par le navigateur. AVIF est 40 à 60 % plus léger que JPEG à qualité équivalente. Lazy loading : les images situées sous la fenêtre d'affichage ne se chargent que lorsque l'utilisateur fait défiler. Définit `loading="lazy"` correctement. Flag priority pour les images LCP : l'image principale (souvent l'image hero) doit avoir `priority` afin d'être chargée tôt. L'absence de ce flag est une cause fréquente de mauvais LCP. Dimensions fixes : toujours définir `width` et `height` pour éviter le CLS causé par des images chargées tardivement. Placeholder flou : `placeholder="blur"` affiche un placeholder flou pendant le chargement et empêche les sauts visuels.
Erreur fréquente : l'image hero sans flag priority. Ajoutez priority à toutes les images above-the-fold — cela améliore souvent le LCP de 0,5 à 1,5 seconde.

Choisir la bonne stratégie de rendu

Next.js propose plusieurs modes de rendu — un mauvais choix coûte en performance : Static Generation (SSG) : les pages sont rendues au moment du build et livrées sous forme de fichiers HTML statiques. Temps de chargement le plus rapide possible. Convient aux pages qui changent rarement (landing pages, articles de blog). Incremental Static Regeneration (ISR) : les pages statiques sont rafraîchies en arrière-plan. Idéal pour les pages qui changent occasionnellement (pages produit, actualités). Le paramètre `revalidate` pilote la fréquence de mise à jour. Server-Side Rendering (SSR) : les pages sont rendues à chaque requête. Nécessaire pour des contenus personnalisés, mais plus lent. Attention : utiliser SSR pour tout est une erreur de performance courante. React Server Components (RSC) : avec l'App Router, les composants peuvent être rendus côté serveur — sans envoyer de JavaScript au client. Réduit la taille du bundle et améliore l'INP.

Des problèmes de performance dans votre projet Next.js ?

Optimiser les polices et les scripts externes

next/font pour Google Fonts N'intégrez jamais Google Fonts directement via CDN. `next/font/google` charge les polices en local et élimine la requête réseau vers les serveurs de Google — économise 200 à 500 ms et améliore la protection des données. next/script pour les scripts externes Analytics, widgets de chat, outils de test A/B — intégrez-les tous avec `