Skip to content


Repository files navigation

Community Extension

Full Documentation

To submit an extension, you need to create a GitHub repo for it and make a PR to this repo.

In your own extension repo


  1. Provide (required)
  2. Provide extension.js (required)
  3. Provide extension.css (optional)
  4. Provide (optional)


Your extension should export as default a map with onload and onunload functions.

All state setup in onload should be removed in onunload.

export default {
  onload: () => {},
  onunload: () => {}

If exists in the root of your repo, it will be invoked before looking for extension.js/extension.css files.

The environment it’ll be invoked in is ubuntu-20.04 from GitHub Actions. Consult this to see what is available.

If your build script requires anything extra (e.g. libraries from NPM), it should download them as a part of execution.

In this repo

  1. Fork this repo
  2. Create metadata file in extensions/<your username>/<your repo>.json

In a case of calculator, you would create


with the following content:

  "name": "Test Extension 1",
  "short_description": "Prints 'Test message 1'",
  "author": "Nikita Prokopov",
  "tags": ["print", "test"], //optional
  "source_url": "",
  "source_repo": "",
  "source_commit": "d5ecd16363975b2e7a097d46e5f411c95e16682d",
  "stripe_account": "acct_1LGASrQVCl6NYjck" // optional

Then make a Pull Request with this change. After it’s merged, your extension will be published in the Roam Marketplace.


Community Theme

We do not support themes yet, we hope to add them soon. Please do not submit a theme as an extension.