Key React Native gem cache by Ruby interpreter - #533
Merged
kiftio merged 1 commit intoJul 29, 2026
Conversation
11 tasks
This was referenced Jul 29, 2026
Merged
Contributor
Author
This was referenced Jul 29, 2026
kiftio
marked this pull request as ready for review
July 29, 2026 09:32
Install this buildOpen Tophat, select your target device, then click Install. Links open on the Mac running Tophat.
Checkout Kit E2E results
|
kiftio
force-pushed
the
07-29-key_react_native_gem_cache_by_ruby_interpreter
branch
from
July 29, 2026 10:17
58c988b to
f2d7498
Compare
kiftio
force-pushed
the
07-29-limit_react_native_ci_to_relevant_changes
branch
from
July 29, 2026 10:17
39a736a to
f1e1ecb
Compare
kieran-osgood-shopify
approved these changes
Jul 29, 2026
Contributor
Author
kiftio
changed the base branch from
07-29-limit_react_native_ci_to_relevant_changes
to
graphite-base/533
July 29, 2026 10:59
Assisted-By: devx/4075c309-3611-4ac8-9ea7-26a8974e7963
kiftio
force-pushed
the
07-29-key_react_native_gem_cache_by_ruby_interpreter
branch
from
July 29, 2026 11:15
f2d7498 to
7037023
Compare
This was referenced Jul 29, 2026
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.

What changes are you making?
River thread -> https://shopify.slack.com/archives/C0ANGTU8ZV0/p1785316055543009
Fixes a flaky CI failure on Bitrise where native Ruby gems (e.g.
bigdecimal,ffi) compiled against one Ruby interpreter fail to load after a stack image refresh serves a different interpreter path, even when the Ruby version string is unchanged.The root cause is that Bitrise stacks serve Ruby out of the nix store, and the absolute interpreter path baked into compiled
.bundle/.sofiles changes whenever the stack image is refreshed. The previous gem cache key did not account for this, so a bundle compiled against the old Ruby could be restored onto the new one, causing every native gem to fail todlopenand taking downpod installbefore it did any work.Two fixes are applied together:
restore-cacheand writes the Ruby prefix, version, and platform to.ruby-cache-fingerprint. This file is included in the cache key so that a cache miss is forced whenever the interpreter changes, not just when the version string orGemfile.lockchanges.require "bigdecimal". If it fails,vendor/bundleis deleted andbundle installruns from scratch, so a stale cache entry costs one slow build rather than a red run..ruby-cache-fingerprintis added to.gitignoresince it is a generated file produced by the CI step.How to test
Trigger a Bitrise build after a stack image refresh and confirm that
pod installcompletes successfully without native gemdlopenerrors. Verify the gem cache key changes when the Ruby interpreter path changes but remains stable across builds on the same stack image.Before you merge
Important
platforms/swift/README.mdand/orplatforms/android/README.md)Releasing a new Swift version?
ShopifyCheckoutKit.podspecplatforms/swift/Sources/ShopifyCheckoutKit/ShopifyCheckoutKit.swiftplatforms/swift/README.md(major version only)Releasing a new Embedded Checkout Protocol version?
embeddedCheckoutProtocolAndroidinplatforms/android/gradle/libs.versions.tomlprotocol/languages/kotlin/embedded-checkout-protocol/api/embedded-checkout-protocol.apiif the public API changedReleasing a new Android version?
checkoutKitAndroidinplatforms/android/gradle/libs.versions.tomlplatforms/android/README.mdTip
See the Contributing documentation for the full release process per platform.