avatarJon Crabb

Free AI web copilot to create summaries, insights and extended knowledge, download it at here

3955

Abstract

iples and heuristics: </b>User Control and Flexibility, Feedback, Nudge Principle, Selective Attention</p><h2 id="ef1e">2. Assess options</h2><figure id="71af"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*jBzA4aOtF8pPi5mYBQPKaA.png"><figcaption>Ribbon Finance is a sophisticated app for trading options, but they present the key info in a clear way. Note the large token icon, the prominent APY, and the different colour for ‘current price’. If you know what you’re looking for, this is a very scannable interface.</figcaption></figure><ul><li>Display APY prominently</li><li>Display APR in real terms (week / month)</li><li>Avoid mentioning wrapped tokens unless strictly relevant — most users don’t understand them</li><li>Do some minimal user testing to establish the most important information in your vault, strategy etc. Once you know what your user is scanning for, display that info clearly, and remove everything else.</li><li>Use visual contrast to highlight the key info (probably APR or TVL)</li><li>Advertise safety measures: audits etc</li><li>If large number of vaults, have vault pages, not an expanding card</li><li>Make tokens large enough to read</li><li>Follow basic accessibility guidelines: good contrast, large text, readable font</li><li>Include contextual help. There should be some basic instructions <i>in the app</i>, not just in a separate docs page. How does a user learn how to use your app the first time they land on it?</li></ul><p id="bef5"><b>Relevant cognitive principles and heuristics: </b>Hick’s Law, Anchoring Bias, Progressive Disclosure, Visual Hierarchy, Law of Proximity</p><h2 id="d546">3. Transactions</h2><figure id="6284"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/0*FasiaXFoQ_0gjRkE.png"><figcaption>Balancer show the USD equivalent and give you a warning about keeping fees for gas if you try to trade too much.</figcaption></figure><ul><li>Show USD equivalent everywhere. Users should know the real value of every transaction they make. <i>I think the discomfort here is a sign of the current gap between the <b>mental</b> model — I am exchanging money — with the <b>conceptual</b> model — I am exchanging tokens in a new web3 economy</i>.</li><li>Use Zappers to facilitate LP creation and staking</li><li>Have a 50% button in the DEX to facilitate providing liquidity</li><li>Make wrapping and unwrapping tokens invisible</li><li>Set a generous default gas amount to ensure the transaction goes through (except on mainnet!)</li><li>Be as clear about fees as possible</li><li>Explain fees in real terms. Ref: Rhino.fi</li><li>Use contrast and visual weight to draw attention to primary actions</li><li>Combine ‘give permission’ and ‘make transaction’ in one. Ref: Beefy</li><li>Give feedback at every stage of transaction: authorise, confirm, in progress, successful</li><li>Use animations, artwork, and friendly language to humanise and reassure the user during this process. Ref: SpookySwap</li><li>Warn users to keep enough native tokens in their wallet to pay for gas fees — this is very important if the user presses the ‘max’ button. Ref: Balancer</li><li>Write <a href="https://readmedium.com/how-to-design-better-web3-error-messages-bd96e12fa582">good error messages</a></li><li>For slower transactions, like on bridges, estimate the transaction duration and update in real-time. Ref: Stargate (simple mode)</li></ul><p id="4be4"><b>Relevant cognitive principles and heuristics: </b>Cognitive Load, Signifiers, Contrast, Temptation Bundling</p><h2 id="9913">4. Accumulate</h2><figure id="9298"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*qaOtnznvQsaOpuBCz6eVvQ.png"><figcaption>Portfolio positions on Beefy, showing monthly and daily yield. Not my wallet!</figcaption></figure><ul><li>Show ‘Active Positions’ or ‘My Vaults’ in a clear and obvious way</li><li>Active positions should, at the very least, be at the top of the page</li

Options

