Communication, communication, communication. Blockchain introduces new challenges that can either make users feel empowered and educated or defeated and alienated. The difference between empowerment and defeat can be boiled down to two main factors: communicating with users and hiding unnecessary blockchain jargon. We've compiled a list of best practices to help craft great user experiences to leave users feeling educated and empowered.
Do ‒ Have the app pay gas fees for transactions
Not only are gas fees difficult for users to understand, but paying for transactions also requires users to have cryptocurrency such as ETH, which is not realistic for most mainstream users.
Don't ‒ Clutter the UI with gas fee-related warts
In most applications, gas fees should be tucked away, but still accessible. An example of this might be providing gas fee-related information under an "Advanced" tab.
Do ‒ Set user expectations that their transaction could fail
On a blockchain, transactions can be valid and allowed, but still fail. Setting expectations and communicating to users that their desired action is "Being Submitted" rather than "Successful" is an important distinction that can hep avoid frustration in the case that the transaction does fail.
Don't ‒ Assume that every submitted transaction will complete
Assuming every transaction will complete can lead to frustration. No one likes to be told "Success!" just to be told "Failed" moments later. Communicate accurately and don't assume that every transaction is going to be a success.
Do ‒ Make the interface super simple
For applications targeting mainstream users, try to keep new controls, information, and options to a minimum. Oftentimes blockchain applications will include information that, while technical can be provided, is absolutely unnecessary. Unnecessary information in blockchain can alienate users and make them feel uncomfortable.
Don't ‒ Make the user think about how to use the interface
Create intuitive applications that model existing paradigms that users are already accustomed to. Just because you can include the Ethereum address of a user doesn't mean you should! New is good, but consider introducing only one or two new elements ‒ too many can create confusion and frustration.
Do ‒ Provide a clear interface for reporting transaction results
People want to feel informed. Providing a clear interface where users can see the progress of a transaction helps ease the mind and make the user feel comfortable.
Don't ‒ Intersperse transaction results where the user might miss them
Hiding transaction results or placing them in unsuspecting parts of the UI not only feels frustrating, it also introduces a level of ambiguity that is particularly frustrating, given that transactions are immutable. When there's no "Undo" button, the stakes for knowing the progress of a given transaction are much higher ‒ make it easy for users to find the details.
Do ‒ Warn the user if the app context or account has changed
Context changes can be difficult to communicate, especially when so much happens on the client-side with blockchain apps. Make sure that you have alerts and other ways of communicating to users when the context changes. Again, this goes back to keeping the user informed.
Don't ‒ Continue a workflow if the app context or account changes
Navigating blockchain can be difficult in-and-of itself. Communicate context changes and make sure to confirm that users want to continue with a given workflow in the instance of a context or account change.
Blockchain can be confusing for mainstream users. Following best practices to simplify the user experience boils down to effective communication with users and hiding unnecessary blockchain jargon.
Blockchain app development can be confusing, using great tools can make it easier. These best practices (and more!) are built into DappStarter, Decentology's full-stack blockchain application generator.
More best practices for blockchain app development (3 part series):