Comment optimiser les performances de votre site Next.js
6 avril 2025

Introduction à l'optimisation de performance dans Next.js 15
L'optimisation des performances est cruciale pour offrir une expérience utilisateur fluide et agréable. Next.js 15, la dernière version majeure du framework, introduit des améliorations significatives en termes de performances et propose des outils avancés pour optimiser votre application.
Utiliser le nouveau composant Image
Next.js 15 a amélioré son composant Image pour offrir des performances encore meilleures :
- Optimisation automatique des images avec WebP et AVIF
- Chargement prioritaire intelligent basé sur le viewport
- Support amélioré pour les images responsive
Exemple de code avec les nouvelles options :
import Image from 'next/image'
export default function OptimizedImage() {
return (
<Image
src="/mon-image.jpg"
alt="Description"
width={500}
height={300}
priority={false}
fetchPriority="auto"
sizes="(max-width: 768px) 100vw, 50vw"
/>
)
}
Tirer profit du React Server Components
Next.js 15 utilise pleinement les React Server Components, permettant de réduire significativement la taille du JavaScript côté client :
// app/page.js - Un Server Component par défaut
export default async function Page() {
// Cette logique s'exécute uniquement sur le serveur
const data = await fetch('https://api.example.com/data')
const products = await data.json()
return (
<div>
{products.map(product => (
<ProductCard key={product.id} product={product} />
))}
</div>
)
}
// Pour les composants qui nécessitent l'interactivité côté client
'use client'
import { useState } from 'react'
export function InteractiveComponent() {
const [count, setCount] = useState(0)
// Ce code s'exécute côté client
}
Optimiser les polices avec next/font
Next.js 15 a amélioré le système de gestion des polices pour une expérience encore plus performante :
import { Inter, Roboto } from 'next/font/google'
// Chargement optimisé de plusieurs polices
const inter = Inter({
subsets: ['latin'],
display: 'swap',
preload: true
})
const roboto = Roboto({
weight: ['400', '700'],
subsets: ['latin'],
display: 'swap'
})
export default function Layout({ children }) {
return (
<html lang="fr" className={inter.className}>
<body>
<h1 className={roboto.className}>Titre en Roboto</h1>
{children}
</body>
</html>
)
}
Nouvelles stratégies de mise en cache dans Next.js 15
Next.js 15 propose un système de cache plus intelligent et plus flexible :
// Exemple de fetch avec options de cache avancées
async function getData() {
const res = await fetch('https://api.example.com/data', {
next: {
revalidate: 3600, // Revalider toutes les heures
tags: ['products'], // Utiliser des tags pour invalider le cache
}
})
if (!res.ok) {
throw new Error('Échec de la récupération des données')
}
return res.json()
}
// Invalider manuellement le cache avec les tags
import { revalidateTag } from 'next/cache'
export async function POST(request) {
// Traitement de la requête
revalidateTag('products')
return Response.json({ revalidated: true, now: Date.now() })
}
Utiliser l'App Router pour des performances optimales
Next.js 15 a perfectionné l'App Router avec de nouvelles fonctionnalités pour améliorer les performances :
- Parallel Routes pour charger simultanément plusieurs sections
- Intercepting Routes pour des transitions fluides
- Partial Rendering pour ne mettre à jour que les parties nécessaires
Analyser les performances avec le nouveau Dashboard
Next.js 15 inclut un tableau de bord de performance intégré pour surveiller et améliorer les métriques clés :
- Core Web Vitals automatiquement mesurés
- Analyse des bundles JavaScript
- Monitoring des Server Components vs Client Components
- Détection des problèmes de performance en temps réel
Conclusion
Next.js 15 apporte des améliorations significatives en termes de performance et d'expérience développeur. En utilisant les Server Components, les nouvelles stratégies de cache, et l'App Router optimisé, vous pouvez créer des applications web plus rapides et plus réactives. Le nouveau système d'analyse de performance intégré vous aide également à identifier et résoudre les problèmes avant qu'ils n'affectent vos utilisateurs.