Skip to content

Release Process

Step-by-step guide for releasing a new version.

Prerequisites

GitHub repository secrets must be configured:

Secret Purpose
GOOGLE_SERVICES_JSON Base64-encoded google-services.json
MAPS_API_KEY Google Maps API key
RELEASE_KEYSTORE_BASE64 Base64-encoded release keystore (.jks)
RELEASE_KEYSTORE_PASSWORD Keystore password
RELEASE_KEY_ALIAS Signing key alias
RELEASE_KEY_PASSWORD Signing key password
GIST_TOKEN Personal access token for badge updates

These secrets are consumed by the Setup Secrets reusable action.

Steps

  1. Develop on staging — all feature branches merge into staging via PRs.

  2. Bump version — update version.properties on the release branch:

    versionCode=16       # increment by exactly 1
    versionName=1.9.0    # bump at least one semver part
    

  3. Regenerate baseline profiles (recommended when critical user journeys changed):

    ./gradlew :app:generateReleaseBaselineProfile
    
    Requires a device or emulator (API 28+). Commit the generated files in app/src/release/generated/baselineProfiles/. Stale profiles still work (ART ignores removed methods) but won't cover new hot paths. See Performance — Generating Profiles for details.

  4. Create PR staging → main — this triggers:

  5. Merge to main — this triggers:

  6. Verify — check that the GitHub release was created with the correct tag and APK.

Commit message

Use the release prefix for the version bump commit:

release: 1.9.0

See Commit Messages for all prefixes.