Contributions toDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/aravind3566/react-native-in-app-updates/llms.txt
Use this file to discover all available pages before exploring further.
react-native-in-app-updates are welcome regardless of size. This guide walks you through the full development workflow — from forking the repository to submitting a polished pull request — so you can contribute with confidence.
Project Structure
The repository is a monorepo managed with Yarn workspaces (Yarn 3.6.1). It contains two packages:| Package | Location | Purpose |
|---|---|---|
| Library | / (root) | The published react-native-in-app-updates npm package |
| Example app | example/ | A React Native app that exercises the library locally |
This project uses Yarn workspaces — you cannot use
npm for development. Running npm install will produce incorrect dependency resolution and break the workspace linking.Getting Started
Install all workspace dependencies
Run
yarn from the root of the repository. This installs dependencies for both the library package and the example/ app in one step:Run the example app
Start the Metro bundler, then launch the example app on your target platform:To edit Android native code, open
example/android in Android Studio and locate the source files under react-native-in-app-updates → Android.To edit iOS native code, open example/ios/InAppUpdatesExample.xcworkspace in Xcode and find the files under Pods > Development Pods > react-native-in-app-updates.Make your changes
Edit source files in
src/ for JavaScript/TypeScript changes, or in android/ / ios/ for native changes.Run linting and type checking
Verify that your changes pass TypeScript type checking and ESLint before committing:To automatically fix formatting issues detected by Prettier:
Run the test suite
Add tests for your change where possible, then run the full Jest suite:Pre-commit hooks will re-run the linter and tests automatically when you commit, so passing them locally avoids surprises.
Commit using conventional commits
Write your commit message following the Conventional Commits specification (see below). Pre-commit hooks validate the format automatically via
commitlint.Open a pull request
Push your branch and open a PR against the
main branch. Follow the pull request template and keep PRs focused on a single change. For proposals that affect the public API or implementation architecture, open an issue first to discuss with maintainers before writing code.Available Scripts
All commands are run from the root of the repository:Commit Message Convention
This project follows the Conventional Commits specification. Commit messages are validated bycommitlint on every commit. The format is:
Supported commit types with examples
Supported commit types with examples
| Type | When to use | Example |
|---|---|---|
fix | Bug fixes | fix: resolve crash due to deprecated method |
feat | New features | feat: add flexible update flow support |
refactor | Code restructuring with no behaviour change | refactor: migrate class component to hooks |
docs | Documentation changes only | docs: add usage example for immediate update |
test | Adding or updating tests | test: add integration tests for update status |
chore | Tooling or configuration changes | chore: update CI config to Node 20 |
Linting and Testing Requirements
The project uses the following toolchain to enforce code quality:- TypeScript — static type checking across the library source
- ESLint + Prettier — linting and consistent code formatting
- Jest — unit testing
Sending a Pull Request
Keep PRs focused
Prefer small, single-purpose pull requests. Large, multi-concern PRs are harder to review and slower to merge.
Discuss API changes first
For changes to the public API or core implementation, open an issue to align with maintainers before investing time in code.
Verify all checks pass
Confirm that
yarn typecheck, yarn lint, and yarn test all pass locally before opening your PR.New to open source?
The free egghead series How to Contribute to an Open Source Project on GitHub is a great starting point.