Skip to main content

Contributing to Remotion

Issues and pull requests of all sorts are welcome!

For bigger projects, please coordinate with Jonny Burger (jonny@remotion.dev, Discord: @jonnyburger) to make sure your changes get merged.

Please note that since we charge for Remotion when companies are using it, this is a commercial project.
By sending pull requests, you agree that we can use your code changes in a commercial context.

Furthermore, also note that you cannot redistribute this project. Please see LICENSE.md for what's allowed and what's not.

This project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Setup

1
Remotion uses pnpm as the package manager for development in this repository. We recommend using Corepack so you get the same version of pnpm as we have.

sh
corepack enable
sh
corepack enable

If you don't have corepack, install pnpm manually:

sh
npm i -g pnpm@8.10.2
sh
npm i -g pnpm@8.10.2

Prefix with sudo if necessary.

2
Clone the Remotion repository:
sh
git clone --depth=1 https://github.com/remotion-dev/remotion.git && cd remotion
sh
git clone --depth=1 https://github.com/remotion-dev/remotion.git && cd remotion
note

The full Git history of Remotion is large. To save time and disk space, we recommend adding --depth=1 to only clone the most recent main branch.

3
Install all dependencies:
sh
pnpm i
sh
pnpm i
4
Build the project initially:
sh
pnpm build
sh
pnpm build
5
Rebuild whenever a file changes:
sh
pnpm watch
sh
pnpm watch
6
You can start making changes!

Note about browser packages

Some packages need pnpm build in order for their changes to apply.

Packages that are imported in the browser, like remotion, @remotion/player, @remotion/gif have ESM versions. In the Remotion Studio and Next.js, ES Modules are preferred, and they need to build separately. If you don't see changes applied, run:

sh
cd packages/core && pnpm build
sh
cd packages/core && pnpm build

Testing your changes

You can start the Testbed using

sh
cd packages/example
pnpm start
sh
cd packages/example
pnpm start

You can render a test video using

sh
cd packages/example
pnpm render
sh
cd packages/example
pnpm render

You can run tests using

sh
pnpm test
sh
pnpm test

in either a subpackage to run tests for that package or in the root to run all tests.

Running the @remotion/player testbed

You can test changes to @remotion/player by starting the Player testbed:

sh
cd packages/player-example
pnpm start
sh
cd packages/player-example
pnpm start

For information about testing, please consult TESTING.md. Issues and pull requests of all sorts are welcome!

Running documentation

You can run the Docusaurus server that powers our docs using:

sh
cd packages/docs
pnpm start
sh
cd packages/docs
pnpm start

Running the CLI

You can test changes to the CLI by moving to packages/examples directory and using pnpm exec to execute the CLI:

sh
cd packages/examples
# Example - Get available compositions
pnpm exec remotion compositions
# Example - Render command
pnpm exec remotion render ten-frame-tester --output ../../out/video.mp4
sh
cd packages/examples
# Example - Get available compositions
pnpm exec remotion compositions
# Example - Render command
pnpm exec remotion render ten-frame-tester --output ../../out/video.mp4

Troubleshooting

If your pnpm build throws errors, oftentimes it is because of caching issues. You can resolve many of these errors by running

ts
pnpm run clean
ts
pnpm run clean

in the root directory. Make sure to beforehand kill any pnpm watch commands, as those might regenerate files as you clean them!

Developing Rust parts

To develop the Rust parts of Remotion, see the README in packages/renderer/README.md

See also