Nos termos do próprio skill
Skill oficial do GSAP para animação em React e frameworks baseados em React, como Next.js. Ela prioriza o hook useGSAP() de @gsap/react em vez de useEffect() ou useLayoutEffect(), registrado com gsap.registerPlugin, e exige um scope para que seletores como .box correspondam apenas a elementos dentro do componente.
Ela cobre refs como targets, o segundo argumento opcional do hook (um array de dependências ou um objeto de configuração dependencies/scope/revertOnUpdate), contextSafe para animações criadas em pointer handlers após a execução do hook, e o fallback gsap.context() mais ctx.revert() para um useEffect simples. Também estabelece a regra de SSR: o GSAP roda no navegador, então nada pode ser executado durante a renderização no servidor.
O que ele produz
- Um bloco useGSAP cujas animações e ScrollTriggers são revertidos automaticamente ao desmontar
- Um corpo de useEffect que retorna uma limpeza chamando ctx.revert()
- Um handler de clique envolvido com contextSafe, com o event listener removido na limpeza retornada
- Execução exclusiva no cliente, com import dinâmico dentro do useEffect como opção para tree-shaking ou tamanho do bundle
Como funciona
- 01Instale Gsap e @gsap/react
Dois pacotes são listados no bloco de instalação: a biblioteca GSAP e, em seguida, o pacote GSAP React que fornece o hook.
- 02Registre o useGSAP Antes de Qualquer Código GSAP
O hook é registrado como um plugin, e o arquivo afirma que esse registro precisa acontecer antes de executar useGSAP ou qualquer outro código GSAP.
- 03Escreva a Animação Dentro do useGSAP com um Scope
Os seletores são limitados à raiz do componente ao passar um ref ou elemento como scope.
- 04Envolva Callbacks Pós-renderização com contextSafe
Animações criadas posteriormente, por exemplo em pointer event handlers, ficam fora do context, então são envolvidas com contextSafe obtido do retorno do hook.
- 05Recorra ao gsap.context() Mais ctx.revert()
Quando useGSAP não é uma opção, o mesmo padrão é executado dentro de useEffect, com uma limpeza que sempre chama ctx.revert().
- 06Mantenha Todo o Código GSAP no Cliente
useGSAP ou useEffect é o que mantém a execução fora da renderização no servidor; o import dinâmico dentro do useEffect é oferecido como opção quando o tamanho do bundle é relevante.