Repository navigation
ci: weekly React Native compatibility watch - #732
Merged
Merged
Conversation
Every Monday, checks the `latest` (and an upcoming-minor `next`) react-native release on npm. For each version not yet reported compatible, builds a fresh app at that version with the packed library (type-check, release bundle, Android and iOS builds, new architecture) and opens an issue with the per-step results, the failing logs and the compiler warnings that point into the library's own native code, as an early list of what needs adapting. Failing versions are re-tested weekly; the issue only gets a comment when the result changes, and is reopened if it fails again. workflow_dispatch takes a specific version (e.g. `nightly`) and a `force` flag. Pull requests touching the workflow run it as a dry run on `latest` (report in the job summary, no issue). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Know when a React Native release needs adaptations in the library, without tracking RN releases by hand.
How it works
.github/workflows/rn-compat.yml, every Monday:latestandnextreact-native dist-tags on npm.nextis kept only when it targets a newer minor thanlatest, since it lingers on the last RC after a release..github/scripts/rn-compat-app.shcreates a fresh app (@react-native-community/cli init --version X) and installs the library fromnpm pack. The app'sApp.tsxusesViewShot,captureRefandcaptureScreen.tsctype-check, release bundle,assembleDebugpod install,xcodebuild-Xlint:deprecation), kotlinc, Gradle and clang. Codegen output is excluded. These are the "adapt this before it breaks" signals.rn-compat, titledRN compat: react-native@X — ✅ compatibleor— ❌ <failed steps> failed. The issue contains the per-step table, the warnings, the tail of each failing log, and the release notes plus an Upgrade Helper link from the example's RN version. When a re-test gives a different result, the bot updates the title, comments, and reopens the issue if it fails again.Manual run: Actions → RN compatibility → Run workflow. It takes a
version, which can be a tag such asnightlyornext, and aforceflag to re-test a version that already has an issue. This only becomes available once the workflow is onmaster.Pull requests that change the workflow or the script run it as a dry run on
latest. The would-be issue goes to the job summary instead of a real issue, and the job fails if the result isn't ✅. This PR is the first such run.Already tested locally against RN 0.88.0 (current
latest; the example is on 0.84.1)RNViewShot.mm:70,keyWindowdeprecated since iOS 13.UIManagerModule/addUIBlock,NativeViewHierarchyManager.resolveView,UIBlockViewResolver,TurboReactPackage, plusAsyncTask,getCurrentActivity(),CompressFormat.WEBPandView.getDrawingCache().Viewis no longer a class, souseRef<View>doesn't type-check (useuseRef<React.ComponentRef<typeof View>>). A ref of that type is still accepted bycaptureRef.I also checked:
nightly, unknown version,force)gh: new issue, unchanged result, forced re-test with reopen, setup failure, dry runAll of these ran locally;
actionlintpasses. Reviewed with three/code-reviewpasses. What I didn't fix, and why:ci.ymlon every PR.🤖 Generated with Claude Code