Thank you for considering a contribution. Bug reports, documentation improvements, tests, and focused pull requests are welcome.
- Search existing issues and pull requests before opening a new one.
- Use GitHub Issues for confirmed bugs and feature proposals.
- For usage questions, open a GitHub Discussion if Discussions are enabled.
- Do not report security vulnerabilities publicly. Follow SECURITY.md.
- Be respectful and follow CODE_OF_CONDUCT.md.
Please include:
- Package version
- React Native version
- Node.js and package-manager version
- Platform and OS version
- Device or simulator/emulator details
- Old or New React Native Architecture
- Minimal reproduction repository or reproducible steps
- Expected and actual behavior
- Relevant logs with secrets and personal data removed
Native issues should also include the relevant Xcode, CocoaPods, Gradle, Android Gradle Plugin, Kotlin, or Swift versions.
Describe the problem first, then the proposed API or behavior. Include platform differences, backward-compatibility concerns, and alternatives you considered. Please wait for maintainer feedback before investing in a large change.
- Fork the repository and clone your fork.
- Create a branch from
main:
git checkout -b fix/short-description- Install dependencies using the package manager represented by the repository lockfile:
yarn install- Make the smallest focused change that solves the problem.
- Add or update tests and documentation.
- Run the available checks defined in
package.json, such as linting, type checking, tests, and builds. - Test native changes on every affected platform. Prefer a physical device when the feature depends on device-only behavior.
- Follow the existing TypeScript and native-code style.
- Keep the public API typed and backward compatible where practical.
- Avoid unrelated formatting or dependency changes.
- Add comments only where behavior is not self-explanatory.
- Do not commit generated build output, credentials, signing files, tokens, or local environment files.
- Update the README and changelog when user-visible behavior changes.
A pull request should include tests for new behavior and regressions when feasible. If automated testing is not practical for a native behavior, document:
- Devices and OS versions tested
- React Native architecture tested
- Exact manual test steps
- Expected and observed results
For ShieldScan changes, include relevant clean-device and compromised/test-environment coverage where legally and safely possible. Security detections must document possible false positives, false negatives, platform limitations, and bypass assumptions. Never test on systems or devices without authorization.
Use clear, focused commits. Conventional Commit prefixes are encouraged:
feat:new functionalityfix:bug fixdocs:documentation onlytest:test changesrefactor:internal change without a public behavior changechore:maintenance work
A pull request should:
- Explain the problem and solution
- Link the related issue when one exists
- List platforms and configurations tested
- Include screenshots or recordings for visible behavior
- Identify breaking changes clearly
- Keep unrelated changes out of the PR
Maintainers may request changes, close stale proposals, or decline changes that do not fit the project scope.
Releases are performed by maintainers. Do not change the package version unless requested. User-visible changes should be documented in CHANGELOG.md.
By contributing, you agree that your contribution will be licensed under the repository's existing license.