Restore dual architecture support for 3.9 - #487
Merged
kieran-osgood-shopify merged 8 commits intoAug 26, 2026
Merged
Conversation
kieran-osgood-shopify
marked this pull request as ready for review
May 13, 2026 09:07
kieran-osgood-shopify
force-pushed
the
kieran-osgood/cx-rn-v39-compat/dual-architecture
branch
from
May 13, 2026 09:35
f6d38f0 to
8c2ef3f
Compare
kieran-osgood-shopify
force-pushed
the
kieran-osgood/cx-rn-v39-compat/dual-architecture
branch
from
August 25, 2026 15:49
6f03581 to
7d08692
Compare
Assisted-By: devx/414037a7-8b00-4d1b-b4ff-20c6919aa6df
| ShopifyCheckoutSheetKit.invalidate(); | ||
| } | ||
|
|
||
| @ReactMethod(isBlockingSynchronousMethod = true) |
Contributor
Author
There was a problem hiding this comment.
FYI These all exist as turbo module plumbing - the typescript spec includes them modules/@shopify/checkout-sheet-kit/src/specs/NativeShopifyCheckoutSheetKit.ts but they're not actually run at runtime because we noop as we guard accelerated checkouts in JS via Platform.OS === 'ios'
Contributor
|
@kieran-osgood-shopify want to make this change too while you're changing this file?
Related: |
markmur
reviewed
Aug 26, 2026
kieran-osgood-shopify
force-pushed
the
kieran-osgood/cx-rn-v39-compat/dual-architecture
branch
from
August 26, 2026 09:46
980eba5 to
4aa378b
Compare
| { | ||
| "name": "@shopify/checkout-sheet-kit", | ||
| "license": "MIT", | ||
| "version": "4.0.0", |
Contributor
Author
There was a problem hiding this comment.
This makes sense as we decided not to publish v4 and ive fixed the breaking changes
markmur
approved these changes
Aug 26, 2026
kieran-osgood-shopify
deleted the
kieran-osgood/cx-rn-v39-compat/dual-architecture
branch
August 26, 2026 16:27
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.


TLDR;
The plan was to move up to new arch in #456 and release this under v4
This PR somewhat undoes this, and will release new arch with interop support under
v3.9V4 will be new arch only
This PR essentially undoes a number of improvements made in
https://github.com/Shopify/checkout-sheet-kit-react-native/pull/456around moving from async to sync api's (seegetConfig/isAcceleratedCheckoutAvailable/isApplePayAvailable)As those revert, this is no longer a breaking change and can be released under
3.9.0I've validated there are no breaking changes to the JS contract by adding the
"@microsoft/api-extractor": "^7.58.7",package and dumping the api contract from v3.8.4What changes are you making?
@shopify/checkout-sheet-kitto3.9.0while preserving the v3 public async API.NativeModulesresolution.3.6.3and iOS3.8.2which have been released under therelease-v3release branch for3.8.xHow does Interop work
JS Layer
Before new arch we would access native modules via
NativeModules.ShopifyCheckoutSheetKit, new arch is accessed via turbo modulesTurboModuleRegistry.get(...)We attempt turbo first, and fallback to native modules if it doesn't exist
Native Side
We have a few areas that are conditional to apply
On the iOS side we have to do conditional imports of turbo related headers and packaged via the
#if RCT_NEW_ARCH_ENABLEDdirective and using the help-erinstall_modules_dependenciesin the podspecGradle is a bit simpler because we just set a value in the env and pass it to a constructor for the react module
The rest of the native changes are reimplementing interfaces that the NativeModule system expects (e.g. getConstants / getName, and some of our bridge methods that are not codegenerated)
How to test
Builds have been distributed on Testflight and Play Store to tophat the build on New Arch.
I've done validation locally with new arch on and off and haven't run into any issues as of yet.
PR Checklist
Important
Releasing a new version of the kit?
package.jsonfile.Tip
See the Contributing documentation for instructions on how to publish a new version of the library.