En los propios términos del Skill
Skill oficial de GSAP para animación en React y frameworks basados en React como Next.js. Prioriza el hook useGSAP() de @gsap/react sobre useEffect() o useLayoutEffect(), registrado con gsap.registerPlugin, y requiere un scope para que selectores como .box solo coincidan con elementos dentro del componente.
Cubre refs como targets, el segundo argumento opcional del hook (un array de dependencias o un objeto de configuración dependencies/scope/revertOnUpdate), contextSafe para animaciones creadas en pointer handlers después de que se ejecuta el hook, y el fallback de gsap.context() más ctx.revert() para un useEffect simple. También establece la regla de SSR: GSAP se ejecuta en el navegador, por lo que nada puede ejecutarse durante el render en el servidor.
Qué produce
- Un bloque useGSAP cuyas animaciones y ScrollTriggers se revierten automáticamente al desmontar
- Un cuerpo de useEffect que devuelve una limpieza que llama a ctx.revert()
- Un manejador de clic envuelto con contextSafe, con su event listener eliminado en la limpieza devuelta
- Ejecución solo en el cliente, con importación dinámica dentro de useEffect como opción para tree-shaking o tamaño de bundle
Cómo funciona
- 01Instalar Gsap y @gsap/react
Se listan dos paquetes en el bloque de instalación: la biblioteca GSAP, luego el paquete GSAP React que proporciona el hook.
- 02Registrar useGSAP Antes de Cualquier Código GSAP
El hook se registra como plugin, y el archivo indica que este registro debe ocurrir antes de ejecutar useGSAP o cualquier otro código GSAP.
- 03Escribir la Animación Dentro de useGSAP con un Scope
Los selectores se limitan a la raíz del componente pasando un ref o elemento como scope.
- 04Envolver los Callbacks Posteriores al Render con contextSafe
Las animaciones creadas más tarde, por ejemplo en manejadores de eventos de puntero, quedan fuera del contexto, por lo que se envuelven con contextSafe obtenido del valor de retorno del hook.
- 05Usar como Alternativa gsap.context() Más ctx.revert()
Cuando useGSAP no es una opción, el mismo patrón se ejecuta dentro de useEffect, con una limpieza que siempre llama a ctx.revert().
- 06Mantener Todo el Código GSAP en el Cliente
useGSAP o useEffect es lo que mantiene la ejecución fuera del render en el servidor; la importación dinámica dentro de useEffect se ofrece como opción cuando el tamaño del bundle importa.