---
title: Packages
description: What each @motionactor package holds and which ones an app needs.
---

The `@motionactor/*` packages are not on public npm. Every package in the line carries the
same version and ships together, so an app pins one version for all of them.

An app that draws in the browser needs four: `core` for actors and scenes, `renderers` for
renderers and the render runtime, a backend such as `dom`, and a host that supplies the frame,
such as `remotion`, `hyperframes` or `engine`. [Hosts](/docs/rendering/hosts) compares the hosts.

## Authoring

| Package | Holds |
| --- | --- |
| `@motionactor/core` | Actors, signals, scene compilation and frame resolution. Everything under Reactivity and Runtime |
| `@motionactor/primitives` | Built-in actors that are not media, such as `Camera2D`, `ClockActor`, `ComponentActor` and `Group`, with camera and geometry helpers |
| `@motionactor/media` | `Image`, `Video`, `Audio`, `AudioTrack` and `AudioManager`, media planning, and their React views |
| `@motionactor/schema` | Value types for fields and scene inputs, such as `text`, and the schemas of the operation log |

## Drawing

| Package | Holds |
| --- | --- |
| `@motionactor/renderers` | `createBackend`, the render runtime, `SceneRenderer`, `defineComposition`, effects and transitions |
| `@motionactor/dom` | The DOM backend, its renderers for the built-in actors, and the style and HTML-in-canvas effect kinds |
| `@motionactor/pixi` | The Pixi ref and `pixiFilter`; `/react` holds the backend and the surface contract that lets other backends read Pixi pixels |
| `@motionactor/three` | The Three.js ref, its actor classes and effect kinds; `/react` holds the backend, renderers and views |
| `@motionactor/skia` | The Skia ref; `/react` holds the backend |

[Backends and layers](/docs/rendering/backends-and-layers) covers how several backends share a
scene.

## Hosts

| Package | Holds |
| --- | --- |
| `@motionactor/remotion` | `toRemotionComposition` and the Remotion frame source and gate. The only package that imports `remotion` |
| `@motionactor/hyperframes` | The HyperFrames seek protocol, a React mount and Node tooling to build a HyperFrames project |
| `@motionactor/engine` | The native host: preparing a composition, previewing it in the browser, capturing stills and exporting silent H.264 MP4, ProRes 4444 MOV and VP9 WebM |
| `@motionactor/player` | `SceneMedia`, which [plays a compiled scene](/docs/rendering/playing-in-the-browser) behind Video.js controls |

## Tooling

| Package | Holds |
| --- | --- |
| `@motionactor/cli` | The `motionactor` command: `new`, `add`, `preview`, `still` and `render` |
| `@motionactor/project` | The project folder the CLI works in: story paths, generated sources, actor installs and the scaffold |
| `@motionactor/scene-source` | Reads a scene file's verb calls and edits their literal arguments, joined to the compiled operation log by call site |
| `@motionactor/contracts` | The list of authoring exports external tools may emit, and the manifest of a render's output |
| `@motionactor/test-utils` | Synthetic actors and frame sources for the runtime's own renderer tests |
| `@motionactor/shared` | Small helpers the other packages share |
| `@motionactor/svelte-tools` | `svelte-check` and `svelte-package` on TypeScript 6, for Svelte sources in a TypeScript 7 workspace |
