 All right. Thank you all for coming. We're gonna 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 Belarus own to Brazil, but now I'm based in Berlin, Germany And I'm Carolina, but I prefer people call me Kato 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 but it's number one e-commerce platform for all business So whether you want to start or grow your own business is a place that you can do it and more specifically in Shopify We work that this product called GM shop Exactly so what is GM shop well GM shop is our take on token gated commerce on a mobile Platform so the premise is what if we could unite brands with their most loyal 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 their own right so our constraints were to build proof of ownership in as few steps as possible In the most seamless way like best UX experience as possible And that's what we set out to do. That's what we learned Yeah So we're gonna show a little bit like our journey that we did the first thing that we did and we wanted to do an MVP Just to prove that like this could be done and that we could connect their wallet and we focus on metamask and rainbow and With it like we start using wallet connect I don't know 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 Protocol that we used and yes, 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 was 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 it could it 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 ship to our users But you're gonna notice this also has ledger live besides Meta mask wallet rainbow and clean base wallet Yes, so like a important feedback that we got from the user was that we didn't have hardware wallet support We have only talked about software 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 about practice that we want to encourage good practice So we tried what we tried doing was Introducing ledger live through wallet connects 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 the 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 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 For these wallets we could just let the user connect via the desktop and propagate that connection back to the app However, that creates many challenges, especially You x y because you need to get this experience, right? You're correct creating extra friction, right? So take this Advice so to say with a grain of salt and this is something we haven't implemented yet We were still 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 also from a wallet And like we do want to focus or like make clear that we work 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 Yes, and I don't know something that Made me think about all these mobile and web 3 a Gap that we have is that I have been working on web 3 for almost five years And honestly, it was the first time that I worked on mobile during that time and that shows us that like yes as as Brian said Web 3 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 build is what people will actually use So the only way to reaching this gap is for us to like focus in on mobile and trying to make those two better Because we shape our tools and therefore I shoot our tools shape us and yeah Also like a lot of people don't have easy access to desktop day and the access to mobile is Way more accessible So yeah, I would say in order for us to bring web 3 to an Ethereum to Billions we need to make it accessible and that's pretty much it. Thank you very much and Thank you. Thank you Just to quit per instance per emphasis We're still doing research around the topic. So we got a get coin bounty up for grabs Around air gap to alter vacation 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