Skip to content

Pull Requests ​

Code Owners ​

Pull requests require approval from code owners before merging. There are two types of reviewers:

  • Developers - Review code changes for functionality, architecture, and code quality
  • E2E Testers - Review changes that affect end-to-end test coverage or test infrastructure

The CODEOWNERS file determines which reviewers are automatically requested based on the files changed.

CI Checks ​

CircleCI runs on every pull request, executing:

  • Linting - TypeScript and ESLint checks
  • Tests - Unit test suite

These checks must pass before a PR can be merged.

E2E Tests ​

For PRs targeting develop, GitHub Actions runs E2E tests automatically. The workflow:

  1. Checks if a compatible native build exists (fingerprint check)
  2. Triggers a new build if native code changed, otherwise uses existing build
  3. Publishes an OTA update to a branch-specific channel
  4. Runs E2E tests on a self-hosted runner with Android emulator
  5. Reports results back to the PR

Skipping E2E Tests ​

E2E tests only run on Jira ticket branches (e.g. APY-1234-description). Non-ticket branches automatically get the builds_disabled label and builds are skipped.

See GitHub Actions for full details.

Merge Strategy ​

We use squash and merge for all pull requests except when merging into main. For releases into main, we use a regular merge commit to preserve the full commit history.

Merge Queue (Aviator) ​

For pull requests targeting the develop branch, we use Aviator to manage the merge queue. Aviator ensures PRs are tested against the latest develop before merging, preventing broken builds.

The Aviator Chrome Extension adds a "Queue pull request" button directly in GitHub. Without the extension, you'll need to manually add the mergequeue label to queue your PR.

For PRs into any other branch (e.g., release branches, feature branches), you need to manually merge using the GitHub merge button:

Queue pull request button

Click "Show the original GitHub merge button" checkbox, then use "Squash and merge".

Labels ​

Build Labels ​

LabelDescription
builds_disabledAuto-added on non-ticket branches; skips E2E tests
native-changesAuto-added when PR contains native changes

Status Labels ​

LabelDescription
blockedPR is blocked and cannot proceed
mergequeuePR is in the merge queue
NOT_READY_TO_MERGEAuto flag for bot PRs when still processing
no_ticket_foundPR has no linked Jira ticket

Dependency Labels (bots only) ​

LabelDescription
dependenciesPull requests that update a dependency file
javascriptPull requests that update Javascript code
rubyPull requests that update Ruby code
github_actionsPull requests that update GitHub Actions code
securityPull requests that address a security vulnerability