react-component-performance
Permite que seu agente identifique e corrija problemas de lentidão em componentes React. Ajuda a tornar as interfaces mais rápidas e responsivas.
O que ela faz
Ajuda a encontrar e corrigir partes lentas do seu código React. Ele identifica o que está causando lentidão e sugere como otimizar, para que seu aplicativo fique mais rápido sem mudar o que ele faz.
Quando usar
- ✓Quando seu aplicativo React está lento.
- ✓Se uma lista no seu aplicativo demora para carregar ou rolar.
- ✓Quando você quer melhorar a performance do seu código.
Exemplo do que pedir para a IA
“Meu aplicativo React está lento ao carregar a lista de usuários, o que posso fazer?”
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 para ver quais partes estão demorando para carregar. Depois, sugere mudanças como 'travar' certas informações ou separar partes do código para que tudo rode mais rápido.
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 sickn33/agentic-awesome-skills --skill react-component-performanceOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/react-component-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 de Componentes React
Visão Geral
Identifique gargalos de renderização, isole atualizações custosas e aplique otimizações direcionadas sem alterar o comportamento da UI.
Quando Usar
- Quando o usuário pedir para analisar ou melhorar um componente React lento.
- Quando você precisar reduzir re-renderizações, lentidão em listas ou trabalho de renderização custoso em UIs React.
Fluxo de Trabalho
- Reproduza ou descreva a lentidão.
- Identifique o que dispara re-renderizações (atualizações de estado, mudanças em props, efeitos).
- Isole o estado que muda rapidamente de subárvores pesadas.
- Estabilize props e manipuladores; memorize onde vale a pena.
- Reduza o trabalho custoso (cálculo, tamanho do DOM, tamanho da lista).
- Valide: abra o Profiler do React DevTools → grave a interação → inspecione o Flamegraph em busca de componentes renderizando por mais de ~16 ms → compare com uma gravação de linha de base pré-otimização.
Checklist
- Meça: use o Profiler do React DevTools ou registre renderizações; capture a linha de base.
- Encontre mudanças: identifique estado atualizado em um timer, scroll, input ou animação.
- Divida: mova o estado de "tick" para um filho; mantenha listas pesadas estáticas.
- Memorize: envolva linhas de folha com
memoapenas quando as props forem estáveis. - Estabilize props: use
useCallback/useMemopara manipuladores e valores derivados. - Evite trabalho derivado na renderização: pré-calcule ou calcule dentro de helpers memorizados.
- Controle o tamanho da lista: use windowing/virtualização para listas longas; evite renderizar itens ocultos.
- Chaves: garanta chaves estáveis; evite índices quando a ordem pode mudar.
- Efeitos: verifique arrays de dependência; evite efeitos que re-executam a cada renderização.
- Estilo/layout: observe thrash de layout custoso ou renderizações grandes de Markdown/diff.
Padrões de Otimização
Isole o estado de "tick"
Mova um contador de timer ou animação para um filho para que a lista pai nunca re-renderize a cada tick.
// ❌ Before – entire parent (and list) re-renders every second
function Dashboard({ items }: { items: Item[] }) {
const [tick, setTick] = useState(0);
useEffect(() => {
const id = setInterval(() => setTick(t => t + 1), 1000);
return () => clearInterval(id);
}, []);
return (
<>
<Clock tick={tick} />
<ExpensiveList items={items} /> {/* re-renders every second */}
</>
);
}
// ✅ After – only <Clock> re-renders; list is untouched
function Clock() {
const [tick, setTick] = useState(0);
useEffect(() => {
const id = setInterval(() => setTick(t => t + 1), 1000);
return () => clearInterval(id);
}, []);
return <span>{tick}s</span>;
}
function Dashboard({ items }: { items: Item[] }) {
return (
<>
<Clock />
<ExpensiveList items={items} />
</>
);
}
Estabilize callbacks com useCallback + memo
// ❌ Before – new handler reference on every render busts Row memo
function List({ items }: { items: Item[] }) {
const handleClick = (id: string) => console.log(id); // new ref each render
return items.map(item => <Row key={item.id} item={item} onClick={handleClick} />);
}
// ✅ After – stable handler; Row only re-renders when its own item changes
const Row = memo(({ item, onClick }: RowProps) => (
<li onClick={() => onClick(item.id)}>{item.name}</li>
));
function List({ items }: { items: Item[] }) {
const handleClick = useCallback((id: string) => console.log(id), []);
return items.map(item => <Row key={item.id} item={item} onClick={handleClick} />);
}
Prefira dados derivados fora da renderização
// ❌ Before – recomputes on every render
function Summary({ orders }: { orders: Order[] }) {
const total = orders.reduce((sum, o) => sum + o.amount, 0); // runs every render
return <p>Total: {total}</p>;
}
// ✅ After – recomputes only when orders changes
function Summary({ orders }: { orders: Order[] }) {
const total = useMemo(() => orders.reduce((sum, o) => sum + o.amount, 0), [orders]);
return <p>Total: {total}</p>;
}
Padrões adicionais
- Divida linhas: extraia linhas de lista para componentes memorizados com props estreitas.
- Adie renderização pesada: renderize preguiçosamente ou colapse conteúdo custoso até ser expandido.
Passos de Validação de Profiling
- Abra a aba Profiler do React DevTools.
- Clique em Record, realize a interação lenta e depois em Stop.
- Mude para a visualização Flamegraph; qualquer barra rotulada com um componente e tempo > ~16 ms é um candidato.
- Use o Ranked chart para ordenar por tempo de renderização próprio e mirar nos principais infratores.
- Aplique uma otimização por vez, grave novamente e compare as contagens e durações de renderização com a linha de base.
Referência de Exemplo
…
Perguntas frequentes
O que são 'render hotspots'?
São partes do seu código que demoram muito para serem exibidas na tela, causando lentidão.
O que significa 'isolar atualizações caras'?
Significa separar as partes do código que mudam com frequência daquelas que são mais pesadas ou complexas, para que elas não causem lentidão desnecessária.
Preciso mudar a aparência do meu aplicativo?
Não, o objetivo é melhorar a velocidade sem alterar o visual ou a funcionalidade do seu aplicativo.
Detalhes
Descrição original do autor
Diagnose slow React components and suggest targeted performance fixes.
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #3960
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
benchmark-optimization-loop
Faz seu agente melhorar a velocidade de algo de forma medida. Ele testa várias versões e escolhe a mais rápida que ainda funciona corretamente.
affaan-m/ECC
change-impact
Ajuda seu agente a analisar o impacto de mudanças no código antes de fazê-las. Ele compara o planejado com o real depois, cobrindo caminhos, dados, testes e documentação. É útil para mudanças arriscadas ou que afetam várias partes do sistema.
affaan-m/ECC
click-path-audit
Faz seu agente rastrear todos os botões e interações do usuário para achar bugs. Ele encontra problemas onde funções parecem funcionar sozinhas, mas falham juntas. Útil quando bugs persistem mesmo após depuração.
affaan-m/ECC