práticas-recomendadas-react-vercel

Diretrizes de otimização de desempenho para React e Next.js da Vercel Engineering. Deve ser usado ao escrever, revisar ou refatorar código React/Next.js para garantir padrões de desempenho ideais.

O que é práticas-recomendadas-react-vercel?

Este skill fornece um guia abrangente de otimização de desempenho para aplicações React e Next.js, mantido pela Vercel. Ele contém 70 regras organizadas em 8 categorias, priorizadas por impacto, para orientar refatoração automatizada e geração de código. O skill é acionado ao escrever novos componentes React ou páginas Next.js, implementar busca de dados (cliente ou servidor), revisar código para problemas de desempenho, refatorar código React/Next.js existente ou otimizar tamanho do bundle e tempo de carregamento. As regras são categorizadas por prioridade, desde 'Eliminação de Waterfalls' (CRÍTICO) até 'Padrões Avançados' (BAIXO), com prefixos como `async-`, `bundle-`, `server-`, `client-`, `rerender-`, `rendering-`, `js-` e `advanced-`. Cada regra possui um arquivo Markdown individual com explicações, exemplos de código incorretos e corretos, e contexto adicional. O skill é compatível com ferramentas de agente de IA, como Claude Code, Cursor e Codex, e é ativado automaticamente durante tarefas de codificação, revisão ou refatoração que envolvem React, Next.js, busca de dados ou otimização de desempenho.

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

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Práticas Recomendadas React da Vercel

Guia abrangente de otimização de desempenho para aplicações React e Next.js, mantido pela Vercel. Contém 70 regras em 8 categorias, priorizadas por impacto para orientar refatoração automatizada e geração de código.

Quando Aplicar

Consulte estas diretrizes ao:

  • Escrever novos componentes React ou páginas Next.js
  • Implementar busca de dados (cliente ou servidor)
  • Revisar código para problemas de desempenho
  • Refatorar código React/Next.js existente
  • Otimizar tamanho do bundle ou tempos de carregamento

Categorias de Regras por Prioridade

PrioridadeCategoriaImpactoPrefixo
1Eliminando WaterfallsCRÍTICOasync-
2Otimização do Tamanho do BundleCRÍTICObundle-
3Desempenho no Lado do ServidorALTOserver-
4Busca de Dados no Lado do ClienteMÉDIO-ALTOclient-
5Otimização de Re-renderizaçãoMÉDIOrerender-
6Desempenho de RenderizaçãoMÉDIOrendering-
7Desempenho JavaScriptBAIXO-MÉDIOjs-
8Padrões AvançadosBAIXOadvanced-

Referência Rápida

1. Eliminando Waterfalls (CRÍTICO)

  • async-cheap-condition-before-await - Verifique condições síncronas baratas antes de aguardar flags ou valores remotos
  • async-defer-await - Mova await para branches onde é realmente usado
  • async-parallel - Use Promise.all() para operações independentes
  • async-dependencies - Use better-all para dependências parciais
  • async-api-routes - Inicie promises cedo, aguarde tarde em rotas de API
  • async-suspense-boundaries - Use Suspense para transmitir conteúdo

2. Otimização do Tamanho do Bundle (CRÍTICO)

  • bundle-barrel-imports - Importe diretamente, evite arquivos barrel
  • bundle-analyzable-paths - Prefira caminhos de importação e sistema de arquivos estaticamente analisáveis para evitar bundles e traces amplos
  • bundle-dynamic-imports - Use next/dynamic para componentes pesados
  • bundle-defer-third-party - Carregue analytics/logging após a hidratação
  • bundle-conditional - Carregue módulos apenas quando a funcionalidade estiver ativada
  • bundle-preload - Pré-carregue ao passar o mouse/foco para velocidade percebida

3. Desempenho no Lado do Servidor (ALTO)

  • server-auth-actions - Autentique server actions como rotas de API
  • server-cache-react - Use React.cache() para desduplicação por requisição
  • server-cache-lru - Use cache LRU para cache entre requisições
  • server-dedup-props - Evite serialização duplicada em props RSC
  • server-hoist-static-io - Eleve I/O estático (fontes, logos) para o nível do módulo
  • server-no-shared-module-state - Evite estado de requisição mutável em nível de módulo em RSC/SSR
  • server-serialization - Minimize dados passados para componentes cliente
  • server-parallel-fetching - Reestruture componentes para paralelizar buscas
  • server-parallel-nested-fetching - Encadeie buscas aninhadas por item em Promise.all
  • server-after-nonblocking - Use after() para operações não bloqueantes

