Better UX design for setApprovalForAll

Considering the extreme value often stored in NFTs, and the significance of giving approval to an external contract - I think it’s imperative that MetaMask does a better job with user-experience to help minimise users giving authority over their assets.

As a team member of a reasonably large project, we are constantly working on education to provide guidance with regards to approvals - however the difference in UX for sending a 0.01E transfer compared with giving approval for NFTs that can be an open ended value is quite frankly a massive oversight and something should be done about it.

Just today I’ve seen one scam mint result in users losing over 80eth worth of assets through this scam - some of these assets are not only of significant monetary value, but also emotional value as they are a users’ connection to their community and friends they have formed through web3. This is incredibly important for wider adoption of this space.

We need to do better.

Currently the difference is highlighted as so:

I understand there’s a reasonable balance to be struck between design and user responsibility.

However, a transfer of 10ETH is much clearer than a setApprovalForAll with a value of 0ETH, that is in essence handing over the same value (dependent on the tokens they’re giving approval for).

There are endless simple options that can be achieved with minimal impact on the current UI (see attached).

However, I think a more prudent approach would be having the CONFIRM button act differently for these interactions:

If transaction = setApprovalForAll, button is visually different to normal blue CONFIRM
On first click, pops up message noting that it’s a setApprovalForAll function.
Button is toggled to normal blue CONFIRM
Second click will send transaction like normal.

This is similar to: "Double Confirm" Dialog for Dangerous Functions to Avoid NFT Scams

Hopefully we can get some traction on this.

Thank you Kennedy, this is a must, especially if MetaMask want to onboard the masses and protect their customers.


This is a much needed feature! Great proposal!


This is very essential feature I hope they do it ASAP, thanks a lot Kennedy


Great ideas, I also think there is a lot of confusion for some people about the “Set approval for all” being limited to the contract that is creating the prompt and not for every nft. Also, on a side note when using metamask to “revoke” it also creates a “set approval for all” I know that you are “setting” the approval to 0 sum but this could be stated clearer imo with “remove approval”


Thank you very much for your suggestion, I think if it gets a majority of votes, if it is technically possible, the metamask team will consider it, thanks again for the pertinent suggestion


Awesome proposal my friend, and will save so much heartache if it goes through, well done!!


I think this is a must have. Please do this!


I absolutely agree with the proposals put forward! Something has to be done to protect the community from this savagery
Many lose their entire portfolio (often many $1000s) only to be told “sorry, can’t be recovered or refund you as it’s decentralised”.
We have to do better and try protect the true supporters and believers in the web3 and crypto spaces.

Urgent action is required and the above should be a simple thing to put in place


One more suggestion to put right the wrong done to the victims would be to use the gas fees paid for each transaction and put some of it to good use.
I strongly recommend thought be given to setting up a “Web3 Community Reimbursement / Recovery Fund”, paid for by a portion of the gas fee paid for each transaction.
This pool of funds is to be used to compensate and where possible reinstate all assets for those who get scammed, whilst the web3 ecosystem security is improved.
We have the Block Chain to unequivocally track and verify theft (mostly after the fact), so all transactions and nft values can be fully verified and holders refunded.

This I commit to the house for your urgent consideration


Good call. The space needs this.


@spinnekop ,

Confirming you understand that MetaMask does not get a portion of the gas fee.

@KennedyBaird ,

Great post! The team is always working on security for users, I actually believe this is something that is actively being worked on. Even including something similar to this: Detect untrusted webside


Where can we follow that it’s actively being worked on?

The “detect untrusted website” activities that are being worked on are slightly separate to this idea.

The fixes that I am suggested are increasing users to have their own self-awareness of the transactions they are signing, not creating another system that is dependent on something centralised recognising that a website is malicious.

Free mints often have hundreds of transactions conducted before the website is recognised as “malicious”, so what I am suggested is a better solution as far as I understand from reading that.


@KBee - thanks for the update, I do not wish to detract from @KennedyBaird 's post/proposal. Point is something has to be done and the above is definitely worthwhile


Hi @KennedyBaird ,

I know once something is released it’s visible on GitHub as MetaMask is opensource. For this specific type of feature you’re bringing up, I know there is a major redesign to the UI coming within this year however I don’t know all the details of what’s in it. What I can/will do is pass this entire post along to an internal team. Once I hear something I’ll post an update.

What you’ve shared is very well thought out and explained. I have seen similar ideas being discussed (internally and within the community) but anything to add to the table always helps. Again, appreciate you sharing this and taking the time to provide detail at lengths.

@spinnekop - all good! Just wanted to make sure this was at least communicated.


Sure, I understand it’s public on github.

I’ve reached out through there before and had no luck, so that’s why I’m jumping in here.


Sounds good and makes sense. Will pass along and update as I hear.

1 Like

This is a great request, thank you for submitting it!

Sharing the same answer from here:
We’re currently exploring a couple of possibilities related to this and running tests to understand what is most helpful to our users.
It will still take some time before it’s ready and gets released to all users, but just giving you an update that this is in our roadmap.



Fantastic news


beautiful recommendation is good that u r and we feel covered