Nos termos do próprio skill
Orientação oficial do GSAP para animar componentes Vue, Nuxt, Svelte e SvelteKit, em que o ciclo de vida do framework determina quando os nós do DOM existem. Ela instrui o agente a criar tweens e ScrollTriggers somente após a montagem — onMounted no Vue, onMount no Svelte — dentro de gsap.context(scope), com o ref do container passado como segundo argumento, para que seletores como .box permaneçam restritos a esse componente.
Na desmontagem, ctx.revert() encerra as animações e os ScrollTriggers e revert os estilos inline. Também aborda um composable useGSAP do Nuxt 4 que registra o ScrollTrigger uma única vez e faz lazy loading de plugins como o SplitText via import dinâmico, além de atualizar as posições dos triggers após mudanças de layout.
O que ele produz
- Um projeto de exemplo executável em Vite + Vue 3 que demonstra os padrões de contexto e limpeza.
- Um composable do Nuxt, consumido nos componentes por meio de useGSAP(), que expõe a instância do gsap e o método de lazy loading.
- Um helper tipado lazyLoadPlugin que importa dinamicamente um plugin, o registra no gsap e o retorna.
Como funciona
- 01Espere o DOM Antes de Criar
Tweens e ScrollTriggers só são criados quando o DOM do componente está disponível, usando onMounted no Vue ou onMount no Svelte, para garantir que o ref do container já exista.
- 02Restrinja Tudo à Raiz do Componente
Toda a configuração da animação é envolvida em gsap.context(callback, scope), com o ref do container passado como segundo argumento, de forma que seletores como .item sejam resolvidos apenas dentro dessa subárvore.
- 03Revert na Desmontagem do Framework
Cada exemplo mantém o contexto em uma variável e chama ctx.revert() a partir de onUnmounted (Vue) ou da função de limpeza retornada por onMount (Svelte).
- 04Atualize Após Mudanças de Layout
As posições do ScrollTrigger são recalculadas depois que o layout se estabiliza, por exemplo após o carregamento de dados alterar as posições dos triggers.