@rhinestone/deposit-modal package, render the modal, and handle a completed deposit.
This quickstart uses external wallet mode with Reown for wallet connection. If you don’t want to set up Reown, the modal also supports QR code deposits (no wallet connection) and embedded wallets (Privy, Dynamic, Turnkey, etc.).
Prerequisites
- A React 18+ app (Next.js, Vite, or similar)
- A Rhinestone API key
- A Reown project ID (for wallet connection)
Install
@solana/web3.js and @solana/spl-token are required even for EVM-only apps because Solana support is enabled by default. To drop these dependencies, pass enableSolana={false} on the modal.wagmi and @tanstack/react-query providers — you do not need to wrap your app with WagmiProvider or QueryClientProvider.
Render the deposit modal
Import the modal and its styles. Pass the target chain, token, and your Reown project ID.This renders a modal where the user connects their wallet, picks a source chain and token, enters an amount, and confirms the deposit. Bridging to the target chain is handled automatically.
Handle completion
Add the See
onDepositComplete callback to react when tokens arrive on the target chain.onDepositComplete for the full data payload shape, and status tracking for all available callbacks.Next steps
Deposit modal
Integration modes, transfer configuration, and full props reference.
Customization
Theme, branding, and UI configuration.
Status tracking
Lifecycle events, callbacks, and error handling.
Withdraw modal
Withdraw tokens from a Safe to any supported chain.