Skip to content

[iOS] Tap to Pay button does not comply with Apple HIG requirements - PromptMode.CUSTOM not available in React Native SDK #63

@B-r-1

Description

@B-r-1

📌 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.

Image Image

🛠 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):

  1. Update Square’s default prompt UI to use the correct SF Symbol (wave.3.right.circle) for the Tap to Pay button.
  2. Expose PromptMode.CUSTOM in the React Native SDK, enabling developers to implement a compliant custom prompt.
  3. Provide guidance on how to pass through the native iOS custom prompt mode from React Native.

🌍 Environment

  • SDK: [email protected]
  • 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions