Introduction
elah is an open, framework-agnostic architecture for building browser-native video editors. It currently ships first-class support for Next.js and React, with React Native (experimental) and more frameworks coming soon. Engine-first, renderer-agnostic, scalable from MVP to production.
elah is not a drag-and-drop video editing app you open in a browser. It is the engine, resolver, and timeline SDK that any modern web-based video editor should sit on.
Three goals shape every decision:
- 1.Deterministic playbackSame project + same frame = same pixels, always. Time is integer frames; never floating-point seconds.
- 2.Renderer-agnostic coreThe data model and timeline resolver know nothing about DOM, Canvas, WebGL, or WebGPU. Swap rendering backends without touching state.
- 3.Iteration speedSmall surface area, no plugin systems, no over-engineered abstractions. You can read the entire core in one sitting.
Architecture
A single immutable Project tree owns all timeline data. The framework-agnostic TimelineEngine is the only place mutations happen — every edit is an Immer-backed commit with structural sharing, history, batching, and typed events.
A pure function resolveTimeline(frame, project) → Scene determines what is visible and audible at any frame. This is the only thing renderers consume — the shipped renderer is a WebGL2 GpuRenderer that turns each Scene into sorted textured-quad draws.
