gsap-performance
Ajuda seu agente a otimizar animações GSAP. Garante que as animações fiquem fluidas e rápidas, evitando travamentos na tela.
O que ela faz
Esta ferramenta ajuda a fazer animações no seu site ficarem mais rápidas e suaves, evitando que elas travem ou fiquem lentas. Ela ensina a usar as melhores técnicas para que as animações rodem a 60 quadros por segundo, mesmo em computadores menos potentes.
Quando usar
- ✓Quando você quer que as animações do seu site rodem sem travar.
- ✓Se você está criando animações complexas e quer garantir que elas fiquem fluidas.
- ✓Quando alguém pergunta como deixar as animações mais rápidas ou suaves.
Exemplo do que pedir para a IA
“Como faço para que minhas animações GSAP rodem a 60fps?”
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
Ela sugere usar propriedades que o navegador anima mais facilmente, como 'transform' e 'opacity', em vez de outras que podem deixar a animação lenta. Também ensina a agrupar ações e a usar truques para que o navegador não precise fazer tanto trabalho a cada animação.
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 nexu-io/open-design --skill gsap-performanceOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/nexu-io/open-design/main/skills/gsap-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.
Desempenho do GSAP
Compilado das habilidades oficiais do GSAP da GreenSock: https://github.com/greensock/gsap-skills
Quando Usar Esta Habilidade
Aplique ao otimizar animações GSAP para 60fps fluidos, reduzir o custo de layout/pintura, ou quando o usuário perguntar sobre desempenho, travamentos (jank) ou melhores práticas para animações rápidas.
Habilidades relacionadas: Crie animações com gsap-core (transforms, autoAlpha) e gsap-timeline; para desempenho do ScrollTrigger veja gsap-scrolltrigger.
Prefira Transform e Opacidade
Animar transform (x, y, scaleX, scaleY, rotation, rotationX, rotationY, skewX, skewY) e opacity mantém o trabalho no compositor e evita layout e a maior parte da pintura. Evite animar propriedades pesadas de layout quando um transform pode alcançar o mesmo efeito.
- ✅ Prefira: x, y, scale, rotation, opacity.
- ❌ Evite quando possível: width, height, top, left, margin, padding (eles disparam layout e podem causar travamentos).
Os x e y do GSAP usam transforms (translate) por padrão; use-os em vez de left/top para movimento.
will-change
Use will-change em CSS em elementos que serão animados. Isso sugere ao navegador para promover a camada.
will-change: transform;
Agrupe Leituras e Escritas
O GSAP agrupa atualizações internamente. Ao misturar GSAP com leituras/escritas diretas no DOM ou código dependente de layout, evite intercalar leituras e escritas de forma que cause repetição de "layout thrashing". Prefira fazer todas as leituras primeiro, depois todas as escritas (ou deixe o GSAP lidar com as escritas de uma vez).
Muitos Elementos (Stagger, Listas)
- Use stagger em vez de muitos tweens separados com atrasos manuais quando a animação for a mesma; é mais eficiente.
- Para listas longas, considere virtualização ou animar apenas os itens visíveis; evite criar centenas de tweens simultâneos se isso causar travamentos.
- Reutilize timelines sempre que possível; evite criar novas timelines a cada frame.
Propriedades Atualizadas Frequentemente (ex: seguidores de mouse)
Prefira gsap.quickTo() para propriedades que são atualizadas com frequência (ex: x/y de seguidores de mouse). Ele reutiliza um único tween em vez de criar novos tweens a cada atualização.
let xTo = gsap.quickTo("#id", "x", { duration: 0.4, ease: "power3" }),
yTo = gsap.quickTo("#id", "y", { duration: 0.4, ease: "power3" });
document.querySelector("#container").addEventListener("mousemove", (e) => {
xTo(e.pageX);
yTo(e.pageY);
});
ScrollTrigger e Desempenho
- pin: true promove o elemento fixado; fixe apenas o que for necessário.
- scrub com um valor pequeno (ex:
scrub: 1) pode reduzir o trabalho durante a rolagem; teste em dispositivos de baixo desempenho. - Chame ScrollTrigger.refresh() apenas quando o layout realmente mudar (ex: após o carregamento do conteúdo), não a cada redimensionamento; use debounce quando possível.
Reduza o Trabalho Simultâneo
- Pause ou mate animações fora da tela ou inativas quando elas não estiverem visíveis (ex: quando o usuário se afasta).
- Evite animar um grande número de propriedades em muitos elementos ao mesmo tempo; simplifique ou sequencie se necessário.
Melhores Práticas
- ✅ Anime transform e opacity; use will-change em CSS apenas em elementos que animam.
- ✅ Use stagger em vez de muitos tweens separados com atrasos manuais quando a animação for a mesma.
- ✅ Use gsap.quickTo() para propriedades atualizadas frequentemente (ex: seguidores de mouse).
- ✅ Limpe ou mate animações fora da tela; chame ScrollTrigger.refresh() quando o layout mudar, com debounce quando possível.
Não Faça
- ❌ Anime width/ height/ top/ left para movimento quando x/ y/ scale podem alcançar o mesmo visual.
- ❌ Defina will-change ou force3D em todos os elementos "por via das dúvidas"; use para elementos que estão realmente animando.
- ❌ Crie centenas de tweens ou ScrollTriggers sobrepostos sem testar em dispositivos de baixo desempenho.
- ❌ Ignore a limpeza; tweens e ScrollTriggers perdidos continuam rodando e podem prejudicar o desempenho e a correção.
Perguntas frequentes
O que é 'layout thrashing'?
É quando o navegador precisa recalcular a posição e o tamanho de muitos elementos na tela repetidamente, o que deixa a animação lenta.
O que é 'will-change'?
É uma dica para o navegador que diz 'esse elemento vai mudar em breve', ajudando ele a se preparar para animar de forma mais eficiente.
Por que evitar animar 'width' e 'height'?
Porque mudar a largura ou altura de um elemento força o navegador a recalcular a posição de outros elementos, o que consome mais recursos e pode causar lentidão.
Detalhes
Descrição original do autor
Official GSAP skill for performance — prefer transforms, avoid layout thrashing, will-change, batching. Use when optimizing GSAP animations, reducing jank, or when the user asks about animation performance, FPS, or smooth 60fps.
repo: nexu-io/open-design
Popularidade
- Estrelas no GitHub
- 101 mil
- Posição no ranking
- #721
- Licença
- Apache-2.0
- Atualizada em
- 16/10/2026
Comentários
- …
Mais skills deste repositório
sample-plugin
Faz seu agente criar um arquivo de metadados para testes. Ele ajuda a garantir que o código funcione corretamente em diferentes situações.
nexu-io/open-design
aster-atelier
Ajuda seu agente a criar um site artístico com visual clássico. Ele usa imagens elegantes, céus azuis e fontes serifadas para um visual cinematográfico.
nexu-io/open-design
audio-jingle
Faz seu agente gerar áudio como jingles e efeitos sonoros. Ele pode criar músicas e vozes, salvando o resultado em um arquivo de áudio.
nexu-io/open-design
blog-post
Ajuda seu agente a escrever artigos longos ou posts de blog. Ele inclui espaços para imagens, citações e informações do autor.
nexu-io/open-design
Skills parecidas
angular-developer
Ajuda seu agente a criar código Angular e a dar conselhos sobre a estrutura do projeto. É útil para iniciar novos projetos, criar partes do código ou melhorar a performance e acessibilidade.
affaan-m/ECC
frontend-a11y
Ajuda seu agente a tornar interfaces web acessíveis para todos. Ele garante que sites e apps funcionem bem com leitores de tela e navegação por teclado.
affaan-m/ECC
frontend-patterns
Faz seu agente aplicar padrões modernos no desenvolvimento frontend. Ele otimiza performance, gerencia estado e segue boas práticas em React e Next.js.
affaan-m/ECC