Formo

Coming Soon

Design. Animate. Interact. Ship.

The vector editor where shapes come alive. Draw with vector networks, write reactive formulas, simulate physics, build components, and export working applications — all in your browser.

Join the Beta →


What makes it different

Vector Networks

Not just paths — a graph. Connect any vertex to any other vertex. Create shapes impossible with traditional tools. → Learn more

Reactive Formulas

Type Ball.x = mouse.x and the ball follows your cursor. No programming degree required — just expressions that react. → Learn more

Built-In Physics

Add physics to any shape with one click. Dynamic, static, kinematic bodies. Collision events with joints, attractors, and sensors. → Learn more

Formula Keyframes

Animate with keyframes that hold formulas, not just numbers. Per-bone timelines, IK solvers, mock-based blending. → Learn more

Reusable Components

Group shapes into components with typed inputs and outputs. Instances share definitions, not state. Non-visual components for logic. → Learn more

Export Everywhere

Standalone JavaScript. React components. Lottie JSON. CSS @keyframes. PIXI.js and THREE.js targets. Your creation runs without the editor. → Learn more


See it in action

title: "Eyes that follow your cursor"
description: "A character whose eyes track mouse position using two formulas"
nodes:
  - type: ELLIPSE, name: "Face", x: 200, y: 200, w: 200, h: 200, fill: "#FFD93D"
  - type: ELLIPSE, name: "LeftEye", w: 30, h: 30, fill: "#333", parent: "Face"
  - type: ELLIPSE, name: "RightEye", w: 30, h: 30, fill: "#333", parent: "Face"
formulas:
  - node: "LeftEye", prop: "x", value: "clamp(mouse.x - Face.x, -20, 20) + 70"
  - node: "LeftEye", prop: "y", value: "clamp(mouse.y - Face.y, -20, 20) + 80"
  - node: "RightEye", prop: "x", value: "clamp(mouse.x - Face.x, -20, 20) + 130"
  - node: "RightEye", prop: "y", value: "clamp(mouse.y - Face.y, -20, 20) + 80"
tools_visible: [select, play]
ui_visible: [properties, formulas]

Build Arkanoid in 60 seconds

The real test: can you build a game from scratch in under a minute?

  1. Draw a paddle — set x = mouse.x. Done, it follows your cursor.
  2. Draw a ball — add physics, set initial velocity. It bounces.
  3. Draw bricks — duplicate into a grid, tag them #brick.
  4. Add collisionif (event.target.is("brick")) event.target.destroy()
  5. Press Space — it runs.

No other design tool can do this. Figma is static. Rive can't do arbitrary logic. Flash could — and Flash is dead.

title: "Breakout prototype"
description: "Paddle follows mouse, ball bounces, bricks break on collision"
nodes:
  - type: RECT, name: "Paddle", x: 200, y: 380, w: 100, h: 15, fill: "#ECF0F1"
  - type: ELLIPSE, name: "Ball", x: 200, y: 300, w: 16, h: 16, fill: "#E74C3C"
  - type: RECT, name: "Brick1", x: 80, y: 60, w: 55, h: 20, fill: "#3498DB", tags: ["brick"]
  - type: RECT, name: "Brick2", x: 150, y: 60, w: 55, h: 20, fill: "#2ECC71", tags: ["brick"]
  - type: RECT, name: "Brick3", x: 220, y: 60, w: 55, h: 20, fill: "#F39C12", tags: ["brick"]
  - type: RECT, name: "Brick4", x: 290, y: 60, w: 55, h: 20, fill: "#9B59B6", tags: ["brick"]
  - type: RECT, name: "WallL", x: 0, y: 200, w: 10, h: 400, fill: "#2C3E50"
  - type: RECT, name: "WallR", x: 390, y: 200, w: 10, h: 400, fill: "#2C3E50"
  - type: RECT, name: "Ceiling", x: 200, y: 0, w: 400, h: 10, fill: "#2C3E50"
modules:
  - node: "Paddle", module: "physics", config: { bodyType: "kinematic" }
  - node: "Ball", module: "physics", config: { bodyType: "dynamic", restitution: 1, friction: 0, gravityScale: 0 }
  - node: "Brick1", module: "physics", config: { bodyType: "static" }
  - node: "Brick2", module: "physics", config: { bodyType: "static" }
  - node: "Brick3", module: "physics", config: { bodyType: "static" }
  - node: "Brick4", module: "physics", config: { bodyType: "static" }
  - node: "WallL", module: "physics", config: { bodyType: "static" }
  - node: "WallR", module: "physics", config: { bodyType: "static" }
  - node: "Ceiling", module: "physics", config: { bodyType: "static" }
formulas:
  - node: "Paddle", prop: "x", value: "mouse.x"
events:
  - node: "Ball", event: "collide", code: "if (event.target.is('brick')) event.target.destroy()"
tools_visible: [select, play]
ui_visible: [properties, formulas, layers]

Not just a design tool

FeatureFigmaRiveFlashFormo
Vector networksBasicNoNoFull graph topology
Reactive formulasNoNoActionScriptSignal graph
Physics simulationNoNoExternal libsBox2D built in
Interactive eventsNoState machineMovieClip eventsCode + visual
Animation timelineNoYesYesFormula keyframes
ComponentsStatic variantsLimitedMovieClipTyped I/O + non-visual
IK / ProceduralNoNoBone tool3 IK solvers
Browser-nativeYesYesPlugin (dead)Yes
Export targetsStatic assets.riv runtime.swf (dead)JS, React, Lottie, CSS

The Flash successor

Adobe Animate ends March 2026. Flash animators need a new home.

Formo combines everything Flash did — vector drawing, animation, interactivity, scripting — in a modern browser-native tool. No plugins. No downloads. And where Flash forced you to learn ActionScript, Formo gives you reactive formulas for 80% of cases and TypeScript for the rest.

What Flash got right, we kept:

  • Vector editor + timeline + scripting in one tool
  • Instant visual feedback for every code change
  • Low floor, high ceiling
  • Component model (MovieClips → Components with typed I/O)

What we fixed:

Flash limitationFormo
ActionScript: full language, steep curveReactive formulas for most cases
Frame-based timelinePer-property keyframes with easing
onEnterFrame pollingReactive dependency graph
Opaque .swc componentsComponents with visible I/O
Browser plugin (dead)Canvas rendering + JS/React export
No type safetyTypeScript

See the full feature list


Everything it does

CategoryFeatures
DrawingVector networks, multi-paint, gradients, blend modes, brush tool
Shapes5 parametric types, mirror symmetry, frames, gizmos
FormulasReactive expressions, signal graph, events, methods, tags
PhysicsBodies & colliders, joints, attractors, sensors, collision events
AnimationFormula keyframes, per-bone timelines, IK, blending
ComponentsTyped I/O, instances, non-visual, custom editors
Editor4 modes, timeline, snap, undo, play/stop
ExportJS, React, Lottie, CSS, PIXI.js, THREE.js targets
DocsAPI reference, tutorials, interactive examples
AboutWhy Formo exists, roadmap, pricing

Join the beta {#beta}

Formo is in active development. We're building the Flash successor — and we want early users who'll push it hard.

What you get:

  • Full editor access before public launch
  • Direct feedback channel with the development team
  • Your name in the credits
  • Free Pro tier for life when we launch

Who we're looking for:

  • Flash animators looking for a new home
  • Creative coders who think in formulas
  • Indie devs building interactive web content
  • Anyone who's frustrated that design tools can't make things move

Request Beta Access →

No spam. No waitlist games. We read every application.

← НазадPricingДальше →Features