rive-interactive

State machine-based vector animation with runtime interactivity and web integration. Use this skill when creating interactive animations, state-driven UI, animated components with logic, or designer-created animations with runtime control. Triggers on tasks involving Rive, state machines, interactiv

By freshtechbro · 2,069 installs

npx skills add freshtechbro/claudedesignskills --skill rive-interactive

Source repository · Upstream listing

Rive Interactive State Machine Based Vector Animation Overview Rive is a state machine based animation platform that enables designers to create interactive vector animations with complex logic and runtime interactivity. Unlike timeline only animation tools (like Lottie), Rive supports state machines, input handling, and two way data binding between application code and animations. Key Features : State machine system for complex interactive logic ViewModel API for two way data binding Input handling (boolean, number, trigger inputs) Custom events for animation to code communication Runtime property control (colors, strings, numbers, enums) Cross platform support (Web, React, React Native, iOS, Android, Flutter) Small file sizes with vector graphics When to Use This Skill : Creating UI animations with complex state transitions Building interactive animated components (buttons, toggles, loaders) Implementing game like UI with state driven animations Binding real time data to animated visualizations Creating animations that respond to user input Working with designer created animations requiring runtime control Alternatives : Lottie (lottie animations): For simpler timeline based animations without state machines Framer Motion (motion framer): For code first React animations with spring physics GSAP (gsap scrolltrigger): For timeline based web animations with precise control Core Concepts 1. State Machines State machines define animation behavior with states and transitions: States : Different animation states (e.g., idle, hover, pressed) Inputs : Variables that control transitions (boolean, number, trigger) Transitions : Rules for moving between states Listeners : React hooks to respond to state changes 2. Inputs Three input types control state machine behavior: Boolean : On/off states (e.g., isHovered, isActive) Number : Numeric values (e.g., progress, volume) Trigger : One time events (e.g., click, submit) 3. ViewModels Data binding system for dynamic properties: String Properties : Text content (e.g., username, title) Number Properties : Numeric data (e.g., stock price, score) Color Properties : Dynamic colors (hex values) Enum Properties : Selection from predefined options Trigger Properties : Animation events 4. Events Custom events emitted from animations: General Events : Custom named events Event Properties : Data attached to events Event Listeners : React hooks to handle events Common Patterns Pattern 1: Basic Rive Animation Use Case : Display a simple Rive animation in React Implementation : Key Points : src : Path to .riv file artboard : Which artboard to display animations : Which animation timeline to play layout : How animation fits in container Pattern 2: State Machine Control with Inputs Use Case : Control animation states based on user interaction Implementation : Input Types : Boolean: input.value = true/false Number: input.value = 50 Trigger: input.fire() Pattern 3: ViewModel Data Binding Use Case : Bind application data to animation properties Implementation : ViewModel Property Hooks : useViewModelInstanceString Text properties useViewModelInstanceNumber Numeric properties useViewModelInstanceColor Color properties (hex) useViewModelInstanceEnum Enum selection useViewModelInstanceTrigger Animation triggers Pattern 4: Handling Rive Events Use Case : React to events emitted from Rive animation Implementation : Pattern 5: Preloading Rive Files Use Case : Optimize load times by preloading animations Implementation : Pattern 6: Controlled Animation with Refs Use Case : Control animation from parent component Implementation : Pattern 7: Multi Property ViewModel Updates Use Case : Update multiple animation properties from complex data Implementation : Integration Patterns With Framer Motion (motion framer) Animate container while Rive handles interactive content: With GSAP ScrollTrigger (gsap scrolltrigger) Trigger Rive animations on scroll: Performance Optimization 1. Use Off Screen Renderer 2. Optimize Rive Files In Rive Editor : Keep artboards under 2MB Use vector graphics (avoid raster images when possible) Minimize number of bones in skeletal animations Reduce complexity of state machines 3. Preload Critical Animations 4. Disable Automatic Event Handling Common Pitfalls and Solutions Pitfall 1: State Machine Input Not Found Problem : useStateMachineInput returns null Solution : Pitfall 2: ViewModel Property Not Updating Problem : ViewModel property doesn't update animation Solution : Pitfall 3: Event Listener Not Firing Problem : Rive events not triggering callback Solution : Resources Official Documentation Rive Docs : https://rive.app/docs React Rive GitHub : https://github.com/rive app/rive react Rive Community : https://rive.app/community Rive Editor Web Editor : https://rive.app/community Desktop App : Available for macOS, Windows Learning Resources Tutorials : https://rive.app/learn Examples : https://rive.app/community/files State Machine Guide : https://rive.app/docs/state machine Related Skills lottie animations : For simpler timeline based animations without state machines motion framer : For code first React animations with gestures gsap scrolltrigger : For scroll driven animations spline interactive : For 3D interactive animations Scripts This skill includes utility scripts: component generator.py Generate Rive React component boilerplate viewmodel builder.py Build ViewModel property bindings Run scripts from the skill directory: Assets Starter templates and examples: starter rive/ Complete React + Rive template examples/ Real world integration patterns