Shopify / Shopify/checkout-sheet-kit-android
Does the Checkout Sheet Kit WebView handle upi:// / intent:// app hand-off? (Razorpay UPI Intent not rendering on Android)
Nobody has claimed this yet.
- Dominant language
- Kotlin
- Stars
- 27
- Forks
- 16
- Avg merge
- 11h 4m
- Merged PRs (30d)
- 3
Description
What area is the issue related to?
Checkout Sheet Kit
What version of the package are you using?
Package: @shopify/checkout-sheet-kit (React Native) v3.8.1, which bundles the native com.shopify:checkout-sheet-kit (Android) v3.5.3. React Native 0.86.0, Expo SDK 57, New Architecture enabled. Device: physical Android phone (Android 13+), Google Pay installed and working. Reproduced on a preview/release build, not a debug/dev client.
Reproducible sample code
No response
Steps to Reproduce
- Present the hosted checkout via Checkout Sheet Kit on a physical Android device with Google Pay installed.
- Reach the payment method selection step.
- Observe: no UPI / Google Pay section is shown.
- Open the identical checkout URL in the device's mobile browser → UPI and Google Pay render and complete successfully.
Expected Behavior
UPI Intent options render inside the WebView and, on selection, launch the installed UPI app, then return to the checkout to complete the order — or, if that isn't supported, clear guidance on the recommended pattern.
Actual Behavior
On Android, when our hosted Shopify checkout is presented inside the Checkout Sheet Kit WebView, the entire UPI payment section (including Google Pay) does not render. On the exact same device and merchant account, our mobile web checkout shows and completes all UPI options normally.
We'd like a definitive answer on whether the Sheet Kit WebView supports the UPI Intent app hand-off (launching Google Pay / PhonePe via upi:// / intent://) and returning to the app, and what host-app configuration, if any, is required.
Context: NPCI UPI Collect deprecation
Per NPCI guidelines, the UPI Collect flow was deprecated for Android apps effective 28 Feb 2026 (mobile web and iOS apps are exempt). Razorpay's docs confirm this. The practical consequence is that on Android apps, UPI must now use the Intent flow, which requires the checkout environment to launch the external UPI app and return afterward.
We suspect the missing UPI section is Razorpay detecting that the WebView environment cannot perform the Intent hand-off and therefore not offering UPI at all — but we'd like the SDK team's confirmation of what the WebView does and doesn't do here.
Environment
@shopify/checkout-sheet-kit (React Native): 3.8.1
Underlying Checkout Sheet Kit (Android): as bundled by the above RN release
React Native: 0.86.0 (Expo SDK 57), New Architecture enabled
Device: physical Android phone (Android 13+), Google Pay installed and working
Store: custom primary domain on HTTPS (not *.myshopify.com)
Payment gateway: Razorpay (via Shopify-hosted checkout, not Razorpay Custom Checkout)
Questions:
- Scheme hand-off: Does the Checkout Sheet Kit WebView intercept and launch non-http(s) URLs such as upi://… and intent://… so that external UPI apps open? If yes, since which version?
- Return flow: After the external UPI app completes, how does the SDK expect the buyer to be returned to the sheet — via App Links (assetlinks.json) on the storefront domain, or does the SDK handle the redirect internally?
- Required host config: Is any host-app configuration required for UPI Intent to work — e.g. assetlinks.json population, intent filters, a custom WebViewClient, or SDK options?
- Android 11+ package visibility: Does the host app need entries in AndroidManifest.xml (e.g. for upi:// intents or specific UPI app packages) for the WebView to resolve and launch UPI apps under Android's package-visibility restrictions?
- Expected behavior post-NPCI: Given the Collect deprecation, is UPI Intent expected to render at all inside the Sheet Kit WebView today? If not, is routing the checkout to an external browser (Custom Tab) the recommended pattern for UPI on Android — and are there plans to support in-WebView UPI Intent?
Screenshots/Videos/Log output
No response
Storefront domain
Primary storefront domain (where checkout runs): goodnewss.in (custom domain, HTTPS)
Shopify Storefront API domain: bwmhkj-k3.myshopify.com
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing the Checkout Sheet Kit Android WebView's handling of upi:// and intent:// URLs, then test the hosted checkout on a physical Android 13+ device using the reported React Native and SDK versions. Done means documenting whether UPI Intent is supported, how the return flow works, and which host-app configuration is required or recommended.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, kotlin, react-native
- Domain
- mobile, payments
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100