See Adding extensions for setup.
1. Fetch the catalogue
WalletOption with a name, iconUrl, an ordered connectionOptions array, and an optional installationUrls bag for wallets the user can install on this device. See the reference for the full shape.
includeMobileOptions: true is what makes the catalogue include URI-based connection options (deeplinking and QR code), in-app browser entries, and install links alongside installed providers. Without it, you only get installed wallets.
2. Connect and verify when a wallet is clicked
Pass the wallet’s catalogue key toconnectWalletOption. The SDK chooses the connection path for that wallet, so you do not need to route by connectionOptions type. The returned wallet account is not verified, so pass it to verifyWalletAccount:
3. Render the pairing URI
Use theonConnectionUri handler shown in step 2 to open the URI on mobile or render it as a QR code on desktop. The SDK hands the handler the wallet’s own deeplink with the pairing already included. It chooses a native scheme on mobile, a universal link on desktop, and the other variant as a fallback. For MetaMask SDK pairings, the URI is MetaMask’s launch link. If the wallet does not publish a deeplink, the URI is the bare pairing URI.
Keep the connection promise pending until the user approves in the wallet. connectWalletOption resolves with the connected wallet account after approval.
4. Show install links for install-only wallets
No extension required. When a wallet has noconnectionOptions but has installationUrls, render an install affordance. The exact UI is yours: a button, a modal with platform-specific instructions, a pointer to the user’s app store, or another option:
undefined when the wallet does not publish a matching URL. You can also render several links from installationUrls when you want users to choose a platform.
5. Group installed vs other (optional)
The catalogue’s default'relevance' ordering already buckets installed wallets first. If you want to render them under separate headings, split the list with isWalletExtensionInstalled: