explaingit

theatre-js/theatre

12,425TypeScriptAudience · developerComplexity · 3/5LicenseSetup · moderate

TLDR

Theatre.js is a web animation library for complex, choreographed motion design with a visual keyframe editor for designing animations and a lightweight runtime for shipping them.

Mindmap

mindmap
  root((Theatre.js))
    What It Does
      Complex web animation
      Keyframe sequencing
      Visual Studio editor
    Animation Targets
      Three.js objects
      HTML and SVG
      Any JS variable
      Generative art
    Packages
      Core runtime
      Studio editor
    Licenses
      Apache 2.0 core
      AGPL 3.0 studio
    Audience
      Motion designers
      Creative developers
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Animate 3D objects in a Three.js scene with precise timing using the Theatre.js visual timeline editor

USE CASE 2

Design complex HTML and SVG micro-interactions by adjusting keyframes visually in the Studio, then export to code

USE CASE 3

Drive any JavaScript variable through an animation sequence to create generative or data-driven motion

USE CASE 4

Create high-fidelity web animations that go beyond what CSS transitions or simple tweening libraries support

Tech stack

TypeScriptJavaScriptReactThree.js

Getting it running

Difficulty · moderate Time to first run · 1h+

Requires separate packages for the dev editor and production runtime, v1.0 was temporarily in a private repo at writing time.

Core runtime is Apache 2.0, ship freely in any product. The visual Studio editor is AGPL 3.0, used only during development and not included in your final app.

In plain English

Theatre.js is a web animation library aimed at high-fidelity motion design. It is built for situations where you need fine-grained control over movement: precise timing, intricate sequencing, and the ability to express nuance in how things move on screen. It is distinct from simple CSS transition tools in that it targets complex, choreographed animations. The library can be used in two ways: by writing code directly, or through a visual editor called the Studio. The Studio provides a graphical timeline and property controls you can use to design animations while looking at a live preview, similar to how video editing or keyframe tools work. Once you are done designing, you export the animation data and include it in your application using the core library. Theatre.js works with a wide range of targets. The README shows examples of animating 3D objects built with Three.js, animating HTML and SVG elements through React or other libraries, designing micro-interactions, and driving generative art. Any JavaScript variable can be animated through it, not just visible elements. The library is split into two packages with different licenses. The core package (@theatre/core), which runs in the finished application, is released under the Apache License 2.0. The studio package (@theatre/studio), used only during development to design animations, is released under AGPL 3.0. The README notes that only the Apache License applies to shipped products because the studio is not included in the final bundle. Documentation and tutorials are at theatrejs.com/docs. Video tutorials are available on YouTube. Community support is through Discord and Twitter. At the time of the README, version 1.0 development had moved temporarily to a private repository to allow faster iteration, with plans to push the work back to this public repository.

Copy-paste prompts

Prompt 1
Show me how to animate a Three.js mesh position and rotation using Theatre.js with the Studio editor open in development
Prompt 2
How do I export a Theatre.js animation I designed in the Studio and include it in my production React app?
Prompt 3
Help me animate an SVG element opacity and position using Theatre.js in a plain JavaScript project
Prompt 4
I want a scroll-linked animation in Theatre.js, show me how to tie the playhead position to the scroll offset
Prompt 5
How do I install @theatre/core and @theatre/studio and set up my first animated object in a TypeScript project?
Open on GitHub → Explain another repo

← theatre-js on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.