Repository navigation
Contributing
Thanks for helping build OpenRive. Every contribution counts: bug reports, docs fixes, templates, file-format coverage and features.
| You want to… | Start here |
|---|---|
| Report a bug or a file that renders wrong | Bug report |
| Suggest a feature | Feature request |
| Propose or build a template | Template request · Building Templates |
| Improve docs | Writing Docs |
| Write code | Development |
| Work with AI agents | AI Collaboration |
OpenRive requires Bun 1.4 or newer and Git. Docker is optional for PostgreSQL-backed development. The full setup and architecture notes are in the development guide.
git clone https://github.com/UpstandPlatform/OpenRive.git
cd OpenRive
bun install
bun run dev # http://localhost:3000- Open or find an issue first for anything bigger than a small fix, so we can agree on the approach.
-
Branch from
main:feat/assets-drag,fix/text-bounds,docs/self-hosting. - Make the change following the code style.
-
Check it:
Also run
bun run check-types bun run lint bun run testbun run test:mcpif you touched the editing API or tools, andbun run test:corpus -- <rive-runtime>/testsif you touched the format layer (see testing). -
Open a pull request using the template. Include screenshots or a short recording for UI changes, and attach
.rivfiles for format fixes.
| Area | Path |
|---|---|
| Web editor and REST API | apps/web/ |
| CLI, TUI and MCP server | apps/cli/ |
| Electrobun desktop app | apps/desktop/ |
.riv format and editing core |
packages/rive/ |
| Database schema and queries | packages/db/ |
| Shared zod schemas and types | packages/shared/ |
| Shared React components | packages/ui/ |
The shared, DOM-free editing API lives in packages/rive/src/api.ts. Editor
commands belong in apps/web/src/components/editor/actions.ts, and database
changes belong in packages/db/src/schema.ts.
-
Never break files. Unmodified
.rivfiles must round-trip byte for byte. Format changes need tests. - Local-first and login-free. Don't add accounts, telemetry or required network calls. Optional integrations must be off by default.
-
One editing API. Features that create or change content belong in
packages/rive/src/api.ts(or a DOM-free module next to it), so the UI, CLI, MCP and Code panel all get them. -
Keyboard and menus. New commands go in the action registry
(
apps/web/src/components/editor/actions.ts) with a sensible shortcut when appropriate. -
Docs with features. User-visible changes update the relevant page in
docs/. - Be kind and constructive. Assume good intent.
By contributing, you agree that your contributions are licensed under the MIT License.
This page is generated from CONTRIBUTING.md. Suggest an edit.
OpenRive · MIT License ·
Report a bug ·
Request a feature ·
This wiki is generated from the repo's docs/, contribution/ and wiki/ folders. Edit those, not the wiki.
Get started
Tutorials
Using OpenRive
- User Guide
- Keyboard Shortcuts
- Templates
- Theme Colors
- Data Binding
- Text and Assets
- Code Panel
- Preview Bundles
- Users and Roles
- Accounts and Sign-in
Self-hosting
Automation
Under the hood
Contributing