<li>Consider using filters if there are many options. ref. Autofarm + Beefy</li><li>Deposited amounts should be in a different color for recognition when scanning</li><li>Show earnings in USD as well as / instead of token values</li><li>Show weekly/monthly earnings</li><li>If manual harvesting is required, put the CTA at the top of the main page</li><li>Allow users to harvest+restake in one go</li><li>Combine complicated or frequent actions e.g. harvest+stake, relock, etc</li></ul><p id="1c13"><b>Relevant cognitive principles and heuristics:

</b>Visibility of System Status, Fitt’s Law, Hyperbolic Discounting, Investment Loops, Availability, Efficiency for power users</p><h2 id="6546">5. Withdraw</h2><figure id="321e"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*wHCPxwWRrXwYlpv56ghRGg.png"><figcaption>Curve allow you to pick the token and set the percentage you withdraw in</figcaption></figure><ul><li>Follow the same points in transactions, but with an emphasis on safety and feedback (assuring the user that something is happening)</li><li>Give users flexibility in how they withdraw their tokens, e.g. LP tokens, individual tokens, or a single native token, even if you need smart contracts to make the necessary swaps. Ref: Curve (<i>I know mentioning Curve and UX in the same sentence might raise some eyebrows, but the ability to deposit e.g. four tokens to a pool, then withdraw your position in just one is v useful for power users</i>)</li><li>Emphasise an ‘emergency exit’ CTA on anything to do with margin/leverage. Users should be able to nope out of a risky position easily, with little searching.</li></ul><p id="14d8"><b>Relevant cognitive principles and heuristics: </b>Peak-End Rule, Sunk Cost Effect, Signifiers, Contrast, User Freedom</p><p id="d960">I think these are reasonable first principles to follow when designing a dApp. This probably reads a bit terse, but I wanted to keep it short and actionable. Each section could easily be its own article, so as I continue to develop my own knowledge, I will probably do just that and include direct references for every salient point. This is more like a quick index, not a comprehensive guide. Thanks for the read. Hope you found it useful!</p><h1 id="1fcb">👋 About Me</h1><p id="82c2"><i>I am a product designer and UX consultant specialising in web3. I enjoy scaling and leading design teams, and helping web3 companies at all stages of their development.</i></p><p id="bd07"><i>If you’re after some more insights, you might want to check <a href="https://readmedium.com/dex-ux-a-competitive-analysis-of-crypto-exchanges-3818b6c856ba">my competitive analysis on DEXes</a>, my case study for a project I did with <a href="https://bootcamp.uxdesign.cc/designing-a-zero-knowledge-airdrop-for-element-finance-c19e80d76260">Element Finance</a>, or my series on <a href="https://readmedium.com/defi-design-tips-vol-7-a432968ee3d1">DeFi Design Tips</a>.</i></p><p id="fbb7"><a href="https://twitter.com/JonCrabb">https://twitter.com/JonCrabb</a> <a href="https://www.linkedin.com/in/jon-crabb/">https://www.linkedin.com/in/jon-crabb/</a></p><p id="9d2b"><b>Check out our new platform </b>👉<b> <a href="https://thecapital.io/">https://thecapital.io/</a></b></p><p id="7d04"><a href="https://twitter.com/thecapital_io">https://twitter.com/thecapital_io</a></p> <figure id="9b4f"> <div> <div> <img class="ratio" src="http://placehold.it/16x9"> <iframe class="" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fupscri.be%2Ff%2F3c1144%3Fas_embed%3Dtrue&amp;dntp=1&amp;display_name=Upscribe&amp;url=https%3A%2F%2Fupscri.be%2F3c1144&amp;key=d04bfffea46d4aeda930ec88cc64b87c&amp;type=text%2Fhtml&amp;schema=upscri" allowfullscreen="" frameborder="0" height="400" width="800"> </div> </div> </figure></iframe></div></div></figure></article></body>

How to design better DeFi apps, right now

Beeple, ’Cryptic Cube’

