npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

exodeui

v2.6.8

Published

React Runtime for ExodeUI Animation Engine

Readme

ExodeUI React SDK

The official React Runtime for the ExodeUI Animation Engine. Seamlessly render and interact with high-performance animations, physics simulations, and state machines built with ExodeUI.

Installation

npm install exodeui
# or
yarn add exodeui

Basic Usage

import { ExodeUICanvas } from 'exodeui';

function App() {
  return (
    <div style={{ width: 800, height: 600 }}>
      <ExodeUICanvas 
        src="/animations/my-scene.json"
        autoPlay={true}
        fit="Contain"
        alignment="Center"
      />
    </div>
  );
}

Features

1. State Machine & Logic

ExodeUI supports complex interactive logic using a node-based State Machine.

  • Inputs: Control the flow with Boolean, Number, and Trigger inputs.
  • Logic Nodes: Combine inputs using AND, OR, NOT, XOR.
  • Conditions: Create transitions based on input values (e.g., Speed > 10, IsHovered == true).
const [engine, setEngine] = useState<ExodeUIEngine | null>(null);

// ... inside your component
<ExodeUICanvas 
  src="/player_controller.json"
  onReady={setEngine}
/>

// Button controls
<button onClick={() => engine?.setInputBool('IsRunning', true)}>Run</button>
<button onClick={() => engine?.fireTrigger('Jump')}>Jump</button>

2. Physics Engine

Built-in 2D physics using Rapier.

  • Dynamic Bodies: Objects that react to gravity and collisions.
  • Static Bodies: Platforms and walls.
  • Kinematic: Animated objects that push other bodies.
  • Properties: Mass, Friction, Restitution (Bounciness), Density.

Physics is configured directly in the ExodeUI Editor.

3. Data Visualization (Line Graphs)

Render beautiful, animated line graphs with zero extra code.

  • Line Graphs: Supports multiple datasets, smoothing (Catmull-Rom splines), fill areas, and points.
  • Data Binding: Bind graph data to runtime inputs or variables.
// Example of injecting data via Inputs (if supported by your graph configuration)
// engine.setInputNumberArray('StockData', [10, 25, 15, 40, 35, 60]); 
// (Note: array input support depends on your specific version/setup)

API Reference

<ExodeUICanvas />

| Prop | Type | Default | Description | |------|------|---------|-------------| | src | string | - | URL to the animation JSON file. | | artboard | object | - | Direct JSON data object (if imported). | | fit | 'Contain' \| 'Cover' \| 'Fill' | 'Contain' | Scaling strategy. | | alignment | 'Center' \| 'TopLeft' ... | 'Center' | Alignment within the canvas. | | autoPlay | boolean | true | Auto-start the animation loop. | | onReady | (engine: ExodeUIEngine) => void | - | Callback when engine is initialized. | | onTrigger | (name: string, animationName: string) => void | - | Listener for outgoing triggers (events). | | onInputUpdate | (nameOrId: string, value: any) => void | - | Listener for input value changes. |

useExodeUI Hook

A helper hook for easier engine management.

import { useExodeUI, ExodeUICanvas } from 'exodeui';

function Game() {
  const { setEngine, setInputBool, fireTrigger } = useExodeUI();

  return (
    <>
      <ExodeUICanvas src="/game.json" onReady={setEngine} />
      <div className="controls">
          <button onMouseDown={() => setInputBool('Fire', true)}>Shoot</button>
      </div>
    </>
  );
}

Advanced

Logic Nodes

The engine automatically evaluates logic nodes defined in the editor.

  • AND / OR / XOR / NOT gates allow for complex condition evaluation without writing code.
  • Inputs are strictly typed: Boolean, Number, Trigger (momentary boolean), Text.

Custom Fonts

Ensure any custom fonts used in the ExodeUI editor are loaded in your web page (e.g., via Google Fonts or @font-face) for correct rendering.

License

MIT