vaiven
A Canvas engine where every animation is one JSON config.
- Year
- 2026
- Made for
- Zero-dependency JavaScript
- State
- shipped
From the Spanish vaivén, the swing of things. A perpetual to and fro.
Every figure in vaiven is one JSON object. Shape, count, spacing, easing, phase, drift. No animation code, no timeline, no dependencies. Change a number and the motion changes with it, which means you can hunt for a figure by feel rather than by writing another loop.
The engine is a few kilobytes of Canvas 2D. You give it the parameters of a system and it runs forever, with no timeline to write.
How to use it
It is on npm. Install it, open the playground, and design the figure you want.
-
Add it to a project and open the playground.
npm i @jaimeortega/vaiven npx vaiven -
The playground writes vaiven.presets.json — saving a look there is publishing it. Then register the element and point it at a preset.
import "@jaimeortega/vaiven/element";
POiO
ongoingA chicken recipe assistant that is turning into a countertop bird.
Islands
shippedAnother macOS window manager. This one accordions.
dab
shippedTurn any patch of your screen into pixel art.
Balancer
shippedA personal trainer for micro-breaks, living in the menu bar.
Sona
conceptA mechanical keyboard with an instrument living inside it.
toss
prototypeFlick a ball off your screen. It lands on a friend's Mac.
Habitus
ongoingCheap marketplace finds, held to a hundred at a time.
Darkroom
conceptA cube that develops your photos by imagining them.
Branding Oracle
ongoingA brand engine a designer drives and a client never sees.