📌 Summary
We are integrating Tap to Pay on iPhone using the mobile-payments-sdk-react-native SDK (v2025.6.2).
Our app submission for Apple’s Tap to Pay entitlement was rejected because the internal "Tap to Pay on iPhone" button provided by Square does not comply with Apple’s Human Interface Guidelines (HIG).
📋 Apple’s Requirements
According to Apple’s Tap to Pay on iPhone HIG, the button must:
- Use the SF Symbol:
wave.3.right.circle or wave.3.right.circle.fill
- Display the exact text: “Tap to Pay on iPhone”
⚠️ Current Issue
When using PromptMode.DEFAULT (the only mode available in the React Native SDK), Square displays its own payment prompt with a non-compliant button:
- The button shows "Tap to Pay on iPhone" text ✅
- But uses a generic contactless icon ❌ instead of the required SF Symbol
Apple’s feedback screenshots highlight this incorrect icon usage.
🛠 Problem with React Native SDK
The TypeScript definitions in enums.d.ts confirm that only PromptMode.DEFAULT is exposed:
export declare enum PromptMode {
DEFAULT = 0
}
-
The native iOS SDK supports PromptMode.CUSTOM, which allows building a custom, compliant UI.
-
The React Native SDK does not expose this option, preventing developers from meeting Apple’s HIG.
✅ Requested Solutions
We need one of the following (in order of preference):
- Update Square’s default prompt UI to use the correct SF Symbol (
wave.3.right.circle) for the Tap to Pay button.
- Expose
PromptMode.CUSTOM in the React Native SDK, enabling developers to implement a compliant custom prompt.
- Provide guidance on how to pass through the native iOS custom prompt mode from React Native.
🌍 Environment
- SDK:
mobile-payments-sdk-react-native@2025.6.2
- Platform: iOS (Expo / React Native)
- Devices: iPhone XS and newer
- iOS Version: 16.7+
🚧 Impact
This issue is blocking Tap to Pay entitlement approval from Apple.
Without compliance, we cannot release Tap to Pay in production.
📌 Summary
We are integrating Tap to Pay on iPhone using the
mobile-payments-sdk-react-nativeSDK (v2025.6.2).Our app submission for Apple’s Tap to Pay entitlement was rejected because the internal "Tap to Pay on iPhone" button provided by Square does not comply with Apple’s Human Interface Guidelines (HIG).
📋 Apple’s Requirements
According to Apple’s Tap to Pay on iPhone HIG, the button must:
wave.3.right.circleorwave.3.right.circle.fillWhen using
PromptMode.DEFAULT(the only mode available in the React Native SDK), Square displays its own payment prompt with a non-compliant button:🛠 Problem with React Native SDK
The TypeScript definitions in
enums.d.tsconfirm that onlyPromptMode.DEFAULTis exposed:The native iOS SDK supports PromptMode.CUSTOM, which allows building a custom, compliant UI.
The React Native SDK does not expose this option, preventing developers from meeting Apple’s HIG.
✅ Requested Solutions
We need one of the following (in order of preference):
wave.3.right.circle) for the Tap to Pay button.PromptMode.CUSTOMin the React Native SDK, enabling developers to implement a compliant custom prompt.🌍 Environment
mobile-payments-sdk-react-native@2025.6.2🚧 Impact
This issue is blocking Tap to Pay entitlement approval from Apple.
Without compliance, we cannot release Tap to Pay in production.