# The Challenges and Learnings of Implementing Wallet Connection on Mobile

- Channel: [Devcon](https://streameth.org/devcon)
- Date: 2023-10-09
- Duration: 08:51
- Topics: blockchain, smart contracts, distributed ledger, ethereum, Science & Technology
- Watch: https://streameth.org/watch/yt-d4C-GGgSiqg
- YouTube: https://www.youtube.com/watch?v=d4C-GGgSiqg

## Description

Visit the https://archive.devcon.org/ to gain access to the entire library of Devcon talks with the ease of filtering, playlists, personalized suggestions, decentralized access on IPFS and more.
https://archive.devcon.org/archive/watch/6/the-challenges-and-learnings-of-implementing-wallet-connection-on-mobile/index

Web3 is mostly a desktop experience, but we spend most of our time on mobile devices. How can we bridge the gap between Dapps and Mobile, especially in such a crucial step as the wallet connection? In this talk, we want to share the failures and learnings we had while developing GM Shop, the first tokengated experience built for mobile that partnered with the biggest NFT brands such as Doodles, Invisible Friends, and Cool Cats.

Speaker(s): Carolina Pinzon, Bryan Moreno
Skill level: Intermediate
Track: Developer Infrastructure
Keywords: Mobile,wallet connect

Follow us: https://twitter.com/efdevcon, https://twitter.com/ethereum
Learn more about devcon: https://www.devcon.org/
Learn more about ethereum: https://ethereum.org/ 

Devcon is the Ethereum conference for developers, researchers, thinkers, and makers. 
Devcon 6 was held in Bogotá, Colombia on Oct 11 - 14, 2022.
Devcon is organized and presented by the Ethereum Foundation, with the support of our sponsors. To find out more, please visit https://ethereum.foundation/

## Transcript

foreign [Music] thank you all for coming we're going to be talking today about the challenges and learnings of implementing wallet connection on mobile apps so first off my name is Brian Moreno and I'm a full stack developer at Shopify I come from belaruson to Brazil but now I'm based in Berlin Germany and I'm Carolina but I prefer people call Mikado actually and I'm from here from Bogota I currently live in Canada in Vancouver and yeah I've been a front-end developer at Shopify for the past two years and Shopify I don't know if you know about his number one e-commerce platform for all business so whether you want to start your business is a place that you can do it and more specifically in Shopify we worked at this a product called GM shop exactly so what is GM shop well GM shop is our take on token gated Commerce on a mobile mobile platform so the premise is what if we could unite brands with their most Lego fans and granting those fans access to exclusive products like gated by the nfts they already own and to build such a product the first thing we need to do is to let the users connect their wallets and to know which nfts they are they own right so our constraints were to build proof of ownership in as few steps as possible in the most seamless way like the best ux experience as possible and that's what we set out to do that's what we learned yes yeah so we're going to share a little bit like our journey that we did the first thing that we did and we wanted to do an MB and that like this could be done and that we could connect our wallet and we focus on metamask and rainbow and with it like we started using wallet connect and now if you have heard of it but they react that which is like out of the box a application that you can install and use and yes this works for the MVP but we started seeing that it was like really flaky we didn't have the robustness that we needed and we started like okay let's try different things the next thing that we did was for metamask specifically we looked into deep linking a connection and we actually found like really good results especially on iOS this was what like the the protocol that we used and this also it also wait for coinbase wallet although this did improve our results well it was still not enough it was still not done so we were not seeing the success rate we wanted we wanted a more robust solution and we still had like failures for no apparent reasons because we needed to replace the connection with another one sometimes when the user didn't have the right nft and that was failing sometimes so our hypothesis is because like the react library of wallet connect was kind of closed like out of the box plus closed so we assumed that they set a persistent connection and that was getting in our way so what we did to fix that was actually I'm gonna get to that in a second but just to remember we needed proof of ownership and as few steps as possible right so we could just get the connection a signature and drop the session because the back end could do the rest of the checks like whether the user had to write an ft or not and that sort of thing the client could could just drop the connection so what we did to fix that well we rewrote our wallet connector code this is a screenshot of the pr that that done that and yeah we got rid of this out of the box library and we use wallet connects core package to rebuild our wallet connection code and focus on this one-time connection that we could just easily replace or drop if we didn't need it and well the results were pretty good our user feedback improved the internal feedback improved and the numbers were significantly better you can see a screenshot of it this was the version we shipped to our users but you're going to notice this also has Ledger live besides metamask well rainbow and coinbase wallet like uh important feedback that we got from the user was that we didn't have Hardware wallet support we have only talked about server wallets and it was really important because we have we we don't want our users to we want our users to connect like wallets that have a valuable tokens but we don't want them to to move their tokens to a software wallet to connect to our application and it's also a bad practice like we want to encourage good practice so we try what we tried doing was introducing Ledger live through wallet connect and yes they sort of did the trick but it was really flaky to be honest like and when it failed we didn't really know what was happening like our only support that we could give it was okay just restart everything and try it again so yeah we didn't nail this part and even though we did Implement support for Ledger wallets well guess what it was still not enough I mean for some users like some users ask for support for even more Hardware wallets because they had extra security concerns especially about Ledger and so a portion of our users asked for this and it's kind of hard to solve because because not all of those Hardware wallets have Mobile support so what could we do in this case well wallet connect on the desktop is actually built as a first class citizen it it works so um for these wallets we could just let the user connect via the desktop and propagate that connection back to the app um however that creates many challenges especially ux wise because you need to get this experience right you're correct creating extra friction right so take this um advice so to say with a grain of salt and this is something we haven't implemented yet we were still in in progress of doing this yeah so there's still a long way to go with the wallet connection so this is like a little bit of the summary of what we have right now working like the leader also the different implementations that we have as you can see like it changes from platform and also from a wallet and like we do want to focus or like make clear that we worked on this for one year and we understand that we like our requirements were to have a really robust wallet connection but that's not the case for everyone like maybe you just need an MVP that you can connect like a wallet metamask and that's it so it just depends on like the team that you have the time that you have and what you need for your application so yeah the solutions can change um yes and I don't know something that um made me think about all these mobile and web3 GAP that we have is that I have been working on web3 for almost five years and honestly this was the first time that I worked on mobile during that time and that shows us that like yes as Brian said web3 is a desktop first basically but in order for us to reach the Gap we need to make it mobile first especially like us as developers we do have the power I guess to shape the industry because what we built is what people will actually use so the only way to bridge in this Gap is for us to like focus in on mobile and trying to make those two batters because we shape our tools and therefore our tools shape us and yeah also like a lot of people don't have easy access to desktop they and the access to mobile is way more accessible so yeah I would say in order for us to bring web3 to an ethereum to billions we need to make it accessible people and that's pretty much it thank you very much and thank you thank you um just a quick parenthesis parentheses um we're still doing research around the topic so we gotta get coin Bounty up for grabs um around air gap 12 verification around assets so please check it out and if you're interested in helping us out like it would be great yeah thank you so much [Applause]
