Function Checklist

Tip: Click here to access the Notion version of this page. You can then duplicate to your own workspace. There is also a pdf version below.

👇 Download a PDF


I show as much of the app as possible while disconnected
I show a meaningful signature request the first time the user connects
I do not overwhelm the user with wallet choices
I show the connected network prominently
I allow user to switch network with a button in the app — I don’t make them go to the wallet to do it


I display APY prominently
I display APR in real terms (week / month)
I avoid mentioning wrapped tokens unless strictly relevant (most users don’t understand what wrapping means)
I have done some minimal user testing to establish the most important information to my users
Now that I know what my user is scanning for, I display that info clearly
I have removed everything else that the user does not need.
I use visual contrast to highlight the key info (probably APR, TVL or LTV)
I advertise safety measures prominently: audits etc
If I have a large number of vaults, I have separate vault pages, not an expanding card


I show USD equivalent everywhere. Users know the real value of every transaction they make.
I have Zappers to facilitate LP creation and staking
I have a 50% button in the DEX to facilitate providing liquidity
Wrapping and unwrapping tokens is invisible
I have a generous default gas amount to ensure the transaction goes through (except on mainnet!)
I am as clear about fees as possible
I explain fees in real terms, e.g. “the 0.5% deposit fee will take 5 days to earn back”
I use contrast and visual weight to draw attention to primary actions
For each transaction, I combine ‘give permission’ and ‘make transaction’ in one. The user only needs to press the button once and the wallet automatically loads the next action.
There is feedback at every stage of transaction: authorise, confirm, in progress, successful/fail
I use animations, artwork, and friendly language to humanise and reassure the user during this process
I 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.
For slower transactions, like on bridges, the user is given an estimate of the transaction duration and is updated in real-time.


I show ‘Active Positions’ or ‘My Vaults’ in a clear and obvious way
The user can filter positions by size, chain, interest, risk etc
Deposited amounts are in a different color for recognition when scanning
I show earnings in USD as well as / instead of token values
The user can see their weekly/monthly earnings
If manual harvesting is required, the CTA is at the top of the main page and is easy to find
Users can harvest+restake in one go
Complicated or frequent actions can be combined


For withdrawals, there is an emphasis on safety and feedback  (assuring the user that something is happening)
Users have flexibility in how they withdraw their tokens, e.g. LP tokens, individual tokens, or a single token
Provide 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.