Imagine if your bank didn’t offer a charge card. Instead, imagine that the bank’s own app included a bare-bones shopping interface to amazon.com in an attempt to make it convenient for you to spend your money.
This would of course be crazy, and even a bit suspicious. Why is amazon the only option (is the bank getting some kind of kick-back)? Why do I have to use a cut-down compromise UI to shop? Why doesn’t my bank just make it easy for me to shop anywhere by giving me a charge card and getting out of the way? Isn’t that kind of the point?
And yet this is basically what Metamask and most crypto wallets do when they build app features like DEX swaps, fiat onramps, or asset bridging directly into their wallet user interfaces. Even if their motivation is to try to provide convenience, it’s a bad solution. And unlike our bank example, they don’t have a choice; they’re forced into that bad solution because of limitations in how those wallets (and the networks they connect to) fundamentally work.
The Radix Wallet and Radix Network’s unique features enable a better way to provide a great application user experience without making the compromises that other wallets accept when they hard code integrations into the wallet’s own UI. It’s a way that feels familiar from the well-worn UX patterns in Web2, but adding in the powerful features that Web3-style digital assets can bring.
Here’s more about why a better way was needed, and how app integration with the Radix Wallet delivers it.
The Problem With In-Wallet Applications
Putting swaps, onramps, and bridges into a wallet may seem obvious because it’s so common in crypto today. But if you step back, it’s quite strange.
The purpose of a wallet is supposed to be to allow you to control your own digital assets and how you use them with applications. You want to be able to use those digital assets wherever you want, and do whatever you want with them. The wallet should be all about letting you make those choices easily and safely without getting in the way.
In fact we heard this directly from regular people when we started doing user testing around different ways of creating a Web3 wallet. We found that the concept of a “wallet” made most sense, and felt most safe, to people when there was a clear separation between “this is where my stuff is and where I approve things” (the wallet) and “this is where I connect my stuff and do things” (the application).
If we tested out wallet user interfaces with “convenient” application features built-in, or even just lists of apps, users became concerned. Is it safe for me to use this wallet with apps that aren’t built-in? Can I trust this wallet, or is it a marketing tool? Do I really own these assets, or are they somehow stuck in this ecosystem of apps? Ironically, the user experience started to feel like web2 again – limited by gate-keepers, siloed within walled gardens – but with more risk and complexity.
So as soon as an application is “hard coded” into a crypto wallet, users wonder… is my wallet really focused on letting me make my own choices, or is it favoring this particular DEX, onramp, or bridge? Is it giving me the control, or are the wallet’s creators trying to lead me toward a partner for business reasons? Can I trust these unreadable transactions with apps outside the wallet (answer: no, you can’t).
Another problem with the built-in approach is that the wallet has to try to force-fit the user interface for very specific applications within a limited space that is already trying to do a lot. The wallet UI gets bloated, and you can only get a bare-bones version of any given application’s functionality.
So why don’t wallets typically stay “neutral” and focus on users connecting their wallet and assets to whatever application they want? Simple: because the user experience of connecting typical crypto wallets to applications today is pretty bad.
If you’re using a DEX, onramp, or bridge, we can break down user expectations for a good experience into a few “technical” requirements:
- You should be able to jump in and do your transaction with minimum friction.
- You should be able to easily use any of your accounts there.
- The application should remember what accounts you like to use, and keep track of your preferences.
- You should be able to trust that a transaction with the application will have the results you expect.
Unfortunately Metamask and typical crypto wallets make it virtually impossible for dApp webpages to offer that experience. Every time you want to use a dApp to do something, you have to connect your wallet again, choose a single account to use with it, and configure the dApp to do what you want. And ultimately, transactions proposed by dApps just show up as hashes you have to trust and sign.
That’s just how “connect with Metamask” works, because that’s how Ethereum and most L1 networks work.
So what’s the band-aid solution for Metamask and similar wallets? Build a UI for popular dApps into the wallet, so the wallet can do your transactions without a manual connection, so it knows about all of your accounts, so it can remember your preferences, and so the user can trust that a webpage UI isn’t lying to them about the transaction results.
But by doing it this way, you’re left with a bloated and “opinionated” wallet, trying to cram some particular set of application user interfaces into the constrained space of a wallet where they don't belong. And the user experience when you want to use a dApp that’s not built-in still really sucks.
It’s like that theoretical bank app with the amazon.com UI built in rather than just giving you the right solution – a charge card you can easily use anywhere.
The Radix Wallet Way
The better solution is to redefine how the wallet is used with dApps so that every dApp can provide the great user experience that we want.
Let’s come back to that user testing we did with different wallet interfaces. As mentioned, when we tested built-in app features, trust and user understanding actually went down. But something magical happened when we tested wallet user interfaces that were entirely focused on “this is where my stuff is and where I approve things” and made it easy to connect to applications outside the wallet. Suddenly, there was no question of trust – the wallet was a partner, helping and protecting the user. And in fact the assets themselves were perceived as having greater value, because users felt like they truly owned them, rather than feeling like they were somehow linked to specific applications.
That’s the right wallet solution for Web3 – and that’s exactly what the Radix Wallet does. Here’s how:
The first time you connect to a dApp with the Radix Wallet, you will login with a Persona. Once you’ve done that, you can return to the dApp in your browser and you’ll still remain logged in with that Persona - no manual connection process every time needed (unless you choose to log out, or use a new browser).
The Radix Wallet can share multiple accounts with a dApp at once, letting the dApp request access and offer a nice, purposeful UI to do transactions across those accounts, rather than a compromised UI built into the wallet. And the Radix Wallet remembers what accounts you’ve shared with a given dApp (for the Persona you choose to log in there with) so you only need to choose once and the dApp will automatically use those accounts in the future.
Because you logged in with a Persona, rather than identifying yourself by a single account Metamask-style, the dApp can save preferences for you, independent of what accounts you happen to want to use. Basically, the Radix Wallet separates “who you are” from “what you own” so that dApps can offer a more personalized user experience to you.
And finally, Radix’s special form of transactions means that the Radix Wallet can always show you what’s going to happen with your stuff as the result of a transaction – no matter what dApp proposed that transaction to your wallet. You never have to trust a dApp’s website UI because the wallet can read and summarize the transaction itself for you – and the wallet lets you set your own guarantees on results.
Put all together, the Radix Wallet delivers all 4 of the user experience expectations above for any dApp you connect the Radix Wallet to – not just blessed built-in apps – making it frictionless and confidence-inspiring to use your own digital identity and assets anywhere you want. Taking that approach, there’s no reason to build applications into the wallet itself, where they don’t belong. The Radix Wallet puts you in control, stays neutral, and stays focused on giving you what you need wherever you go.
If you’re an application builder, how do you take advantage of this power in your dApps? All you have to do is use the Radix dApp Toolkit to easily integrate Radix Wallet connectivity into your UI, enabling you to directly provide a great experience to your users - not something forced into the constraints of an overloaded wallet UI and subject to the whims of a wallet development partner.