Low bullshit, actionable, advice

I used to go to a lot of UX meetups. It was an easy way to get free beer and pizza on a weekday evening. Looking back, I think that was the main thing I got out of them.

Most of the time, you’d be lectured about how ‘UX is really important,’ without ever learning much. Some people on stage would earnestly spit out a few soundbites, we’d murmur appreciatively, then everyone would stroll back to the drinks table again, none the wiser. Someone once answered a question with the phrase ‘accessibility, not accountability.’ He said it in a profound manner. I still have no idea what he meant.

I feel like the same thing is happening in web3. Lots of people talking about how DeFi needs to be easier (or muh UsE CaSeS), not much actionable advice. Look, I know there are some bigger issues around technology that need to be ironed out. And I know we have a long way to go until this stuff works perfectly. But in the meantime, here are some very specific tips to make better dApps today.

note: This is a rough framework, based on a mixture of user research and competitive analysis. There is always more data to collect, so my thoughts about ‘best practice’ will continue to evolve. Consider this a starting point.

Who is our user, and what do they do?

After going to more meetups and chatting to more people internationally, I’m starting to think many of our preconceptions about ‘degens’ and web3 users are actually wrong… But I’ll save that for another day. So rather than present a persona, I’m just going to sketch out the typical emotions on a primary user journey.

🧠 The mindset

Anxiety tinged with greed. Energized enthusiasm. Money is on the line. Excitement. Pioneer spirit. Risk. A spectrum from obsessively cautious to cavalier YOLO.

🎢 User journey

Connect wallet > assess options > authorize transaction > make transaction > wait and pray > WAGMI / Oh fuck > withdraw

😩 Pain points

  1. Connect: so many wallets, so many networks!
  2. Assess: is this a good opportunity, how does it work? Safety?
  3. Transact: LPs, staking, fees, wtf is happening?
  4. Accumulate: how much am I making, in real terms?
  5. Withdraw: triumph if all good, cold sweat if not

OK, what do we do about this?

🛠 A quick breakdown of each

Some pointers on quick and easy fixes that can be implemented and will make a tangible improvement to your app.

Plus, some cognitive principles that might warrant further research and lead to further improvements.

1. Connect

This connection flow at least explains what ‘Connect your wallet’ means
  • Explain what wallets are, use a stepper. Ref: Alchemix
  • Show as much of the app as possible while disconnected
  • Show the connected network prominently
  • Show a meaningful signature request the first time the user connects
  • Allow user to switch network with a button in the app — don’t make them go to MetaMask to do it
  • If multi-chain, consider creating a multi-chain UI, showing all assets regardless of which chain you are connected to. Only make users switch network when they attempt to perform an action.

Relevant cognitive principles and heuristics: User Control and Flexibility, Feedback, Nudge Principle, Selective Attention

2. Assess options

Ribbon Finance is a sophisticated app for trading options, but they present the key info in a clear way. Note the large token icon, the prominent APY, and the different colour for ‘current price’. If you know what you’re looking for, this is a very scannable interface.
  • Display APY prominently
  • Display APR in real terms (week / month)
  • Avoid mentioning wrapped tokens unless strictly relevant — most users don’t understand them
  • Do some minimal user testing to establish the most important information in your vault, strategy etc. Once you know what your user is scanning for, display that info clearly, and remove everything else.
  • Use visual contrast to highlight the key info (probably APR or TVL)
  • Advertise safety measures: audits etc
  • If large number of vaults, have vault pages, not an expanding card
  • Make tokens large enough to read
  • Follow basic accessibility guidelines: good contrast, large text, readable font
  • Include contextual help. There should be some basic instructions in the app, not just in a separate docs page. How does a user learn how to use your app the first time they land on it?

Relevant cognitive principles and heuristics: Hick’s Law, Anchoring Bias, Progressive Disclosure, Visual Hierarchy, Law of Proximity

3. Transactions

