Why
Every TestFlight build so far used the development profile (developmentClient: true), so testers opening the app from TestFlight landed in the Expo dev launcher instead of the app. staging is distribution: internal (ad-hoc) and cannot be uploaded to TestFlight.
What
- New build profile
testflight: extendsstaging(APP_ENV=staging, channelstaging, autoIncrement, pnpm pin) and overrides iOSdistribution: storewith the Xcode 26 image. - Matching
submit.testflightfor ASC app 6826052581.
Usage: eas build -p ios --profile testflight then eas submit -p ios --profile testflight.
Verification
-
eas config --profile testflight -p iosresolves to store / channel staging / Xcode 26 image / APIhttps://ahad.holadev.xyz/. - Build 0.0.9 (4) built from this branch with the new profile.
- Opus gate: PASS WITH SHOULD-FIX (round 1, no blocking).
After merge
eas.json is a fingerprint source: rebuild staging (Android + iOS ad-hoc) and the testflight build before the next pnpm update:staging, otherwise existing installs silently miss the OTA. Production is unaffected (no updates.url, channel production).
Deferred NITs (both EAS environments are empty today): "environment": "preview" on testflight; autoIncrement on production; build:testflight:ios script.