Skip to main content

iOS build

Goal

IPA/TestFlight build that uses routineassist.com as server.

For whom

Developers and CI (GitHub macOS runner).

Where in the app

Workflow .github/workflows/ios.yml; scripts npm run ios:prod, npm run ios:beta.

Prerequisites

Apple Developer account; GitHub secrets for TestFlight (see deploy/README).

Step by step

  1. On push/PR: GitHub Actions iOS build on macos-latest (sync + verify + simulator build).
  2. Locally or in CI: npm run ios:prod (API https://routineassist.com, sync versions + Firebase plist).
  3. Versions: android/app/build.gradle is source of truth — npm run ios:prod runs sync-native-versions.mjs.
  4. TestFlight: configure GitHub secrets (App Store Connect API + signing) — see deploy/README.md.
  5. App ID: Push Notifications on the App Store profile (Time Sensitive optional for Focus bypass).
  6. Actions → iOS build → Run workflow → enable Upload to TestFlight (not while pushing).
  7. Optional local Mac: npm run ios:open → signing in Xcode.
  8. Push: npm run ios:prod generates GoogleService-Info.plist (secret IOS_GOOGLE_SERVICES_PLIST_BASE64 or ios/GoogleService-Info.plist.base64.txt).
  9. Register minimum version in /admin/app-updates (iOS tab).

Options & settings

Never change only ios/ for UI — always src/ + cap sync.

Tips & troubleshooting

Native changes: Info.plist, App.entitlements, Swift plugins + re-sync.

See also