Balancer show the USD equivalent and give you a warning about keeping fees for gas if you try to trade too much.
  • Show USD equivalent everywhere. Users should know the real value of every transaction they make. I think the discomfort here is a sign of the current gap between the mental model — I am exchanging money — with the conceptual model — I am exchanging tokens in a new web3 economy.
  • Use Zappers to facilitate LP creation and staking
  • Have a 50% button in the DEX to facilitate providing liquidity
  • Make wrapping and unwrapping tokens invisible
  • Set a generous default gas amount to ensure the transaction goes through (except on mainnet!)
  • Be as clear about fees as possible
  • Explain fees in real terms. Ref: Rhino.fi
  • Use contrast and visual weight to draw attention to primary actions
  • Combine ‘give permission’ and ‘make transaction’ in one. Ref: Beefy
  • Give feedback at every stage of transaction: authorise, confirm, in progress, successful
  • Use animations, artwork, and friendly language to humanise and reassure the user during this process. Ref: SpookySwap
  • Warn users to keep enough native tokens in their wallet to pay for gas fees — this is very important if the user presses the ‘max’ button. Ref: Balancer
  • Write good error messages
  • For slower transactions, like on bridges, estimate the transaction duration and update in real-time. Ref: Stargate (simple mode)

Relevant cognitive principles and heuristics: Cognitive Load, Signifiers, Contrast, Temptation Bundling

4. Accumulate

Portfolio positions on Beefy, showing monthly and daily yield. Not my wallet!
  • Show ‘Active Positions’ or ‘My Vaults’ in a clear and obvious way
  • Active positions should, at the very least, be at the top of the page
  • Consider using filters if there are many options. ref. Autofarm + Beefy
  • Deposited amounts should be in a different color for recognition when scanning
  • Show earnings in USD as well as / instead of token values
  • Show weekly/monthly earnings
  • If manual harvesting is required, put the CTA at the top of the main page
  • Allow users to harvest+restake in one go
  • Combine complicated or frequent actions e.g. harvest+stake, relock, etc

Relevant cognitive principles and heuristics: Visibility of System Status, Fitt’s Law, Hyperbolic Discounting, Investment Loops, Availability, Efficiency for power users

5. Withdraw

Curve allow you to pick the token and set the percentage you withdraw in
  • Follow the same points in transactions, but with an emphasis on safety and feedback (assuring the user that something is happening)
  • Give users flexibility in how they withdraw their tokens, e.g. LP tokens, individual tokens, or a single native token, even if you need smart contracts to make the necessary swaps. Ref: Curve (I know mentioning Curve and UX in the same sentence might raise some eyebrows, but the ability to deposit e.g. four tokens to a pool, then withdraw your position in just one is v useful for power users)
  • Emphasise an ‘emergency exit’ CTA on anything to do with margin/leverage. Users should be able to nope out of a risky position easily, with little searching.

Relevant cognitive principles and heuristics: Peak-End Rule, Sunk Cost Effect, Signifiers, Contrast, User Freedom

I think these are reasonable first principles to follow when designing a dApp. This probably reads a bit terse, but I wanted to keep it short and actionable. Each section could easily be its own article, so as I continue to develop my own knowledge, I will probably do just that and include direct references for every salient point. This is more like a quick index, not a comprehensive guide. Thanks for the read. Hope you found it useful!

👋 About Me

I am a product designer and UX consultant specialising in web3. I enjoy scaling and leading design teams, and helping web3 companies at all stages of their development.

If you’re after some more insights, you might want to check my competitive analysis on DEXes, my case study for a project I did with Element Finance, or my series on DeFi Design Tips.

https://twitter.com/JonCrabb https://www.linkedin.com/in/jon-crabb/

Check out our new platform 👉 https://thecapital.io/

https://twitter.com/thecapital_io

Defi
Web3
Design
UX
Cryptocurrency
Recommended from ReadMedium