Pular para o conteúdo
Skillpedia
Sites e telas (frontend)280 mil · #113

react-performance

Ajuda seu agente a otimizar a velocidade de sites feitos com React e Next.js. Ele segue regras para melhorar o carregamento e o desempenho.

O que ela faz

Este agente ajuda a otimizar o desempenho de sites feitos com React e Next.js. Ele organiza mais de 70 regras para tornar seu código mais rápido e eficiente.

Quando usar

  • ✓Ao escrever ou revisar código React/Next.js.
  • ✓Quando o site está lento para carregar ou responder.
  • ✓Para reduzir o tamanho dos arquivos que o navegador baixa.

Exemplo do que pedir para a IA

“Como posso otimizar o carregamento de imagens no meu site React?”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/affaan-m/ECC/blob/main/pi/core/skills/react-performance/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/affaan-m/ECC/blob/main/pi/core/skills/react-performance/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ele analisa seu código e sugere melhorias baseadas em padrões de engenharia de alta performance. As regras são divididas por importância, desde as mais críticas até as avançadas.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add affaan-m/ECC --skill react-performance

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/react-performance/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Performance do React

Padrões de otimização de performance para React 18/19 e Next.js, adaptados de Vercel Labs react-best-practices (MIT, v1.0.0). Esta habilidade organiza regras por prioridade e fornece orientação em árvore de decisão para revisão ativa de código e refatoração.

Quando Ativar

  • Escrevendo ou revisando código React/Next.js para performance
  • Diagnosticando carregamentos lentos de página, interações lentas ou alto uso de CPU no cliente
  • Auditando o tamanho do bundle ou regressões nos Core Web Vitals do Lighthouse
  • Removendo "waterfalls" (quedas) em Server Components / rotas de API
  • Reduzindo re-renderizações no lado do cliente
  • Otimizando listas longas, animações ou hidratação
  • Auditando escolhas de otimização em PRs que tocam em app/, pages/, components/ ou camadas de dados

Índice de Prioridade

Prioridade Categoria Prefixo Quando importa
1 — CRÍTICA Eliminação de "Waterfalls" async- Sempre que await é seguido por await independente
2 — CRÍTICA Otimização de Tamanho do Bundle bundle- JS de primeira carga, imports por rota, bibliotecas de terceiros
3 — ALTA Performance do Lado do Servidor server- RSC, Server Actions, rotas de API, SSR
4 — MÉDIA-ALTA Busca de Dados no Lado do Cliente client- SWR / TanStack Query / fetch bruto em hooks
5 — MÉDIA Otimização de Re-renderização rerender- Atualizações de estado de alta frequência, "fan-out" pai-filho
6 — MÉDIA Performance de Renderização rendering- Listas longas, animações, hidratação
7 — BAIXA-MÉDIA Performance de JavaScript js- Loops quentes, alocações frequentes
8 — BAIXA Padrões Avançados advanced- Integração efeito-evento, refs estáveis

1. Eliminação de "Waterfalls" (CRÍTICA)

"Waterfalls são o principal assassino de performance" — cada await sequencial adiciona latência total de rede.

Condições baratas antes do await

Verifique condições síncronas (props, env, flags fixas) antes de esperar por dados remotos.

// INCORRECT
async function Page({ id }: { id: string }) {
  const flag = await getFlag("show-page");
  if (!flag || !id) return null;
  const data = await getData(id);
  // ...
}

// CORRECT — short-circuit on cheap sync condition first
async function Page({ id }: { id: string }) {
  if (!id) return null;
  const flag = await getFlag("show-page");
  if (!flag) return null;
  const data = await getData(id);
}

Adie awaits até serem usados

Mova await para o branch que o utiliza.

// INCORRECT — awaits before deciding it needs the data
const user = await getUser(id);
if (mode === "guest") return renderGuest();
return renderUser(user);

// CORRECT
if (mode === "guest") return renderGuest();
const user = await getUser(id);
return renderUser(user);

Promise.all para trabalho independente

// INCORRECT — sequential
const user = await getUser(id);
const posts = await getPosts(id);
const followers = await getFollowers(id);

// CORRECT — parallel
const [user, posts, followers] = await Promise.all([
  getUser(id),
  getPosts(id),
  getFollowers(id),
]);

Dependências parciais — comece cedo, espere tarde

// CORRECT — kick off all promises, await only when each result is needed
const userP = getUser(id);
const postsP = getPosts(id);
const profile = await getProfile(id);
if (profile.private) return null;
const [user, posts] = await Promise.all([userP, postsP]);

Suspense para streaming

Empurre os limites de <Suspense> para perto dos dados, para que a página pinte o que puder enquanto sub-árvores mais lentas fazem streaming. O trade-off: mudança de layout quando o conteúdo chega — reserve espaço (esqueleto ou min-height).

Server Components: paralelismo através de composição

// INCORRECT — sibling awaits run sequentially inside one component
export default async function Page() {
  const user = await getUser();
  const cart = await getCart();
  return <View user={user} cart={cart} />;
}

// CORRECT — split into children, React runs them in parallel
export default async function Page() {
  return (
    <View>
      <UserSection />
      <CartSection />
    </View>
  );
}

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

Imports diretos, não "barrels"

Arquivos "barrel" index.ts forçam o bundler a percorrer todo o grafo de módulos, mesmo quando o tree-shaking remove a maior parte. Imports diretos economizam 200-800ms de JS de primeira carga em muitos aplicativos do mundo real.

// INCORRETO
import { Button, Card, Modal } from "@/components";

// CORRETO
import { Button } from "@/components/Button";
import { Card } from "@/components/Card";

…
Perguntas frequentes

O que são 'waterfalls'?

São chamadas sequenciais que atrasam o carregamento. O agente ajuda a fazer essas chamadas em paralelo para acelerar tudo.

O que é 'bundle size'?

É o tamanho total dos arquivos JavaScript que o navegador precisa baixar. Reduzir isso torna o site mais rápido, especialmente em conexões lentas.

Preciso saber muito sobre React para usar isso?

Não, o agente explica os conceitos de forma simples e foca em aplicar as melhores práticas para melhorar o desempenho.

Detalhes

Descrição original do autor

React and Next.js performance optimization patterns adapted from Vercel Engineering's React Best Practices (https://github.com/vercel-labs/agent-skills). Organizes 70+ rules across 8 priority categories — waterfalls, bundle size, server-side, client fetching, re-render, rendering, JS micro-perf, advanced. Use when writing, reviewing, or refactoring React/Next.js code for performance.

repo: affaan-m/ECC

Popularidade

Estrelas no GitHub
280 mil
Posição no ranking
#113
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas