From d7a30021e887d6fde0bd56fef009ec0069a4e002 Mon Sep 17 00:00:00 2001 From: Patrick Roza Date: Sat, 25 Jul 2026 13:21:53 +0200 Subject: [PATCH 1/2] ci(mobile): build labelled PR previews with the release profile The preview workflow built `preview:dev`, a development-client profile, so labelled PR builds ran unminified JavaScript with dev-only assertions. Those builds cannot show how a change behaves for performance or memory. Point the workflow at the plain `preview` profile and give it the two settings it was missing for that role: the fingerprint version policy, so the continuous-deploy-fingerprint action can still reuse compatible builds and publish OTA updates, and an APK Android build type, so the artifact linked from the PR installs directly. `preview:dev` stays for local Metro attachment. Also seed the preview EAS environment with the T3CODE_MOBILE_* variables that only the development environment carried, so remote builds resolve this fork's project instead of the upstream fallback. Co-Authored-By: Claude Opus 5 (1M context) --- .github/workflows/mobile-eas-preview.yml | 5 ++++- apps/mobile/README.md | 2 +- apps/mobile/eas.json | 6 +++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.github/workflows/mobile-eas-preview.yml b/.github/workflows/mobile-eas-preview.yml index 11eb0c64589..0dbb80b86aa 100644 --- a/.github/workflows/mobile-eas-preview.yml +++ b/.github/workflows/mobile-eas-preview.yml @@ -75,7 +75,10 @@ jobs: env: EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }} with: - profile: preview:dev + # Release configuration, not `preview:dev`: PR builds must show + # production-grade performance and memory behaviour. The dev-client + # `preview:dev` profile stays available for local Metro attachment. + profile: preview branch: pr-${{ github.event.pull_request.number }} platform: all environment: preview diff --git a/apps/mobile/README.md b/apps/mobile/README.md index 920a25fc095..16e134adf57 100644 --- a/apps/mobile/README.md +++ b/apps/mobile/README.md @@ -122,7 +122,7 @@ The native lint task runs SwiftLint for Swift plus ktlint and detekt for Kotlin. ## EAS Builds -CI uses Expo fingerprinting with the `preview:dev` profile to reuse an existing compatible build when possible, or start a new internal EAS build when native runtime inputs change. Production and default local builds continue to use the `appVersion` runtime policy. +CI uses Expo fingerprinting with the `preview` profile to reuse an existing compatible build when possible, or start a new internal EAS build when native runtime inputs change. That profile builds the release configuration, so labelled PR builds behave like production for performance and memory; use `preview:dev` when you want a dev client on the preview channel that attaches to local Metro. Production and default local builds continue to use the `appVersion` runtime policy. For preview or production EAS environments, set `T3CODE_CLERK_PUBLISHABLE_KEY`, `T3CODE_CLERK_JWT_TEMPLATE`, and `T3CODE_RELAY_URL` diff --git a/apps/mobile/eas.json b/apps/mobile/eas.json index bec1840b515..9f5d768e14c 100644 --- a/apps/mobile/eas.json +++ b/apps/mobile/eas.json @@ -20,11 +20,15 @@ "corepack": true, "env": { "APP_VARIANT": "preview", + "MOBILE_VERSION_POLICY": "fingerprint", "NODE_OPTIONS": "--max-old-space-size=4096" }, "channel": "preview", "environment": "preview", - "distribution": "internal" + "distribution": "internal", + "android": { + "buildType": "apk" + } }, "preview:dev": { "corepack": true, From 032d0822876a3f87bdf08dde2a08724b81198916 Mon Sep 17 00:00:00 2001 From: Patrick Roza Date: Sat, 25 Jul 2026 13:29:49 +0200 Subject: [PATCH 2/2] ci(mobile): limit labelled PR previews to iOS Android has no signing keystore on the Expo project, so a `platform: all` preview build fails on credentials before the iOS artifact is published. Restore Android here once a keystore exists. Co-Authored-By: Claude Opus 5 (1M context) --- .github/workflows/mobile-eas-preview.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/mobile-eas-preview.yml b/.github/workflows/mobile-eas-preview.yml index 0dbb80b86aa..a36ef326715 100644 --- a/.github/workflows/mobile-eas-preview.yml +++ b/.github/workflows/mobile-eas-preview.yml @@ -80,7 +80,9 @@ jobs: # `preview:dev` profile stays available for local Metro attachment. profile: preview branch: pr-${{ github.event.pull_request.number }} - platform: all + # iOS only: Android has no signing keystore configured, so including + # it fails the job before the iOS artifact is published. + platform: ios environment: preview working-directory: apps/mobile github-token: ${{ secrets.GITHUB_TOKEN }}