Skip to main content
The widget is a hosted swap UI. It never asks the user to connect a second wallet: @ravnexchange/widget-connector lets it use the wallet already connected on your page.
1

Embed the iframe

Set ?origin= to your page’s exact origin.
Keep allow-same-origin: without it the widget can’t talk to your page. It needs no allow-popups or allow-top-navigation. v1 stays stable; a breaking change ships as v2.
2

Wrap your wallet

These call your wallet, which shows the user what they’re signing. Never wire them to a signer with no confirmation step.
3

Connect the bridge

Native BTC deposits need nothing from you: the widget shows the deposit address, a QR code and live status itself. If the bridge never answers, the widget falls back to its own wallet-connect UI. For tighter framing, set your page’s CSP frame-src to https://app.ravn.exchange. To match your brand, see Theming.

Reference

HTMLIFrameElement
required
The embedded iframe.
string
required
https://app.ravn.exchange. Never *.
() => RavnWallet | null
required
Your EVM wallet, or null when none is connected.
() => RavnSolanaWallet | null
Your Solana wallet, or null. signTransaction gets an unsigned base64 versioned transaction and returns it signed.
object
The widget’s theme. Other keys are ignored: an API key here does nothing, so the widget doesn’t carry your fee.
A wallet request while no wallet is connected fails in the widget with WALLET_NOT_CONNECTED or SOLANA_WALLET_NOT_CONNECTED.