Prerequisites
Before this page: create and initialize a Dynamic client (see Creating a Dynamic client), and register a chain extension so wallet providers are available (see Adding extensions). External wallets only appear once a chain extension (EVM, Solana, etc.) is registered.What you’ll build
A “connect wallet” experience: show the wallet providers available in the user’s browser, connect to the one they pick, and — when you need proof they own it — verify ownership. You’ll build the provider list and the connect button, wired to the SDK’s wallet functions. Two levels of connection:- Connect — attach the wallet so you can read its address and prompt for signatures. Use this when you just need to interact with a wallet.
- Connect and verify — connect, then have the user sign a message proving ownership. Verifying links the wallet to the signed-in user (or signs them in). Use this when the wallet must be a trusted credential.
Listing available providers
getAvailableWalletProvidersData returns the providers detected for the registered chains, each with a key, groupKey, and metadata (display name and icon).
- TypeScript
- React
Providers from different chains that represent the same wallet share a
groupKey. Group your UI by groupKey if you want one row per wallet (for example, one “MetaMask” entry) instead of one row per chain.Connect without verifying
When you only need to read an address or request signatures — not prove ownership — useconnectWithWalletProvider. It returns the connected WalletAccount without asking the user to sign.
- TypeScript
- React
Handling errors
| Error / situation | When | What to do |
|---|---|---|
WalletAlreadyLinkedToAnotherUserError | Verifying a wallet that’s on another account | See Account conflict resolution. |
WalletScreeningBlockedError | Wallet blocked by compliance screening | See Handling blocked wallets. |
UserRejectedError | User dismissed the wallet’s connect/sign prompt | Return the user to the list so they can retry or pick another wallet. |
| Empty provider list | No chain extension registered, or no wallet detected | Confirm a chain extension is registered; prompt the user to install a wallet. |
See also
- Adding extensions — register the chains whose wallets you want to support
- Connected wallets management — list, switch, and remove connected wallets
- Account conflict resolution — when a wallet belongs to another account