4. Busca de Dados no Lado do Cliente (MÉDIO-ALTO)

  • client-swr-dedup - Use SWR para desduplicação automática de requisições
  • client-event-listeners - Desduplique listeners de eventos globais
  • client-passive-event-listeners - Use listeners passivos para scroll
  • client-localstorage-schema - Version e minimize dados do localStorage

5. Otimização de Re-renderização (MÉDIO)

  • rerender-defer-reads - Não se inscreva em estado usado apenas em callbacks
  • rerender-memo - Extraia trabalho caro em componentes memoizados
  • rerender-memo-with-default-value - Eleve props não primitivas padrão
  • rerender-dependencies - Use dependências primitivas em effects
  • rerender-derived-state - Inscreva-se em booleanos derivados, não em valores brutos
  • rerender-derived-state-no-effect - Derive estado durante a renderização, não em effects
  • rerender-functional-setstate - Use setState funcional para callbacks estáveis
  • rerender-lazy-state-init - Passe função para useState para valores caros
  • rerender-simple-expression-in-memo - Evite memo para primitivos simples
  • rerender-split-combined-hooks - Separe hooks com dependências independentes
  • rerender-move-effect-to-event - Coloque lógica de interação em event handlers
  • rerender-transitions - Use startTransition para atualizações não urgentes
  • rerender-use-deferred-value - Adie renderizações caras para manter a entrada responsiva
  • rerender-use-ref-transient-values - Use refs para valores transitórios frequentes
  • rerender-no-inline-components - Não defina componentes dentro de componentes

6. Desempenho de Renderização (MÉDIO)

  • rendering-animate-svg-wrapper - Anime wrapper div, não o elemento SVG
  • rendering-content-visibility - Use content-visibility para listas longas
  • rendering-hoist-jsx - Extraia JSX estático para fora de componentes
  • rendering-svg-precision - Reduza a precisão de coordenadas SVG
  • rendering-hydration-no-flicker - Use script inline para dados exclusivos do cliente
  • rendering-hydration-suppress-warning - Suprima incompatibilidades esperadas
  • rendering-activity - Use o componente Activity para mostrar/esconder
  • rendering-conditional-render - Use ternário, não &&, para condicionais
  • rendering-usetransition-loading - Prefira useTransition para estado de carregamento
  • rendering-resource-hints - Use dicas de recurso do React DOM para pré-carregamento
  • rendering-script-defer-async - Use defer ou async em tags script

7. Desempenho JavaScript (BAIXO-MÉDIO)

  • js-batch-dom-css - Agrupe mudanças CSS via classes ou cssText
  • js-index-maps - Construa Map para buscas repetidas
  • js-cache-property-access - Cacheie propriedades de objetos em loops
  • js-cache-function-results - Cacheie resultados de funções em Map no nível do módulo
  • js-cache-storage - Cacheie leituras de localStorage/sessionStorage
  • js-combine-iterations - Combine múltiplos filter/map em um único loop
  • js-length-check-first - Verifique o tamanho do array antes de comparação cara
  • js-early-exit - Retorne cedo de funções
  • js-hoist-regexp - Eleve a criação de RegExp para fora de loops
  • js-min-max-loop - Use loop para min/max em vez de sort
  • js-set-map-lookups - Use Set/Map para buscas O(1)
  • js-tosorted-immutable - Use toSorted() para imutabilidade
  • js-flatmap-filter - Use flatMap para mapear e filtrar em uma passada
  • js-request-idle-callback - Adie trabalho não crítico para o tempo ocioso do navegador

8. Padrões Avançados (BAIXO)

  • advanced-effect-event-deps - Não coloque resultados de useEffectEvent em dependências de effect
  • advanced-event-handler-refs - Armazene event handlers em refs
  • advanced-init-once - Inicialize o app uma vez por carregamento do app
  • advanced-use-latest - useLatest para refs de callback estáveis

Como Usar

Leia arquivos de regra individuais para explicações detalhadas e exemplos de código:

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

Cada arquivo de regra contém:

  • Breve explicação do porquê é importante
  • Exemplo de código incorreto com explicação
  • Exemplo de código correto com explicação
  • Contexto adicional e referências

Documento Compilado Completo

Para o guia completo com todas as regras expandidas: 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

Habilidades Relacionadas