What does it look like to completely re-imagine on-chain experiences for creators? this is a question we ask ourselves often at primitives. our team has long been excited about the possibilities of blockchain technologies to unlock new value for creators. but, like many other crypto applications, we grappled with how to have our user experience match the speed and accessibility of web2-native products.
at primitives, we’re building an online space for anyone to unleash their creativity. part of our mission involves creating seamless, accessible blockchain tools to allow creators to generate value from their work, including crypto wallets and nfts.
if you’re not an engineer or deep in the blockchain space, you might not know that crypto applications have traditionally been slower to use as a consumer. why is this? in the background, data is continually being put “on-chain,” a process that involves communicating with a blockchain and can often take seconds, if not minutes of time.
the issue with this is that the rest of the internet generally works fast. and so, users expect the same kinds of instantaneous experiences, even when using blockchain products. in response to this issue, we recently completely transformed our nft claim-register flow, which now embodies a novel solution that is true to web3’s goals of decentralization but unlocks speed and reliability we haven’t seen anywhere else. we’re excited to share more here.
when users onboard onto primitives, we give them solana-based nfts that they can use to gain access to various features on our platform. for many users, this claim-register flow is the first (in-app) impression they have of what we’re building. we care a lot about making good first impressions, but our initial claim register flow was just as frustrating as any other platform. it was slow, complicated, and often painful.
a user would have to register, confirm their email, wait on a solana wallet to be created for them (~20 seconds), then wait for the nft they just claimed to transfer into their wallet (~60 seconds). if they were lucky, both the wallet creation and nft transfer transactions would be successful on the first try and they would be onboarded in under three minutes! however, even these lucky users often would not see the recently claimed nft in their wallet until solana confirmed the transactions and the user refreshed the page. it’s not hard to imagine how long this experience would take if any of these transactions failed… (here’s a hint, it’s eight sideways.)
so, we went on a journey to transform our claim-register flow into what web3 could one day be: fast like web2, yet true to web3’s goals of internet decentralization
how did we solve this? after users confirm their email, they immediately see their freshly claimed nfts in their wallets every single time. what’s the catch? instead of just showing users what has happened on the blockchain, we show them what has happened and what we promise is going to happen. in other words, we display both confirmed and preemptive blockchain actions. confirmed transactions are ones that blockchain navigators like solana explorer will display, while preemptive blockchain actions are operations (like creating a wallet or transferring an nft) that we optimistically perform in the ui while the blockchain transaction is submitted, processed, and retried in the background.
relying on preemptive blockchain action has its obvious advantages, including speed reminiscent of web2 platforms. an unintended consequence, however, is that it preserves in-app functionality even if the solana blockchain and our wallet creation network, web3auth, go down. users are still able to instantly access and use most in-app features regardless of if they're registering or logging back in. if these platforms go down, wallet creation and nft transfer transactions will simply build up in our blockchain action queues and be fulfilled when the networks are back up.
with this great power comes great responsibility. right now, primitives uses this preemptive blockchain strategy for low-stakes applications like wallet creation, nft transfers, and minting applications. we have plans to rely on this method even more. but, we need to be careful about promising transactions because when we break promises, we lose trust. we’re focused on building our user support and continuing to improve our system so no transactions go unconfirmed.
our team is incredibly proud of the speed and reliability of primitives’ claim-register flow. we even think it might be unprecedented, but if you’ve also leveraged a similar approach, we’d love to hear from you! it’s also our hope this might inspire others to adopt a similar engineering approach to solve for faster ux while preserving on-chain activity. we’re passionate about making the internet a better place and excited to have you on our journey.
this post was written by johnny woodtke, software engineer at primitives. johnny is a graduate of the georgia institute of technology and formerly worked at peloton. in his free time he enjoys hiking, rowing in central park, and lifting weights.
primitives is building an online space for anyone to unleash their creativity. we empower anyone to discover new creators, mint and share work, build collections, and join communities. keep up with us on twitter, instagram, tiktok, and at primitives.xyz.