How to contribute

October 9, 2025 · View on GitHub

Communication

All communication in these forums abides by our Code of Conduct.

Creating issues

If any part of the project has a bug or documentation mistakes, please let us know by opening an issue. All bugs and mistakes are considered seriously, regardless of complexity.

Before creating an issue, please check that an issue reporting the same problem does not already exist. To make the issue accurate and easy to understand, please try to create issues that are:

  • Unique -- do not duplicate existing bug report. Duplicate bug reports will be closed.
  • Specific -- include as much details as possible: which version, what environment, what configuration, etc.
  • Reproducible -- include the steps to reproduce the problem. Some issues might be hard to reproduce, so please do your best to include the steps that might lead to the problem.
  • Isolated -- try to isolate and reproduce the bug with minimum dependencies. It would significantly slow down the speed to fix a bug if too many dependencies are involved in a bug report. Debugging external systems that rely on this project is out of scope, but guidance or help using the project itself is fine.
  • Scoped -- one bug per report. Do not follow up with another bug inside one report.

It may be worthwhile to read Elika Etemad’s article on filing good bug reports before creating a bug report.

Maintainers might ask for further information to resolve an issue.

Finding issues

You can find issues by priority: Urgent, High, Medium, Low, Maybe. There are also good first issues.

Contribution flow

This is a rough outline of what a contributor's workflow looks like:

  • Create an issue
  • Fork the project
  • Create a feature branch
  • Push changes to your branch
  • Submit a pull request
  • Respond to feedback from project maintainers
  • Rebase to squash related and fixup commits
  • Get LGTM from reviewer(s)
  • Merge with a merge commit

Creating new issues is one of the best ways to contribute. You have no obligation to offer a solution or code to fix an issue that you open. If you do decide to try and contribute something, please submit an issue first so that a discussion can occur to avoid any wasted efforts.

In order to protect the project, all contributors are required to sign our Contributor License Agreement before their contribution is accepted.

The signing process has been automated by CLA Assistant during the Pull Request review process and only requires responding with a comment acknowledging the agreement.

Common tasks

We use yarn to manage dependencies and do common tasks.

Installing dependencies

Setup git submodules: git submodule update --init --recursive

Run yarn install in the root project directory.

Install LFS: git lfs install

Running for development

yarn run dev

Testing

In order to build and test the project, a modern version of node and knowledge of React app architecture are required.

yarn run test

To run integration tests:

yarn run cy:run

Linting

yarn run lint

Adding dependencies

yarn add <package>

Updating wasm dependencies

The project contains prebuilt WASM files for versions of both SpiceDB and zed. To update them:

  1. Edit the wasm-config.json file with the desired tag/commit hash
  2. Run yarn run update:deps

ℹ️ jq is required and must be installed.

Building the Docker Container

docker build . -t tag-for-playground-image

Build args can be specified for the build-time environment variables:

docker build --build-arg VITE_SHARE_API_ENDPOINT=https://my.playground.endpoint . -t tag-for-playground-image