Bonnes pratiques Next.js
Appliquez ces règles lors de l'écriture ou de la révision de code Next.js.
Conventions de fichiers
Voir file-conventions.md pour :
- Structure du projet et fichiers spéciaux
- Segments de route (dynamiques, globaux, groupes)
- Routes parallèles et interceptées
- Renommage du middleware dans v16 (middleware → proxy)
Limites RSC
Détectez les motifs invalides de React Server Component.
Voir rsc-boundaries.md pour :
- Détection de composant client asynchrone (invalide)
- Détection de props non sérialisables
- Exceptions de Server Action
Motifs asynchrones
Changements d'API asynchrones de Next.js 15+.
Voir async-patterns.md pour :
paramsetsearchParamsasynchronescookies()etheaders()asynchrones- Codemod de migration
Sélection du runtime
Voir runtime-selection.md pour :
- Par défaut, utiliser le runtime Node.js
- Quand le runtime Edge est approprié
Directives
Voir directives.md pour :
'use client','use server'(React)'use cache'(Next.js)
Fonctions
Voir functions.md pour :
- Hooks de navigation :
useRouter,usePathname,useSearchParams,useParams - Fonctions serveur :
cookies,headers,draftMode,after - Fonctions de génération :
generateStaticParams,generateMetadata
Gestion des erreurs
Voir error-handling.md pour :
error.tsx,global-error.tsx,not-found.tsxredirect,permanentRedirect,notFoundforbidden,unauthorized(erreurs d'authentification)unstable_rethrowpour les blocs catch
Motifs de données
Voir data-patterns.md pour :
- Server Components vs Server Actions vs Route Handlers
- Éviter les cascades de données (
Promise.all, Suspense, preload) - Récupération de données dans les composants client
Route Handlers
Voir route-handlers.md pour :
- Bases de
route.ts - Conflits du gestionnaire GET avec
page.tsx - Comportement de l'environnement (pas de DOM React)
- Quand les utiliser vs Server Actions
Métadonnées et images OG
Voir metadata.md pour :
- Métadonnées statiques et dynamiques
- Fonction
generateMetadata - Génération d'images OG avec
next/og - Conventions de métadonnées basées sur les fichiers
Optimisation des images
Voir image.md pour :
- Toujours utiliser
next/imageplutôt que<img> - Configuration des images distantes
- Attribut
sizesréactif - Placeholders flous
- Chargement prioritaire pour LCP
Optimisation des polices
Voir font.md pour :
- Configuration de
next/font - Google Fonts, polices locales
- Intégration avec Tailwind CSS
- Préchargement des sous-ensembles
Regroupement (Bundling)
Voir bundling.md pour :
- Paquets incompatibles avec le serveur
- Imports CSS (pas de balises link)
- Polyfills (déjà inclus)
- Problèmes ESM/CommonJS
- Analyse du bundle
Scripts
Voir scripts.md pour :
next/scriptvs balises script natives- Les scripts en ligne nécessitent un
id - Stratégies de chargement
- Google Analytics avec
@next/third-parties
Erreurs d'hydratation
Voir hydration-error.md pour :
- Causes courantes (API navigateur, dates, HTML invalide)
- Débogage avec la superposition d'erreurs
- Corrections pour chaque cause
Limites Suspense
Voir suspense-boundaries.md pour :
- Sortie CSR avec
useSearchParamsetusePathname - Quels hooks nécessitent des limites Suspense
Routes parallèles et interceptées
Voir parallel-routes.md pour :
- Motifs de modale avec
@slotet intercepteurs(.) default.tsxpour les fallbacks- Fermeture correcte des modales avec
router.back()
Auto-hébergement
Voir self-hosting.md pour :
output: 'standalone'pour Docker- Gestionnaires de cache pour ISR multi-instances
- Ce qui fonctionne vs ce qui nécessite une configuration supplémentaire
Astuces de débogage
Voir debug-tricks.md pour :
- Point de terminaison MCP pour le débogage assisté par IA
- Reconstruire des routes spécifiques avec
--debug-build-paths