dev-docs/docs/introduction/contributing.mdx
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
We have a roadmap which we strongly recommend to go through and check if something interests you. For new contributors we would recommend to start with Easy tasks.
In case you want to pick up something from the roadmap, comment on that issue and one of the project maintainers will assign it to you, post which you can discuss in the issue and start working on it.
yarn to install dependenciesgit checkout -b your-branch-nameTo keep
masterbranch pointing to remote repository and make pull requests from branches on your fork, run:bashgit remote add upstream https://github.com/excalidraw/excalidraw.git git fetch upstream git branch --set-upstream-to=upstream/master master
Fork SandboxDon't worry if you get any of the below wrong, or if you don't know how. We'll gladly help out.
Make sure the title starts with a semantic prefix:
Once you submit your pull request it will automatically be tested. Be sure to check the results of the test and fix any issues that arise.
It's also a good idea to consider if your change should include additional tests. This is highly recommended for new features or bug-fixes. For example, it's good practice to create a test for each bug you fix which ensures that we don't regress the code in the future.
Finally - always manually test your changes using the convenient staging environment deployed for each pull request. As much as local development attempts to replicate production, there can still be subtle differences in behavior. For larger features consider testing your change in multiple browsers as well.
:::note
Some checks, such as the lint and test, require approval from the maintainers to run.
They will appear as Expected — Waiting for status to be reported in the PR checks when they are waiting for approval.
:::
To translate Excalidraw into other languages, please visit our Crowdin page. To add a new language, open an issue so we can get things set up on our end first.
Translations will be available on the app if they exceed a certain threshold of completion (currently 85%).