Skip to content

ci(mobile): build labelled PR previews with the release profile#43

Merged
patroza merged 2 commits into
fork/changesfrom
feat/mobile-preview-release-profile
Jul 25, 2026
Merged

ci(mobile): build labelled PR previews with the release profile#43
patroza merged 2 commits into
fork/changesfrom
feat/mobile-preview-release-profile

Conversation

@patroza

@patroza patroza commented Jul 25, 2026

Copy link
Copy Markdown
Owner

Why

The preview workflow built the preview:dev profile, which sets developmentClient: true. Labelled PR builds therefore ran an unminified bundle with __DEV__ assertions and React's development build — useful for attaching Metro, useless for judging how a change actually performs on device. A PR build should behave like the shipped app.

What changed

  • .github/workflows/mobile-eas-preview.yml — the fingerprint deploy step now uses profile: preview (release configuration).
  • apps/mobile/eas.json — the preview profile gains the two settings it needed to take over that role:
    • MOBILE_VERSION_POLICY: fingerprint, so continuous-deploy-fingerprint keeps reusing compatible builds and publishing OTA updates to the preview channel instead of forcing a native build per PR. The job-level env var never reached the EAS build servers.
    • android.buildType: apk, so the Android artifact linked from the PR comment installs directly rather than being an unusable AAB.
  • apps/mobile/README.md — documents that CI fingerprints the release preview profile and that preview:dev remains for local Metro attachment.

preview:dev is unchanged and still reachable through vp run eas:ios:preview:dev / eas:android:preview:dev.

Out-of-band change

The preview EAS environment had none of the T3CODE_MOBILE_* variables, so a remote preview build resolved the upstream pingdotgg fallback and failed with the extra.eas.projectId mismatch that broke the production builds earlier today. Seeded them on the Expo project (plaintext, project scope) to match the development environment:

T3CODE_MOBILE_EAS_PROJECT_ID, T3CODE_MOBILE_EXPO_OWNER, T3CODE_MOBILE_IOS_BUNDLE_IDENTIFIER, T3CODE_MOBILE_IOS_TEAM_ID.

Verification

APP_VARIANT=preview eas config --platform ios --profile preview resolves projectId 731ac55d-…, owner patroza, dev.patroza.t3code.preview, runtimeVersion.policy fingerprint, distribution internal.

Not yet exercised end to end: the .preview, .preview.sharing, and .preview.widgets targets still need ad-hoc provisioning profiles (eas credentials -p ios), and Android needs a keystore. Until then a labelled PR build will fail on credentials, exactly as the development workflow does today.

🤖 Generated with Claude Code

patroza and others added 2 commits July 25, 2026 13:21
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) <noreply@anthropic.com>
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) <noreply@anthropic.com>
@patroza
patroza merged commit dcf206e into fork/changes Jul 25, 2026
6 checks passed
@patroza
patroza deleted the feat/mobile-preview-release-profile branch July 25, 2026 11:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant