Contributing Overview
Thank you for your interest in contributing to React Native! From commenting on and triaging issues, to reviewing and sending Pull Requests, all contributions are welcome. We aim to build a vibrant and inclusive ecosystem of partners, core contributors, and community that goes beyond the main React Native GitHub repository.
The Open Source Guides website has a collection of resources for individuals, communities, and companies who want to learn how to run and contribute to an open source project.
Contributors and people new to open source alike will find the following guides especially useful:
Code of Conductβ
As a reminder, all contributors are expected to adhere to the Code of Conduct.
Ways to Contributeβ
If you are eager to start contributing code right away, we have a list of good first issues that contain bugs which have a relatively limited scope. As you gain more experience and demonstrate a commitment to evolving React Native, you may be granted issue management permissions in the repository.
There are other ways you can contribute without writing a single line of code. Here are a few things you can do to help out:
-
Replying and handling open issues.
We get a lot of issues every day, and some of them may lack necessary information. You can help out by guiding people through the process of filling out the issue template, asking for clarifying information, or pointing them to existing issues that match their description of the problem. We cover more about this process on the Triaging GitHub Issues page.
-
Reviewing pull requests for the docs.
Reviewing documentation updates can be as simple as checking for spelling and grammar. If you encounter situations that can be explained better in the docs, click Edit at the top of most docs pages to get started with your own contribution.
-
Help people write test plans.
Some pull requests sent to the main repository may lack a proper test plan. These help reviewers understand how the change was tested, and can speed up the time it takes for a contribution to be accepted.
Each of these tasks is highly impactful, and maintainers will greatly appreciate your help.
Our Development Processβ
We use GitHub issues and pull requests to keep track of bug reports and contributions from the community. All changes from engineers at Meta will sync to GitHub through a bridge with Meta's internal source control. Changes from the community are handled through GitHub pull requests.
Once a change made on GitHub is approved, it will first be imported into Facebook's internal source control and tested against Facebook's codebase. Once merged at Facebook, the change will eventually sync back to GitHub as a single commit once it has passed Facebook's internal tests.
You can learn more about the contribution process in the following documents:
We also have a thriving community of contributors who would be happy to help you get set up. You can reach out to the React Native team through @ReactNative.
Repositoriesβ
The main repository contains the React Native framework itself, and it is here where we keep track of bug reports and manage pull requests.
There are a few other repositories you might want to familiarize yourself with:
- React Native website which contains the source code for the website, including the documentation, located in this repository.
- Releases conversations are happening in this discussion repo.
- Changelog for the releases can be found here.
- Discussions about React Native take place in the Discussions and Proposals repository.
- Discussions about the new architecture of React Native take place in the React Native New Architecture Working Group repository.
- High-quality plugins for React Native can be found throughout the React Native Directory website.
Browsing through these repositories should provide some insight into how the React Native open source project is managed.
GitHub Issuesβ
We use GitHub issues to track bugs exclusively. We have documented our issue handling processes in the Triaging Issues Page.
Security Bugsβ
Meta has a bounty program for the safe disclosure of security bugs. In those cases, please go through the process outlined on that page and do not file a public issue.
Helping with Documentationβ
The React Native documentation is hosted as part of the React Native website repository. The website is built using Docusaurus. If there's anything you'd like to change in the docs, you can get started by clicking on the "Edit" button located on the upper right of most pages in the website.
If you are adding new functionality or introducing a change in behavior, we will ask you to update the documentation to reflect your changes.
Contributing to the Blogβ
The React Native blog is generated from the Markdown sources for the blog.
Please open an issue in the React Native website repository or tag us on @ReactNative on Twitter and get the go-ahead from a maintainer before writing an article intended for the React Native blog. In most cases, you might want to share your article on your own blog or writing medium instead. It's worth asking, though, in case we find your article is a good fit for the blog.
We recommend referring to the react-native-website
repository Readme file to learn more about contributing to the website in general.
Contributing Codeβ
Code-level contributions to React Native generally come in the form of pull requests. These are done by forking the repo and making changes locally.
Directly in the repo, there is the rn-tester
app that you can install on your device (or simulators) and use to test the changes you're making to React Native sources.
The process of proposing a change to React Native can be summarized as follows:
- Fork the React Native repository and create your branch from
main
. - Make the desired changes to React Native sources. Use the
packages/rn-tester
app to test them out. - If you've added code that should be tested, add tests.
- If you've changed APIs, update the documentation, which lives in separate repo.
- Ensure the test suite passes, either locally or on CI once you opened a pull request.
- Make sure your code lints (for example via
yarn lint --fix
). - Push the changes to your fork.
- Create a pull request to the React Native repository.
- Review and address comments on your pull request.
- A bot may comment with suggestions. Generally we ask you to resolve these first before a maintainer will review your code.
- If changes are requested and addressed, please request review to notify reviewers to take another look.
- If you haven't already, please complete the Contributor License Agreement ("CLA"). Complete your CLA here.
If all goes well, your pull request will be merged. If it is not merged, maintainers will do their best to explain the reason why.
Step-by-step Guideβ
Whenever you are ready to contribute code, check out our step-by-step guide to sending your first pull request, or read the How to Contribute Code page for more details.
Testsβ
Tests help us prevent regressions from being introduced to the codebase. The GitHub repository is continuously tested using CircleCI, the results of which are available through the Checks functionality on commits and pull requests.
You can learn more about running and writing tests on the How to Run and Write Tests page.
Community Contributionsβ
Contributions to React Native are not limited to GitHub. You can help others by sharing your experience using React Native, whether that is through blog posts, presenting talks at conferences, or simply sharing your thoughts on Twitter and tagging @ReactNative.