vercel-react-best-practices

Guide d'optimisation des performances React et Next.js issu de Vercel Engineering. À utiliser lors de l'écriture, la revue ou le refactoring de code React/Next.js pour garantir des schémas de performance optimaux.

Qu'est-ce que vercel-react-best-practices ?

Ce guide rassemble les meilleures pratiques d'optimisation des performances pour les applications React et Next.js, maintenues par l'équipe de Vercel. Il contient 70 règles réparties en 8 catégories, classées par priorité d'impact, pour guider le refactoring automatisé et la génération de code. Les développeurs l'utilisent lors de l'écriture de nouveaux composants, la mise en place de data fetching, la revue de code pour des problèmes de performance ou l'optimisation de la taille du bundle et des temps de chargement. Les catégories incluent l'élimination des cascades de requêtes (critique), l'optimisation de la taille du bundle (critique), la performance côté serveur (élevée), le data fetching côté client (moyen-élevé), l'optimisation des re-rendus (moyenne), la performance de rendu (moyenne), la performance JavaScript (faible-moyenne) et les schémas avancés (faible). Chaque règle est associée à un préfixe (par exemple `async-`, `bundle-`) et possède son propre fichier markdown détaillant les explications, exemples incorrects et corrects. Ce guide est conçu pour être utilisé avec les outils d'IA comme Claude Code, Cursor ou Codex lors de tâches de développement React/Next.js.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/vercel-labs/agent-skills/tree/main/skills/react-best-practices

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Vercel React Best Practices

Guide complet d'optimisation des performances pour les applications React et Next.js, maintenu par Vercel. Contient 70 règles réparties en 8 catégories, classées par ordre de priorité d'impact pour guider le refactoring automatisé et la génération de code.

Quand l'utiliser

Consultez ces directives lorsque :

  • Vous écrivez de nouveaux composants React ou des pages Next.js
  • Vous implémentez du data fetching (côté client ou serveur)
  • Vous révisez du code pour des problèmes de performance
  • Vous refactorez du code React/Next.js existant
  • Vous optimisez la taille du bundle ou les temps de chargement

Catégories de règles par priorité

PrioritéCatégorieImpactPréfixe
1Élimination des cascadesCRITIQUEasync-
2Optimisation de la taille du bundleCRITIQUEbundle-
3Performance côté serveurÉLEVÉserver-
4Data fetching côté clientMOYEN-ÉLEVÉclient-
5Optimisation des re-rendusMOYENrerender-
6Performance de renduMOYENrendering-
7Performance JavaScriptFAIBLE-MOYENjs-
8Schémas avancésFAIBLEadvanced-

Référence rapide

1. Élimination des cascades (CRITIQUE)

  • async-cheap-condition-before-await - Vérifier les conditions synchrones peu coûteuses avant d'attendre les flags ou valeurs distantes
  • async-defer-await - Déplacer await dans les branches où il est réellement utilisé
  • async-parallel - Utiliser Promise.all() pour les opérations indépendantes
  • async-dependencies - Utiliser better-all pour les dépendances partielles
  • async-api-routes - Démarrer les promesses tôt, attendre tard dans les routes API
  • async-suspense-boundaries - Utiliser Suspense pour diffuser le contenu

2. Optimisation de la taille du bundle (CRITIQUE)

  • bundle-barrel-imports - Importer directement, éviter les fichiers barrel
  • bundle-analyzable-paths - Privilégier les chemins d'import et de système de fichiers statiquement analysables pour éviter des bundles et traces trop larges
  • bundle-dynamic-imports - Utiliser next/dynamic pour les composants lourds
  • bundle-defer-third-party - Charger les outils d'analyse et de journalisation après l'hydratation
  • bundle-conditional - Charger les modules uniquement lorsque la fonctionnalité est activée
  • bundle-preload - Précharger au survol/au focus pour une rapidité perçue

