Skip to content

React Native: add explicit checkout link handling - #921

Merged
markmur merged 2 commits into
rn-checkout-lifecycle-eventsfrom
rn-checkout-link-handling
Oct 9, 2026
Merged

markmur merged 2 commits into
rn-checkout-lifecycle-eventsfrom
rn-checkout-link-handling

Conversation

@markmur

@markmur markmur commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Expose linkAction (open, handled, or cancel) and onLinkClick({url}) on checkout sheets and accelerated buttons. The native SDK applies the policy synchronously while JavaScript receives an asynchronous notification, so apps can route links themselves without delaying the native decision.

Ignored duplicate presentations preserve the active checkout’s original link policy and callbacks. Accelerated buttons cancel link events after dismissal or failure until a new checkout starts. The sample observes link notifications and leaves opening to the native SDK.

Stack

@markmur
markmur added this pull request to stack #922 October 6, 2026 13:33
@markmur
markmur requested a review from a team as a code owner October 6, 2026 13:33
@github-actions github-actions Bot added the #gsd:50662 Rebase Checkout Kit on UCP label Oct 6, 2026
@markmur markmur changed the title Add explicit checkout link handling to React Native React Native: add explicit checkout link handling Oct 6, 2026
@github-actions

github-actions Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

React Native — Coverage Report

Lines Statements Branches Functions
Coverage: 95%
94.95% (320/337) 89.13% (205/230) 100% (79/79)

@github-actions

github-actions Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Bundle Size Budgets

Budget Size Limits Result
React Native npm package (gzip) 115.22 KiB (+1023 B) 130 KiB soft / 150 KiB hard ✅ Within budget

Bundle and package size

Web bundle sizes cover shipped runtime JavaScript. Package sizes cover the full published archive, including any source maps, declarations, and documentation it contains.

Platform Measurement Compression Base Head Delta
React Native npm package (.tgz) gzip 114.2 KiB 115.2 KiB +1023 B
React Native package files (uncompressed)

These are uncompressed file sizes; they do not sum to the compressed package size above.

File Base Head Delta
node_modules/@shopify/checkout-kit-protocol/src/generated/Models.ts 108.7 KiB 108.7 KiB 0 B
node_modules/@shopify/checkout-kit-protocol/src/generated/Models.d.ts 73.1 KiB 73.1 KiB 0 B
android/src/main/java/com/shopify/reactnative/checkoutkit/ShopifyCheckoutKitModule.java 17.7 KiB 17.7 KiB +27 B
ios/AcceleratedCheckoutButtons.swift 14.3 KiB 14.8 KiB +536 B
ios/ShopifyCheckoutKit.swift 14.7 KiB 14.8 KiB +63 B
src/index.ts 14.0 KiB 14.2 KiB +139 B
lib/commonjs/index.js 13.5 KiB 13.6 KiB +58 B
lib/module/index.js 11.6 KiB 11.6 KiB +58 B
src/index.d.ts 10.7 KiB 10.8 KiB +77 B
node_modules/@shopify/checkout-kit-protocol/src/generated/ProtocolNotifications.ts 9.5 KiB 9.5 KiB 0 B
lib/module/index.js.map 9.4 KiB 9.4 KiB +46 B
lib/commonjs/index.js.map 9.2 KiB 9.2 KiB +46 B
node_modules/@shopify/checkout-kit-protocol/src/protocol_codec_runtime.ts 7.9 KiB 7.9 KiB 0 B
node_modules/@shopify/checkout-kit-protocol/src/generated/ProtocolRenameMap.ts 7.8 KiB 7.8 KiB 0 B
node_modules/@shopify/checkout-kit-protocol/src/generated/ProtocolNotifications.d.ts 7.6 KiB 7.6 KiB 0 B
src/components/AcceleratedCheckoutButtons.tsx 6.9 KiB 7.0 KiB +94 B
lib/commonjs/components/AcceleratedCheckoutButtons.js 6.8 KiB 6.9 KiB +98 B
android/src/main/java/com/shopify/reactnative/checkoutkit/CustomCheckoutListener.java 5.5 KiB 6.2 KiB +704 B
lib/commonjs/components/AcceleratedCheckoutButtons.js.map 5.8 KiB 5.9 KiB +110 B
lib/module/components/AcceleratedCheckoutButtons.js 5.6 KiB 5.7 KiB +98 B
…and 117 smaller files
How sizes are measured

