Tip: use these in conjunction with Jakob Nielsen’s 10 Usability Heuristics
- Feedback follows action
- Security and trust are baked in
- The most important info is obvious
- Terminology is understandable
- Actions are as short as possible
- Network connections are visible and flexible
- Control from the app, not the wallet
It is obvious when something has happened, or is happening. The system informs the user clearly about what is going on via messaging, notifications, and other alerts. Waiting times are communicated clearly.
Security is prioritised as a feature, and this feature is emphasised for the user. Users care deeply about anything financial.
For complex systems, show only the most relevant data, and make the most important bit the most obvious. Determine what is most important, and prioritise its display. Too much information is overwhelming and users typically anchor on one piece of information when making decisions.
Web3 has a unique vocabulary. It is not always possible to use exactly the same terms the user would find in the real world. Therefore, metaphors should be used carefully. The system should strive to make any new terms as clear as possible. Follow conventions as they appear, and be consistent.
Speed up the user’s interactions by accelerating and grouping sub actions. This may be done on the smart contract level, as well as the UI. The user should not have to move from one part of the system to another – or leave the system entirely – to complete a common action. Examples of accelerators include zappers to provide liquidity, and combining the “approve” with the “deposit” action.
Inform the user about what network they are connected to, and provide clear shortcuts to change network. The main functions of the app should still be visible while disconnected or connected to a non-supported network.
The UI should tell the user everything they need to know and give them control over everything they need to do. The user should not have to open their wallet to manually change network or view their assets. System status should be communicated via feedback or visible in the UI. The user should not have to check a block explorer as their first step after performing actions.