fix(mobile): roll version back to 1.5.185 and drop mobile from changesets - #14564
fix(mobile): roll version back to 1.5.185 and drop mobile from changesets#14564dylanjeffers wants to merge 1 commit into
Conversation
…sets Mobile OTA history is keyed on the packages/mobile/package.json version baked into the JS bundle at build time (see src/app/ota-updates.ts), not on the native version. Changesets bumped this to 1.5.186 on 2026-08-03, but the iOS 1.5.186 production build failed, so every iPhone still runs a 1.5.185 bundle and polls histories/ios/production/1.5.185.json — which has had no new release since 2026-07-28. The production OTA publishes on 2026-08-06 landed on 1.5.186 and reached no iOS devices. Roll the version back to 1.5.185 so production OTA publishes target the binary users actually run, and add @audius/mobile to the changesets ignore list so the release tooling stops moving what is effectively an OTA routing key. Mobile's native versions are independent of this field: Android versionName comes from build.gradle and versionCode from Play's max + 1, iOS build number from app_store_build_number + 1. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
|
Dependency limit exceeded — report not shown. This pull request scan exceeded the 10,000-dependency limit applied to this scan, so the results are incomplete and may be inaccurate. To avoid reporting false positives, Socket has not posted a report. Upgrade your plan to raise the dependency limit and get complete reports, or view the partial scan in the dashboard. Socket is always free for open source. If this is a non-commercial open source project, contact us to request a free Team account. |
Problem
Mobile OTA history is keyed on the
packages/mobile/package.jsonversion baked into the JS bundle at build time (src/app/ota-updates.ts), not on the native version. The client fetches:CI publishes with
--binary-version= main's package.json version at dispatch time. So an OTA publish only reaches devices whose shipped store build was compiled from that same package.json version.On 2026-08-03,
Version Packages (#14216)bumped mobile 1.5.185 → 1.5.186. On that run (30851065355) the Android production build uploaded fine butiOS Production Build & Uploadfailed, and no iOS production build has run since — later main pushes only trigger OTA jobs, which are gated onversion_changed.Result:
histories/ios/production/1.5.185.json, whose newest release is from 2026-07-28. No OTA banner since.production/1.5.186.json— orphaned on iOS, live only for Android users on the 1.5.186 Play build.The failure is silent by design: the client converts a 404 or empty history into
releaseHistoryNoUpdatePlaceholderso CodePush doesn't throw. No error, no banner, no signal.Change
packages/mobile/package.jsonback to 1.5.185 so production OTA publishes target the binary users actually run.@audius/mobileto the changesetsignorelist, so the release tooling stops moving what is effectively an OTA routing key (12 mobile changesets are queued on in-flight branches and would re-bump it within days).packages/mobileentry inpackage-lock.json.Why this is safe
versionNamecomes frombuild.gradle(1.1.534),versionCodefrom Play's max + 1; iOS build number fromapp_store_build_number+ 1. For mobile,package.jsonversion is purely an OTA routing key with no store meaning.version_changed=trueand fires both production build jobs, but iOSlane :uploadcallspilot(...)(TestFlight, explicitly "Don't actually distribute"), Android'sbuild_and_uploadno-ops unlessbuildFileVersion > releasedVersion, and both sit behind themobile-production-ios/mobile-production-androidenvironment gates.MIN_APP_VERSIONis not tripped.useUpdateRequiredforces an update screen when package.jsonsemver.ltthe remote value. Default is1.0.0, and iPhones run 1.5.185 bundles today with no forced-update screen, so the live value is already ≤ 1.5.185.changeset statusexits 0 with@audius/mobileabsent from the bump list.maincurrently has only 4 changesets, all@audius/sdk, so nothing needs untangling first.The
## 1.5.186entry inpackages/mobile/CHANGELOG.mdis left in place — those changes really did ship to rc and to Android.Follow-ups (not in this PR)
Version Packagesonce mobile is ignored — changesets throws on any changeset listing both ignored and non-ignored packages. These need the'@audius/mobile': patchline dropped before they merge:ota-version-flag-attribute.md,profile-conditional-contests-tab.md,remove-fingerprintjs.md,rename-chronological-feed-to-latest.md.After merge
mobile-ota-release-productionisworkflow_dispatch-only and does not depend onversion_unchanged, so oncecurrent_versionreads 1.5.185 you can dispatch production OTA directly to unblock the ~3 weeks of undelivered JS fixes. A normal main push first gets you anrcpublish as a canary.🤖 Generated with Claude Code