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
Mensagem pronta para colar
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-performanceOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/react-performance/SKILL.md -o SKILL.mdConteú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
awaitsequencial 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
Comentários
- …
Mais skills deste repositório
accessibility
Ajuda seu agente a criar interfaces que todos possam usar. Garante que sites e aplicativos funcionem bem para pessoas com deficiência, como cegos ou com mobilidade reduzida.
affaan-m/ECC
agent-architecture-audit
Faz seu agente verificar se tudo está funcionando corretamente. Ele encontra e conserta problemas em sistemas de IA, garantindo que funcionem como esperado.
affaan-m/ECC
agent-eval
Ajuda seu agente a comparar diferentes ferramentas de programação de IA. Ele mede qual é mais rápido, barato e confiável para realizar tarefas específicas.
affaan-m/ECC
agent-harness-construction
Faz seu agente entender melhor como realizar tarefas. Ele otimiza as ferramentas e instruções que o agente usa para aumentar suas chances de sucesso.
affaan-m/ECC
Skills parecidas
web-artifacts-builder
Ajuda seu agente a construir artefatos HTML complexos com tecnologias modernas. Ideal para interfaces com gerenciamento de estado e componentes avançados.
anthropics/skills
frontend-ui-engineering
Ajuda seu agente a criar interfaces de usuário bonitas e fáceis de usar. Faz com que o resultado pareça profissional e funcione bem em diferentes dispositivos.
addyosmani/agent-skills
export-nextjs-handoff
Faz seu agente transformar designs em código Next.js. Ele cria componentes, estilos e notas para facilitar o trabalho do desenvolvedor.
nexu-io/open-design