SuperAPI AI Directory

rive-web

General & other

View repository

Updated 10-16 05:43

About this skill

Rive Web Runtime

Embed and control Rive animations on the web with JavaScript/TypeScript.

Installation

# Canvas renderer (smaller, good for most cases)
npm install @rive-app/canvas

# WebGL renderer (better for complex animations)
npm install @rive-app/webgl

Quick Start

import { Rive } from '@rive-app/canvas';

const rive = new Rive({ src: 'animation.riv', canvas: document.getElementById('canvas') as HTMLCanvasElement, autoplay: true, onLoad: () => { console.log('Animation loaded'); }, });


## Key Concepts

| Concept | Description |
|---------|-------------|
| **Rive Instance** | Main controller for the animation |
| **State Machine** | Interactive logic built in Rive editor |
| **Inputs** | Variables to control state machine (Boolean, Number, Trigger) |
| **Events** | Signals fired by the state machine |
| **Artboard** | Container for animation content |

## Common Patterns

### Loading Animation

```typescript
const rive = new Rive({
  src: 'animation.riv',           // URL or path
  canvas: canvasElement,
  stateMachines: 'State Machine', // Name from Rive editor
  autoplay: true,
  onLoad: () => {
    // Animation ready
  },
  onStateChange: (event) => {
    // State changed
  },
});

Controlling Inputs

// Get inputs
const inputs = rive.stateMachineInputs('State Machine');

// Set boolean
const toggle = inputs.find(i => i.name === 'isActive');
toggle.value = true;

// Set number
const progress = inputs.find(i => i.name === 'progress');
progress.value = 0.75;

// Fire trigger
const click = inputs.find(i => i.name === 'onClick');
click.fire();

Handling Events

rive.on('riveevent', (event) => {
  console.log('Event:', event.data.name);
  // Access custom properties
  const data = event.data.properties;
});

Cleanup

// Always cleanup when done
rive.cleanup();

Rules

@file rules/loading.md @file rules/state-machines.md @file rules/inputs.md