Repository navigation
chore(mobile): bump versions for native release 1.5.189 - #14656
dylanjeffers wants to merge 1 commit into
Conversation
Co-Authored-By: Claude Opus 5.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. |
…st effect (#14658) ## Summary Cold launches can stay on the splash screen forever. `App` renders `null` until the AsyncStorage preload finishes, and its `useEffectOnce` only subscribed to `localStoragePreloadPromise` when the module-level `localStoragePreloaded` flag was still false. If the preload resolves after the first render but before the effect runs, the flag is already true, the effect skips the subscription, and nothing ever sets `preloaded`. `App` keeps returning `null`, `RootScreen` never mounts, and `BootSplash.hide` is never called. The fix subscribes unconditionally. `setPreloaded(true)` is idempotent, so the extra `.then` on an already-resolved promise costs nothing. ## Why now Found while smoke-testing the New Architecture flip (#14657). On the new architecture, passive effects run later relative to the first render, which opens the window. On the iOS 26.5 simulator with the 1.5.189 new-arch Release build: - without this fix, 5 of 6 cold launches of the as-built bundle stuck on the splash (JS idle, `RCTRootComponentView` with no children). Instrumented runs logged `App render preloaded=false`, then `preload resolved`, and no further render. - with this fix, 8 of 8 cold launches reached the feed. The same race exists on the old architecture (introduced in #14259). It just loses it less often. 3 of 3 old-arch 1.5.188 launches were fine. ## Rollout JS-only. It's safe to OTA to 1.5.188. It has to be on main before #14656 / #14657 merge, so the 1.5.189 binary ships with it. Rebase or merge main into `chore/mobile-native-release-1.5.189` after this lands. ## Checks - eslint `packages/mobile/src/app/App.tsx`: pass - `npx tsc --noEmit -p packages/mobile`: pass 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Summary
Version bump for native release 1.5.189. Merging it starts the RC and production native builds.
packages/mobile/package.json: 1.5.188 → 1.5.189 (and the matchingpackage-lock.jsonentry)CFBundleShortVersionString: 1.1.201 → 1.1.202versionName: 1.1.537 → 1.1.5381.5.189 contains one change: React Native's New Architecture turned on (#14657). Nothing else changes. Everything it depends on already shipped on the old architecture in 1.5.188 (RN 0.81.6 #14642, the RNTP bridgeless patch #14647, native-driver progress #14651, react-native-svg 15.15.1 and the Lottie recycling patch #14652). The findings from the spike (#14648, now closed) are in #14657.
Prerequisite: #14658 (JS-only, merges to main first). Without it, about half of iOS new-arch cold launches stay on the splash screen. It's a race in
App.tsx's preload gate that new arch exposes. After it lands, merge main into this branch.Stack
Merge order
production/1.5.188.1.5.189histories.com.facebook.react.runtime.JavaScript; Android, no "Legacy Architecture" warning)ShadowTree::commitassert🤖 Generated with Claude Code