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]