Thank you for considering contributing to this repo! Community contributions like yours are key to the development and adoption of XMTP. Your questions, feedback, suggestions, and code contributions are welcome!
Have a question about how to build with XMTP? Ask your question and learn with the community in the XMTP Community Forums.
Report a bug using GitHub Issues.
Request a feature using GitHub Issues.
PRs are encouraged, but consider starting with a feature request to temperature-check first. If the PR involves a major change to the protocol, the work should be fleshed out as an XMTP Improvement Proposal before work begins.
After a pull request is submitted, a single approval is required to merge it.
Please make sure you have a compatible version as specified in package.json
. We recommend using a Node version manager such as nvm or nodenv.
This repository uses the Yarn package manager. To use it, enable Corepack, if it isn't already, by running corepack enable
.
yarn
: Installs all dependenciesyarn build
: Builds thepackages/react-sdk
packageyarn clean
: Remove allnode_modules
,.turbo
, and build folders, clear Yarn cacheyarn quickstart
: Buildspackages/react-sdk
, then runs theexamples/react-vite
example in dev mode.yarn format
: Run prettier format and write changes on all packagesyarn format:check
: Run prettier format check on all packagesyarn lint
: Lint all packagesyarn test
: Test all packagesyarn test:setup
: Start a local development node using Docker (only needs to be run once)yarn typecheck
: Typecheck all packages
Please add unit tests when appropriate and ensure that all unit tests are passing before submitting a pull request. Note that some unit tests require a backend node to be running locally. The test:setup
command can be run a single time to start the node in the background using Docker.
Manual validation requires running a client app such as this example app. The example apps use their associated SDK located in this repo. SDKs must be built before running one of its example apps. To see updates in realtime, build the SDK in watch mode, which will watch for changes and trigger a rebuild.
This repository uses changesets to publish updates. Pull requests must contain a changeset in order for changes to be published. The changeset-bot will guide you through this process.
Important
When adding a new package to this repository that will be published, a new granular NPM token must be created to include read/write access to it.