Measured from the PR base SHA and PR head SHA. Web bundle rows sum shipped .js, .mjs, and .cjs files under dist/, excluding source maps and declarations. The gzip bundle size sums files compressed individually with gzip -n -9. npm package sizes are gzip-compressed .tgz archives; Android AAR sizes are ZIP archives. Package sizes are not final app binary sizes.

@markmur markmur self-assigned this Oct 6, 2026
@markmur
markmur force-pushed the rn-checkout-link-handling branch from 9e986c4 to d8b5e26 Compare October 6, 2026 13:38
@bitrise

bitrise Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Bitrise builds

E2E · iOS CI

Install this build

Open Tophat, select your target device, then click Install. Links open on the Mac running Tophat.

SDK Install
React Native Install with Tophat

Checkout Kit E2E results

Status Tags Target Platform OS version tag Device
✅ launch, checkout-presentation, checkout-completion, buyer-identity react-native ios latest iPhone 15
iOS 27 Beta
✅ launch, checkout-presentation, checkout-completion, buyer-identity react-native android latest Google Pixel 9
Android 17.0

Comment thread platforms/react-native/sample/src/hooks/useCheckoutEventHandlers.ts Outdated
@markmur
markmur force-pushed the rn-checkout-link-handling branch from d8b5e26 to ce3d18e Compare October 6, 2026 16:13
@markmur
markmur force-pushed the rn-checkout-link-handling branch 4 times, most recently from 4172420 to 2372b5a Compare October 8, 2026 10:45
@markmur
markmur removed this pull request from stack #922 October 8, 2026 11:06
@markmur
markmur added this pull request to stack #943 October 8, 2026 11:06
@markmur
markmur force-pushed the rn-checkout-link-handling branch from 2372b5a to d8d5ed4 Compare October 8, 2026 11:06
@markmur
markmur force-pushed the rn-checkout-link-handling branch from d8d5ed4 to 0a587e3 Compare October 8, 2026 11:30
@markmur
markmur removed this pull request from stack #943 October 8, 2026 11:35
@markmur
markmur force-pushed the rn-checkout-link-handling branch from 0a587e3 to a27f68b Compare October 8, 2026 11:36
@markmur
markmur added this pull request to stack #947 October 8, 2026 11:36
@markmur
markmur force-pushed the rn-checkout-link-handling branch from a27f68b to edfa1d3 Compare October 8, 2026 11:55
@markmur
markmur force-pushed the rn-checkout-link-handling branch 2 times, most recently from edfa1d3 to e9a3976 Compare October 8, 2026 12:19
@markmur
markmur force-pushed the rn-checkout-link-handling branch from e9a3976 to e5e561a Compare October 8, 2026 17:14
@github-actions

github-actions Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Coverage Report

Status Platform / target Lines Branches Functions Report
⏭️ Web — — — Not run for this change
✅ React Native 95.08% 89.13% 100% Full report
⏭️ Embedded Checkout Protocol (TS) — — — Not run for this change

@markmur
markmur force-pushed the rn-checkout-link-handling branch from e5e561a to d25c80e Compare October 9, 2026 12:14
@markmur
markmur merged commit 8a96fd2 into main Oct 9, 2026
29 checks passed
@markmur
markmur deleted the rn-checkout-link-handling branch October 9, 2026 13:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

#gsd:50662 Rebase Checkout Kit on UCP

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants