Before opening an issue, please search the issue tracker to make sure your issue hasn’t already been reported.
Take some time to structure your code and question in a way that is easy to read to entice people to answer it. For example, we encourage you to use syntax highlighting, indentation, and split text in paragraphs.
Visit the issue tracker to find a list of open issues that need attention.
To get started developing:
- fork the repo
- clone react-native-branch locally
cd react-native-branch && npm i
Before submitting a PR, test the new functionality or bugfix in android & ios, and if possible write a unit test.
All contributions must pass npm run lint
and npm test
before being accepted.
All contributions must also pass native unit testing. The native tests depend on the native React source from node_modules. To run the native unit tests:
yarn
bundle install
bundle exec fastlane test_android
bundle exec fastlane test_ios
There is also a runAllTests
script at the repository root for convenience, which also runs npm run lint
and npm test
.
This script requires macOS because it runs the iOS tests.
Notes on native unit tests and Fastlane:
- CI uses Ruby 2.4.0. There is no specific Ruby requirement, but it's best to use a fairly current version.
- The Android tests require the
ANDROID_HOME
environment variable to be properly set to point to the location of the Android SDK. If not set, thetest_android
lane will set it to~/Library/Android/sdk
, which is the default location on a Mac. Either:orexport ANDROID_HOME=/path/to/android/sdk bundle exec fastlane test_android
ANDROID_HOME=/path/to/android/sdk bundle exec fastlane test_android
- The iOS tests must be run on macOS with Xcode 8 installed.
- You can also run the native unit tests in Android Studio or Xcode if you prefer, using the projects under native-tests. You must install the NPM dependencies for this repo first.
- There is no need to run
pod install
or even install CocoaPods in order to run the unit tests. - If you don't have access to macOS and are not changing anything in the iOS codebase, there is no need to run the iOS unit tests. They will run in CI. If anything fails the error will be reported there.
Improvements to the documentation are always welcome. In the docs we abide by typographic rules, so instead of ' you should use ’. Same goes for “ ” and dashes (—) where appropriate. These rules only apply to the text, not to code blocks.
Thank you for contributing!