Skip to main content
By default, sdk.init() makes the wallet picker list every CIP-103 wallet the SDK can discover: browser wallets that announce themselves, plus the SDK’s built-in list of remote wallets. Registering adapters lets you add more wallets (such as WalletConnect or a custom remote wallet) or restrict the list. The adapters you register in init() determine what the SDK can discover and what the user sees in the wallet picker opened by connect().
  • If an adapter is registered (and passes detect()), it can appear as an entry in the picker.
  • Session restore only works for adapters that are registered.

Use the built-in remote wallets

Registering with no options uses the SDK’s default remote wallet list (from gateways.json) plus any wallets that announce via canton:announceProvider.
By default, init() also loads the SDK’s bundled verified wallet list from wallets.json (see Verified wallets).

Verified wallets

The SDK ships curated wallet lists for the picker. There are two bundled files, serving different wallet types and roles:

Verified wallet list (wallets.json)

When a wallet from this list is not already detected (matched by providerId), the picker shows it under Suggested Wallets with links to install or set it up. Verified entries are not registered as adapters. On init(), when enableSuggestedWallets is true (the default), the bundled wallets.json is passed to the picker UI. Example entry (browser extension):
Adding a wallet: Wallet authors can open a PR that adds an entry to wallets.json. The providerId must match how the wallet appears once available — for extensions, this is typically what the wallet announces via canton:announceProvider (browser:ext:<id>). Disabling the verified list: dApps that do not want the bundled list can opt out:

Default remote wallets (gateways.json)

Remote wallets in gateways.json are registered automatically as RemoteAdapter instances (see above). Use this file for verified remote wallets that should appear as connectable picker entries out of the box, rather than as install/setup prompts.

Add adapters

Use additionalAdapters to add wallets while keeping the default remote wallets.

Add WalletConnect

Treat your WalletConnect projectId as configuration, not a secret to hardcode. Inject it through an environment variable as shown above.

Add a custom remote wallet

Add a custom extension adapter

Replace the default remote wallets

To offer only specific remote wallets (and not the SDK defaults), pass defaultAdapters.

Register no remote wallets

Pass an empty list to explicitly choose “none”. This is useful if your dApp only supports announced extension wallets, or only adapters you add yourself.

Restrict to approved wallets

Combining defaultAdapters with a fixed list lets you constrain the picker to a set of remote wallets you have vetted, which is a common production requirement.

Next steps