Skip to content

fix(updates): ignore files inside RNRepo caches in the fingerprint - #930

Merged
luke-h1 merged 1 commit into
mainfrom
fix/fingerprint-ignore-rnrepo-cache
Oct 13, 2026
Merged

luke-h1 merged 1 commit into
mainfrom
fix/fingerprint-ignore-rnrepo-cache

Conversation

@luke-h1

@luke-h1 luke-h1 commented Oct 13, 2026

Copy link
Copy Markdown
Owner

Why

This is the real cause of the "Runtime version mismatch" failures in deploy-ota-or-native (failed run). #929 works around them by going back to appVersion.

The EAS build folder runs pod install before it calculates the runtime version. During pod install, RNRepo writes prebuilt frameworks into node_modules/<package>/.rnrepo-cache/. The fingerprint hashes every native package folder. .fingerprintignore had **/.rnrepo-cache, which matches only the folder, not the files inside it. So the build hashed nine packages differently from the runner:

async-storage, @sentry/react-native, device-info, gesture-handler,
performance, reanimated, safe-area-context, svg, webview

How

-**/.rnrepo-cache
+**/.rnrepo-cache/**

Test Plan

I reproduced commit b8bea11 locally with the production secrets from 1Password and the CI env. I fingerprinted a copy packed the way EAS packs it (.easignore, no .git) after each build step:

                       before fix   after fix
runner checkout        cbb67b4…     cbb67b4…
build, after install   cbb67b4…     cbb67b4…
build, after prebuild  cbb67b4…     cbb67b4…
build, after pod install 1314dea…   cbb67b4…

cbb67b4… and 1314dea… are the exact hashes from the failed run. The runner hash does not change, so the fingerprint cache in S3 stays valid. This change alone does not trigger a native build.

Merge Danger

Door: two-way. Revert the one line to go back.

Blast Radius: fingerprints.

Files inside .rnrepo-cache folders no longer count towards the fingerprint. They are build caches that RNRepo creates, not source. After this merges, runtimeVersion.policy can go back to fingerprint (revert #929).

RNRepo writes prebuilt frameworks into node_modules/<package>/.rnrepo-cache/
during pod install. The pattern **/.rnrepo-cache matched only the folder, so
the fingerprint still hashed the files inside it. The build folder runs pod
install before EAS checks the runtime version, so its fingerprint did not
match the fingerprint from the runner.
@coderabbitai

coderabbitai Bot commented Oct 13, 2026

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 55 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 6f03e108-ed91-4bed-845c-0ca95b73ea5e
📥 Commits

Reviewing files that changed from the base of the PR and between b8bea11 and c73fd7a.

📒 Files selected for processing (1)
  • .fingerprintignore
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@luke-h1

luke-h1 commented Oct 13, 2026

Copy link
Copy Markdown
Owner Author

✅ OTA compatible

This PR does not change the native fingerprint. It can ship as an OTA update.

Fingerprints against the base commit
Variant Platform Base Head
production ios 921562f86994488d03b6217e9008c15f50c69605 921562f86994488d03b6217e9008c15f50c69605
production android c365118abeffd592c8da7bff7d7f393d1fbb78f5 c365118abeffd592c8da7bff7d7f393d1fbb78f5
testflight ios be2d683314d8de744f25db88aaea47a9dba9e126 be2d683314d8de744f25db88aaea47a9dba9e126
testflight android 9e9da5b5dc935da52fe57058ee5546caf6081f26 9e9da5b5dc935da52fe57058ee5546caf6081f26
internal ios 6b979975127d90181247f62652a271765ecd9765 6b979975127d90181247f62652a271765ecd9765
internal android 39c93131fbdbe546e0ae48479400f07efa028da8 39c93131fbdbe546e0ae48479400f07efa028da8

@luke-h1
luke-h1 merged commit 8c91c29 into main Oct 13, 2026
14 checks passed
@luke-h1
luke-h1 deleted the fix/fingerprint-ignore-rnrepo-cache branch October 13, 2026 14:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant