Optimize your wallet
Improve the connection experience for all users
In this guide, we'll outline recommendations for crypto wallets to improve the connection experience. These are not required to be compatible with Wallet Onboard, and Plaid or any other wallet connection product can take advantage of these when possible.
Reach out to crypto@plaid.com if your wallet adopts these so that Plaid can enable your wallet for improved experiences, or if you have additional questions.
WalletConnect wallets
If your wallet uses WalletConnect, products like Wallet Onboard can improve the connection experience if your wallet supports a single cross-platform HTTPS URL for initiating WalletConnect sessions. This allows every mobile camera, web browser, and third-party app to correctly open your wallet, instead of opening the wrong wallet or failing to open your wallet at all.
If your wallet only supports the wc:
URI scheme for WalletConnect sessions, this may cause issues with users who have multiple WalletConnect wallets installed. If your wallet uses a custom URI scheme like yourwallet:
, this can also lead to issues with certain mobile cameras and web browsers.
For maximum compatibility, we recommend supporting wc:
URI schemes for legacy applications and a single cross-platform Universal/App Link for optimized experiences.
Support a WalletConnect Universal/App Link
Your wallet should support the same domain name and path as a Universal Link (on iOS) and App Link (on Android) to initiate a WalletConnect session.
For example, your iOS and Android wallets could be configured to initiate WalletConnect sessions at https://app.mywallet.com/wc?uri=<WalletConnect URI>
. As appropriate on each platform, your wallet app would be configured to handle that domain and path as a Universal or App Link, and your wallet's code would parse the received URL correctly to initiate the WalletConnect session.
Review these guides for more detail on how to add support in your app:
Support scanning Universal/App Links in-app
If your wallet has a camera scanning feature, the camera should also support scanning any compatible WalletConnect URLs that your wallet supports via deeplinking. Using our above recommendations, this would include the legacy wc:
URI scheme as well as the cross-platform Universal/App Link format.
Supporting scanning all of these URLs in your wallet ensures that the same QR code can work for users who scan on either their stock mobile camera app or within your wallet app.
Testing your Universal/App Link
You can use the Wallet Onboard demo to test your Universal/App Link scanning behavior.
Open the demo and search for Platypus Testing Wallet:

After selecting that wallet, you'll be asked to enter your WalletConnect-compatible Universal/App Link:

After submitting your URL, you can test the resulting WalletConnect QR code either with your default phone camera app or within your wallet's camera.

The URL you enter will automatically have a /wc
path appended when encoded to a WalletConnect QR code. The QR code in the screenshot above encodes the URL https://wallet.com/wc?uri=....
.
In-app browser wallets
Users and application developers generally prefer that mobile wallets allow users on mobile devices to continue connecting using a protocol like WalletConnect. By allowing users to quickly move back and forth between their wallet and their originating web or mobile app, these protocols allow users to not frustratingly lose track or in-memory state of what is happening in their original app.
If your mobile wallet does require using an in-app browser, your wallet should also support an additional deeplink to direct users to a specific URL within the browser. This allows products like Wallet Onboard to direct users quickly to their originating URL, and app developers can potentially rely on their originating URL to restore some state in the in-wallet browser.
For example, your wallet could be configured to respond to a Universal/App Link at https://app.mywallet.com/browse?url=...
. Your wallet's code would parse the received URL and open its in-app web browser to that URL.
Checklist
In summary: