--- name: rive-react description: | Trigger when: (1) Using @rive-app/react-canvas or @rive-app/react-webgl, (2) Using useRive hook or RiveComponent, (3) Building React components with Rive animations, (4) User mentions "Rive React" or "useRive", (5) Implementing scroll-based or parallax animations with Rive. Best practices for integrating Rive animations in React applications using the official Rive React package. Covers hooks, layout, and scroll animations. metadata: tags: rive, react, hooks, animation, components --- # Rive React React components and hooks for Rive animations. ## Installation ```bash # Canvas renderer (recommended) npm install @rive-app/react-canvas # WebGL renderer (complex animations) npm install @rive-app/react-webgl ``` ## Quick Start ```tsx import { useRive } from '@rive-app/react-canvas'; function MyAnimation() { const { RiveComponent } = useRive({ src: 'animation.riv', stateMachines: 'State Machine 1', autoplay: true, }); return ; } ``` ## useRive Hook The main hook for Rive integration: ```tsx const { RiveComponent, // The canvas component to render rive, // Rive instance for direct control } = useRive({ src: 'animation.riv', stateMachines: 'State Machine', autoplay: true, }); ``` ## Controlling Inputs ```tsx import { useRive, useStateMachineInput } from '@rive-app/react-canvas'; function ControlledAnimation() { const { rive, RiveComponent } = useRive({ src: 'animation.riv', stateMachines: 'State Machine', autoplay: true, }); // Get typed input const isActive = useStateMachineInput(rive, 'State Machine', 'isActive'); const progress = useStateMachineInput(rive, 'State Machine', 'progress'); return ( <> progress && (progress.value = +e.target.value)} /> ); } ``` ## Callbacks ```tsx const { RiveComponent } = useRive({ src: 'animation.riv', stateMachines: 'State Machine', autoplay: true, onLoad: () => console.log('Loaded'), onStateChange: (event) => console.log('State:', event.data), onPlay: () => console.log('Playing'), onPause: () => console.log('Paused'), }); ``` ## Rules @file rules/use-rive.md @file rules/callbacks.md @file rules/layout.md @file rules/scroll-animations.md