3. Performance côté serveur (ÉLEVÉ)

  • server-auth-actions - Authentifier les actions serveur comme les routes API
  • server-cache-react - Utiliser React.cache() pour la déduplication par requête
  • server-cache-lru - Utiliser un cache LRU pour la mise en cache entre requêtes
  • server-dedup-props - Éviter la sérialisation en double dans les props RSC
  • server-hoist-static-io - Déplacer les E/S statiques (polices, logos) au niveau du module
  • server-no-shared-module-state - Éviter l'état mutable partagé au niveau du module dans RSC/SSR
  • server-serialization - Minimiser les données transmises aux composants clients
  • server-parallel-fetching - Restructurer les composants pour paralléliser les requêtes
  • server-parallel-nested-fetching - Enchaîner les requêtes imbriquées par élément dans Promise.all
  • server-after-nonblocking - Utiliser after() pour les opérations non bloquantes

4. Data fetching côté client (MOYEN-ÉLEVÉ)

  • client-swr-dedup - Utiliser SWR pour la déduplication automatique des requêtes
  • client-event-listeners - Dédupliquer les écouteurs d'événements globaux
  • client-passive-event-listeners - Utiliser des écouteurs passifs pour le défilement
  • client-localstorage-schema - Versionner et minimiser les données localStorage

5. Optimisation des re-rendus (MOYEN)

  • rerender-defer-reads - Ne pas s'abonner à un état uniquement utilisé dans les callbacks
  • rerender-memo - Extraire le travail coûteux dans des composants mémorisés
  • rerender-memo-with-default-value - Déplacer les props non primitives par défaut
  • rerender-dependencies - Utiliser des dépendances primitives dans les effets
  • rerender-derived-state - S'abonner à des booléens dérivés, pas aux valeurs brutes
  • rerender-derived-state-no-effect - Dériver l'état pendant le rendu, pas dans les effets
  • rerender-functional-setstate - Utiliser setState fonctionnel pour des callbacks stables
  • rerender-lazy-state-init - Passer une fonction à useState pour les valeurs coûteuses
  • rerender-simple-expression-in-memo - Éviter memo pour les primitives simples
  • rerender-split-combined-hooks - Diviser les hooks avec des dépendances indépendantes
  • rerender-move-effect-to-event - Mettre la logique d'interaction dans les gestionnaires d'événements
  • rerender-transitions - Utiliser startTransition pour les mises à jour non urgentes
  • rerender-use-deferred-value - Différer les rendus coûteux pour garder la saisie réactive
  • rerender-use-ref-transient-values - Utiliser des refs pour les valeurs transitoires fréquentes
  • rerender-no-inline-components - Ne pas définir de composants à l'intérieur d'autres composants

6. Performance de rendu (MOYEN)

  • rendering-animate-svg-wrapper - Animer le wrapper div, pas l'élément SVG
  • rendering-content-visibility - Utiliser content-visibility pour les longues listes
  • rendering-hoist-jsx - Extraire le JSX statique en dehors des composants
  • rendering-svg-precision - Réduire la précision des coordonnées SVG
  • rendering-hydration-no-flicker - Utiliser un script inline pour les données côté client uniquement
  • rendering-hydration-suppress-warning - Supprimer les avertissements de divergence attendus
  • rendering-activity - Utiliser le composant Activity pour afficher/masquer
  • rendering-conditional-render - Utiliser l'opérateur ternaire, pas && pour les conditionnels
  • rendering-usetransition-loading - Privilégier useTransition pour l'état de chargement
  • rendering-resource-hints - Utiliser les indices de ressources React DOM pour le préchargement
  • rendering-script-defer-async - Utiliser defer ou async sur les balises script

