For the past 5 years, crypto wallets have gone a long way.
And what I mean by that is a leap from literally writing down private keys on a piece of paper to not even being aware that you’re using a crypto wallet.
That’s a long way, but the question remains. Why are we still not onboarding the mass consumer into this rabbithole of a technology? I think it’s because we haven’t really thought of the problem from enough angles.
Let me introduce you to your user, Bob:
You want him to go to your decentralized Instagram, sign up (but he has to pay for storage), and write his first post.
How do you bridge him into his first moment of discovery, in our case writing his ‘Hello World’ post?
Some people think of solving crypto’s UX problem this way:
Identify points of friction for Bob
Solve them!
And to this approach we owe various tools that make it easier for the user to access crypto. We got ERC-4337, social sign-ins through MPC wallets, passkeys, chain aggregators, and what have we here… Now users can even use our onchain applications without knowing a thing about wallets.
Just one problem: Bob is still not buying our decentralized Instagram!
Now we troubleshoot:
So we can add a few steps that we’re missing:
Identify the minimum viable knowledge that Bob needs to understand the value in using our app
Communicate value
Identify points of friction for Bob
Solve them!
But are there other steps that we need to solve in order to get Bob posting his first onchain selfie? That is the billion-user question.
For that we need to plot the User Onboarding Map.
Crypto UX is a complex problem. Sometimes, it’s about creating the shortest path for users to achieve their goal. Sometimes, it’s about gradually and pleasantly walking them from something they already understand into learning something they didn’t.
To have the lay of the land, we must look at what the user goes through before they become native users of an application. I hypothesize that the onboarding map looks something like this:
For those who can’t read images:
Knowing: having all the information needed to understand what the application does
Accessing: successfully accessing the page and its components
Searching: having a smooth path of interaction to achieve their goal
Exploring: having a good environment to create interactions in the application
Breaking it down:
Knowledge is an internal requirement for the user. It is easy to miss for the developers and anyone who has been here in the space for long.
And it’s tougher to nail compared to other UX components like visual hierarchy, accessibility, interaction design because there’s no single answer to it… nevertheless we’ll try.
Some common blockers to this step:
Not knowing what the product is for
Not knowing how the technology works
Not understanding the jargons
Lack of visual cues
Not enough applications to anchor their comparison with
Haven’t learned any interaction patterns with dApps yet
Potential solutions to the blockers:
Using a copy that explains and demonstrates the benefits instead of focusing purely on the features
Providing a link that leads to a basic guide or FAQ for someone completely new to the technology
Using tooltips- a microcopy that appears when a user hovers an element to give context
Providing better heuristics by showing your app’s frontend even before a wallet has been connected
Using existing mental models and habits and using easy language to explain the application.
Your user needs some things before they can interact with your product.
Things like a wallet, an interface for it, gas tokens, and a way to check what happened to their transactions.
Now, the job is to make it easy for your user to get all of these.
There are readily available tools and SDKs that makes accessibility easier for crypto applications, and I’ll tell you when and how to use them in future posts.
Some common blockers to this step:
Needing to download a browser wallet before they can access the app
Manually storing private keys and seedphrases
Needing to search the ChainId in another tab before adding it to Metamask
Needing the right gas token on the right chain before making a transaction
Mobile accessibility
Bridging
Going through Etherscan to find out what happened with the transaction
…there’s a long list
Potential solutions to the blockers:
Account abstraction
MPC Wallets
Wallet sign-in SDKs
Adding a ‘Switch to Chain’ button where it is needed
Paymasters
Etherscan APIs
Chain abstraction / Chain aggregation
Interoperability protocols
Bob has landed the app, now you have to enable them to find what they need quickly and easily.
Interaction design comes at this stage.
Some designers say the standard is three clicks. In three clicks, Bob must be able to publish his first post in our decentralized Instagram.
But if we do that, there’s a high chance of overwhelming him.
So instead of optimizing the clicks, we should optimize the user’s cognition of his flow. This means clear navigation and copies with strong information scent. This means reducing the perception of time when a step will need your user to wait for seconds or fill out a long form.
Idk about you, but I’m better off with five clicks that I understand than three clicks that got me stuck for forever in the second screen.
Common blockers to this step:
Requiring a step that will have your user navigate away from the page
Confusion with navigation options (like, what is ‘zap’?)
Not giving feedback after a user has done something on the page
Or not giving it after user has signed a message or a transaction
For sequential task flows, not showing where the user is in the process
Potential solutions:
Embedded wallets
Good content architecture and visual hierarchy
Having a clear wayfinding for each page
Allowing only one call-to-action per page through progressive disclosure
Exploring is about ensuring Bob has the optimal environment to interact smoothly with the application. Speed, security, and privacy are a huge part of the user experience.
So at this level, you need a combination of UI and tech improvements. There’s no other way.
Common blockers to this step:
Slow transaction times or network congestion
Security concerns related to wallet integrations, data storage, or interaction with smart contracts
Privacy issues, such as exposing sensitive data unnecessarily
Lack of smooth transitions between on-chain and off-chain elements
Lack of feedback to actions
Potential solutions:
Deploying on a rollup that can deliver high transaction speed without sacrificing decentralization (eg. MegaETH)
Using mulitisigs and key management systems
Protecting user privacy with zk-SNARKs or similar cryptographic methods
Reducing latency in user actions by leveraging optimizations in both on-chain and off-chain components (e.g., using decentralized oracles for smoother real-time interactions)
In the next posts, I’ll tackle each of these levels and the actionable methods, tools, and strategies you can use to solve them!