Skip to main content
The React Native SDK wraps the MoonPay Developer Platform in a <MoonPayProvider> and a useMoonPay() hook. The SDK ships with TypeScript types for autocomplete and inference. The SDK is tested against:
  • React Native 0.73+
  • React >=18
  • react-native-webview 13.0+
  • iOS 14+ and Android API 26+

Install

Install the SDK package and its peer dependency:
Follow the react-native-webview install guide to link the native module. On iOS, run pod install from your ios/ directory.

Conventions

Provider + hook

Mount <MoonPayProvider> near the top of your app tree and call useMoonPay() from any descendant component to get the client. Pass the sessionToken at mount, or supply it later with initialize(). The SDK presents frames in two ways:
  • Client methods such as client.connect() or client.setupWidget() open a full-screen modal managed by the provider. Hidden utility frames (connection check, headless buy, reset) render at zero size.
  • Inline components such as <MoonPayConnect> or <MoonPayWidget> render the frame wherever you place them in your layout.
App.tsx

Result<T, E>

Most SDK functions return a Result<T, E> instead of throwing. Use this pattern to branch on success vs failure:

Function reference

These pages document the provider, hook, and individual SDK functions:

Mount the provider

Access the client with useMoonPay()

Check the customer's connection

Connect a customer

Reset the customer's connection

List payment methods

Get a quote

Auth (email/OTP)

Set up Apple Pay

Set up Google Pay

Set up the widget

Set up the buy frame

Set up the buy button

Add a card

Set up the Challenge frame

Get a transaction

List transactions

Delete a payment method

Inline components

Every frame also has a declarative component you can render directly in your JSX tree. Components are a good fit when you want a frame embedded in a custom screen. The three deprecated methods below have direct component replacements.

Inline components overview

Auth (email/OTP) — inline