7. Performance JavaScript (FAIBLE-MOYEN)

  • js-batch-dom-css - Grouper les changements CSS via des classes ou cssText
  • js-index-maps - Construire une Map pour les recherches répétées
  • js-cache-property-access - Mettre en cache les propriétés d'objets dans les boucles
  • js-cache-function-results - Mettre en cache les résultats de fonctions dans une Map au niveau du module
  • js-cache-storage - Mettre en cache les lectures de localStorage/sessionStorage
  • js-combine-iterations - Combiner plusieurs filter/map en une seule boucle
  • js-length-check-first - Vérifier la longueur du tableau avant une comparaison coûteuse
  • js-early-exit - Retourner tôt des fonctions
  • js-hoist-regexp - Déplacer la création de RegExp en dehors des boucles
  • js-min-max-loop - Utiliser une boucle pour min/max au lieu de sort
  • js-set-map-lookups - Utiliser Set/Map pour des recherches O(1)
  • js-tosorted-immutable - Utiliser toSorted() pour l'immuabilité
  • js-flatmap-filter - Utiliser flatMap pour mapper et filtrer en une seule passe
  • js-request-idle-callback - Différer le travail non critique au temps d'inactivité du navigateur

8. Schémas avancés (FAIBLE)

  • advanced-effect-event-deps - Ne pas mettre les résultats de useEffectEvent dans les dépendances d'effet
  • advanced-event-handler-refs - Stocker les gestionnaires d'événements dans des refs
  • advanced-init-once - Initialiser l'application une fois par chargement
  • advanced-use-latest - useLatest pour des références de callback stables

Comment l'utiliser

Lisez les fichiers de règles individuels pour des explications détaillées et des exemples de code :

rules/async-parallel.md
rules/bundle-barrel-imports.md

Chaque fichier de règle contient :

  • Une brève explication de pourquoi c'est important
  • Un exemple de code incorrect avec explication
  • Un exemple de code correct avec explication
  • Contexte supplémentaire et références

Document complet compilé

Pour le guide complet avec toutes les règles développées : AGENTS.md

Individual skills in this repo

This repo contains 11 individual skills — each has its own dedicated page.

deploy-to-vercel

Deploy applications and websites to Vercel. Use when the user requests deployment actions like "deploy my app", "deploy and give me the link", "push this live", or "create a preview deployment".

vercel-cli-with-tokens

Deploy and manage projects on Vercel using token-based authentication. Use when working with Vercel CLI using access tokens rather than interactive login — e.g.

vercel-composition-patterns

React composition patterns that scale. Use when refactoring components with

vercel-labs/vercel-composition-patterns

React composition patterns that scale. Use when refactoring components with boolean prop proliferation, building flexible component libraries, or designing reusable APIs. Triggers on tasks involving compound components, render props, context providers, or component architecture. Includes React 19 API changes.

vercel-labs/vercel-react-best-practices

React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.

vercel-labs/vercel-react-native-skills

React Native and Expo best practices for building performant mobile apps. Use when building React Native components, optimizing list performance, implementing animations, or working with native modules. Triggers on tasks involving React Native, Expo, mobile performance, or native platform APIs.

vercel-labs/vercel-react-view-transitions

Guide for implementing smooth, native-feeling animations using React's View Transition API (`<ViewTransition>` component, `addTransitionType`, and CSS view transition pseudo-elements). Use this skill whenever the user wants to add page transitions, animate route changes, create shared element animations, animate enter/exit of components, animate list reorder, implement directional (forward/back) navigation animations, or integrate view transitions in Next.js. Also use when the user mentions view transitions, `startViewTransition`, `ViewTransition`, transition types, or asks about animating between UI states in React without third-party animation libraries.

vercel-optimize

Use for Vercel cost and performance optimization on deployed projects, especially Next.js, SvelteKit, Nuxt, and limited Astro apps. Collect Vercel metrics, usage, project config, and code scan results first; investigate only metric-backed candidates; produce ranked recommendations grounded in verified files and version-aware Vercel/framework docs. Trigger for Vercel bill reduction, slow or expensive routes, caching opportunities, Function Invocations, Build Minutes, Fast Data Transfer, Core Web Vitals, Bot Management, Fluid compute, or cost breakdown requests.

vercel-react-native-skills

React Native and Expo best practices for building performant mobile apps. Use

web-design-guidelines

Review UI code for Web Interface Guidelines compliance. Use when asked to

writing-guidelines

Review docs/prose for Writing Guidelines compliance. Use when asked to

Skills associés