# Mobile Release Process (Signing, Versioning, Release Notes)

Scope: Ticketing MVP + SSO (`ee/mobile/` Expo app) for hosted Alga PSA environments.

Last updated: 2026-02-03

## Signing

### iOS (TestFlight / App Store)

- Builds are produced via EAS (`ee/mobile/eas.json`).
- Signing credentials are managed by EAS using App Store Connect (recommended).
- App must exist in App Store Connect and use the same bundle id as `ee/mobile/app.json` (`expo.ios.bundleIdentifier`).

### Android (Play Internal / Play Store)

- Builds are produced via EAS (`ee/mobile/eas.json`).
- Keystore is managed by EAS (recommended).
- App must exist in Google Play Console and use the same package name as `ee/mobile/app.json` (`expo.android.package`).

## Versioning

### Human version

- Update `ee/mobile/app.json`:
  - `expo.version` (e.g. `1.0.0` → `1.0.1`)

### Build numbers

- iOS: increment `expo.ios.buildNumber` (string, monotonically increasing).
- Android: increment `expo.android.versionCode` (number, monotonically increasing).

Recommendation: bump both build numbers on every CI distribution run, even when `expo.version` stays the same.

## Release Notes

- Keep release notes in this plan folder so they are reviewable alongside scope.
- Create one file per release:
  - `docs/plans/2026-02-03-alga-psa-mobile-app/release-notes/YYYY-MM-DD.md`
- Minimum structure:
  - Highlights
  - Fixes
  - Known issues
  - Config changes / migrations (if any)

## CI / Automation

- GitHub Actions workflow: `.github/workflows/mobile-distribute.yml`
- Required secrets:
  - `EXPO_TOKEN`
- Before first run:
  - Create the Expo project and run `eas build:configure` locally once to bootstrap config/credentials.
  - Replace placeholders in `ee/mobile/eas.json` submit profiles (e.g. `ascAppId`) and/or configure EAS submit credentials.

