Runtimes · Web

Interactive animation on any web page.

A WebAssembly runtime and a small helper mount an .egg file on a canvas. It sizes the canvas, runs the frame loop and forwards pointer, wheel, keyboard, gamepad and text input.

In short

To play an Ova Motion animation on a website, load the WebAssembly runtime (egg_web.js), fetch the .egg file and call mount() on a canvas with the state machine to start. It works in any site or framework, supports pointer, keyboard, gamepad and text input, and mirrors tappable shapes as accessible elements.

Platform
Every modern browser
Binding
WebAssembly plus egg-player.js
Draws with
Canvas 2D, or an exact software renderer
Same file everywhere
One .egg plays the same on every runtime
License
MIT or Apache-2.0

Mount a file

main.jsweb runtime
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",   // "" = the first; null = play the first animation
  fit: "contain",     // or "layout": the artboard takes the canvas size
});

Drive it from your page

main.jsinputs and data
view.player.set_bool("loading", true);
view.player.fire("tap");
view.player.vm_set_string("city", "Hà Nội");
view.player.vm_set_number("temperature", 31);
OptionDoes
artboardWhich artboard of a bundle ("" = the first)
renderer"canvas" (default) or "pixels" (software, exact)
onEventA function called with every event the file reports
semanticsMirror tappable shapes as accessible elements (default true)
soundPlay audio events (default true)

Last checked against the product on 2026-10-15.

Examples you can play

All templates

Questions

Does it need a framework?

No. It is plain JavaScript and WebAssembly, so it works in a static page, React, Vue, Svelte, Next.js or anything else.

Is it accessible?

Tappable shapes are mirrored as accessible elements by default, and text inputs use a hidden textarea so typing and IME work.

What can my code change at run time?

State machine inputs (booleans, numbers, triggers), view model properties bound in the file (text, numbers, colours, enums, pictures, lists), and pictures, sounds and fonts handed over by your app. Your code also reads the current state and the events the file reports.

Is the runtime free to use in commercial apps?

Yes. The runtimes are licensed MIT or Apache-2.0, and what you make in the editor is yours.

Start with an egg.
Ship an interface.

Open the editor in your browser, or download it for macOS, Windows and Linux.