Skip to content

[LOCAL] Fix CI for RC.2#57614

Merged
cipolleschi merged 1 commit into
0.87-stablefrom
fix/0.87-ci-android-ios
Jul 20, 2026
Merged

[LOCAL] Fix CI for RC.2#57614
cipolleschi merged 1 commit into
0.87-stablefrom
fix/0.87-ci-android-ios

Conversation

@cipolleschi

Copy link
Copy Markdown
Contributor

Summary

Fixes the failing iOS and Android CI on 0.87-stable. Two independent root causes:

iOS — test_ios_rntester (all variants) failing at pod install

The Release 0.87.0-rc.1 bump changed package.json (and thus the versions derived by ReactNativeDependencies.podspec / React-Core), and the later iOS "dependency-only facades" refactor (#57440) changed the pod graph — but packages/rn-tester/Podfile.lock was never regenerated (still pinned to 0.87.0-rc.0 with the old structure). CI's pod update hermes-engine --no-repo-update then hits an unresolvable rc.0-vs-rc.1 conflict on ReactNativeDependencies.

The bump-podfile-lock workflow can't self-heal this: it runs a plain Maven pod install, but the Maven rc.1 React-Core artifact predates the ReactNativeHeaders.xcframework layout that current branch HEAD expects, so that install fails. (This does not affect real npm consumers of 0.87.0-rc.1 — their npm code and Maven artifacts match.)

Fix: regenerated Podfile.lock at HEAD using the fresh, HEAD-matching prebuilts that CI actually consumes (via RCT_TESTONLY_RNCORE_TARBALL_PATH / RCT_USE_LOCAL_RN_DEP), keeping the prebuilds path. The regenerated lock has no machine-local paths and 0 rc.0 references.

Verified locally: after this change, the exact CI step pod update hermes-engine --no-repo-update succeeds (it reproduced the failure beforehand).

Android — build_android failing at ReactAndroid:lintVitalAnalyzeRelease

An internal Android lint K2 UAST analyzer crash (resolveSyntheticJavaPropertyAccessorCall) while analyzing SynchronousMountItem.kt. Code, lint config, and AGP 9.2.1 / Kotlin 2.2.0 toolchain are identical to main (which passes this task fresh), so it's a nondeterministic toolchain bug; abortOnError = false does not suppress an analyzer crash.

Fix: rewrote toString() as an early return instead of assigning an if-expression to a local val, removing the exact AST shape from the crash stack (KotlinULocalVariable + if-expression initializer). Output is unchanged.

Test plan

  • iOS: cd packages/rn-tester && bundle exec pod update hermes-engine --no-repo-update succeeds with the fresh prebuilts (as CI does).
  • Android: build_android / ReactAndroid:lintVitalAnalyzeRelease should complete (verified by CI — the local Gradle daemon was unavailable on the dev machine).

@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Jul 20, 2026
@cipolleschi
cipolleschi merged commit 896fcb3 into 0.87-stable Jul 20, 2026
15 of 18 checks passed
@cipolleschi
cipolleschi deleted the fix/0.87-ci-android-ios branch July 20, 2026 14:38
@github-actions

Copy link
Copy Markdown

Caution

Missing Changelog

Please add a Changelog to your PR description. See Changelog format

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. p: Facebook Partner: Facebook Partner Pick Request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant