DaimoFrameRN renders the hosted Daimo deposit, withdraw, or transfer flow
inside a react-native-webview, covering chain selection, wallet connection,
signing, and status updates.
If you’re not using React Native, see Native WebView
to embed the same flow with a raw iOS
WKWebView, Android WebView, or a
plain react-native-webview.Install
react-native-webview is a peer dependency. @daimo/sdk/native imports nothing
from the web build, so no react-dom or wallet libraries are pulled in.
Modal layout
Create a session on your server (see Quickstart), pass itssessionId and clientSecret to the client, then render DaimoFrameRN:
modal layout (default) presents the flow in a dimmed bottom sheet and
sizes itself to the content; you never manage its height. It has a close button;
tapping the dimmed backdrop does not dismiss it (too easy to hit by
accident), and Android hardware back does.
Don’t close the sheet from
onPaymentCompleted. The flow shows a completed
screen (a checkmark), which also appears when you open an already-finished
session, so let the user dismiss it via the close button (onClose).Embed layout
Uselayout="embed" to render the flow inline inside your own screen or sheet.
It fills its container’s width and follows the content height; you own the
surrounding chrome, dismissal, and keyboard avoidance. Wrap it in a
KeyboardAvoidingView if it sits near the bottom of the screen. The modal
layout handles the keyboard for you.
Deeplink schemes
Some payment methods run outside the WebView: Apple Pay and bank redirects open the system browser, and wallet deposits open a wallet app.DaimoFrameRN
hands these off with Linking.openURL. HTTPS and universal links work with no
setup. To open wallet apps that use custom URL schemes, and to let
Linking.canOpenURL detect them, declare those schemes.
This is what keeps Apple Pay working with no host-app certification: it
runs in the system browser under Daimo’s merchant identity, never your app’s.
- Expo
- Bare (Info.plist)
Add the schemes to On Android 11+, apps you deeplink to must be listed in a
app.json (or app.config.js). Expo writes them into
the native project on prebuild:<queries>
element; add it with
expo-build-properties
or a small config plugin.https) links, whether to
wallets or to daimo.com itself, need no entry.
For an in-app Safari sheet instead of the full system browser, pass
expo-web-browser’s openBrowserAsync as onOpenExternalUrl.
Props
Tracking status
onPaymentStarted and onPaymentCompleted are notifications only. To get full
session details (tx hash, chain, amounts), poll
GET /v1/sessions/{sessionId} after a payment
event.