Ova Motion gives developers interactive animations as data: an .egg file with state machines and view models that your code drives through a small API (set_bool, set_number, fire, view model setters, events). Runtimes exist for web, iOS and macOS, Android, Flutter, Unity, Unreal and a C API, under MIT or Apache-2.0.
- Runtimes
- Web (WebAssembly), Swift, Kotlin, Dart and Flutter, Unity C#, Unreal, C and C++
- License
- MIT or Apache-2.0 (runtimes)
- Inputs
- Booleans, numbers, triggers, pointer, keyboard, gamepad, text input
- Data
- View models: number, bool, string, colour, enum, trigger, picture and lists
- Events
- Named events, open URL and sounds, delivered to your code
- Accessibility
- Tappable shapes mirrored as accessible elements on the web
One small API on every platform
Every runtime exposes the same calls, so a file behaves the same in a React app, a SwiftUI screen or a Unity HUD.
| Call | Does |
|---|---|
| start a state machine | Runs the logic the designer made |
| set_bool, set_number, fire | Sets an input or fires a trigger |
| vm_set_number, vm_set_string, vm_fire … | Writes a view model property bound to text, colour or motion |
| state name, events | Reads where the machine is and what it reported |
| node_id, node_bounds | Finds a named shape and its bounds, to place your own UI next to it |
On the web
import init, * as egg from "./player/egg_web.js";
import { mount } from "./player/egg-player.js";
await init();
const bytes = new Uint8Array(await (await fetch("hatch.egg")).arrayBuffer());
const view = mount(egg, document.querySelector("canvas"), bytes, { machine: "hatch" });
view.player.fire("tap");The player sizes the canvas, runs the frame loop and forwards pointer, wheel, keyboard and text input. The web runtime package also has a React component.
Compared with Lottie, GIF, video and CSS
- Lottie plays a timeline; interaction needs extra tooling. An .egg file carries its own states, listeners and data bindings.
- GIF and video are pixels: blurry when scaled, large, and they cannot react. An .egg file is vector and reacts to input.
- Hand-written CSS or native animation code is exact but slow to change. With Ova Motion the designer changes the file and your code stays the same.
Last checked against the product on 2026-10-15.





