Sign up. Connect a wallet. No wallet?-- Then, go to the app store and find one. Now install it. Write down a 24-word seed phrase. Type out the seed phrase to verify. Secure your wallet with a password. Connect the wallet to sign up. Now sign this blob of text to verify your wallet ownership.
Sounds painful doesn’t it?
Unfortunately, this is what onboarding a decentralized application (dApp) in crypto looks like today. It might seem normal or par the course for the more experienced crypto native, but for the everyday person, it’s an overwhelming rabbit hole filled with technical jargon.
For dApps to break into the mainstream, they not only have to solve real customer pain points but also have onboarding processes that are as seamless as web2 applications. Blockchain technology was invented to solve the problems of everyday people. The user experience of tomorrow should reflect that.
In order for a dApp to truly achieve mainstream adoption, it needs to use a modern crypto consumer stack – one that abstracts away as many crypto concepts as possible and makes the blockchain invisible.
The legacy crypto onboarding experience
The legacy crypto stack’s onboarding experience looks something like this:
- App authentication requires the user to have a self-custodial wallet that exists as a Chrome extension or mobile app
- Wallet is backed up with a seed phrase that needs to be stored securely offline by the owner
- Wallet is funded by sending crypto from a centralized exchange like Coinbase, which have their own, separate set of authentication credentials
- Users need to understand the concept of blockchain gas fees and pay for it
- Users have to manually approve every transaction in the application’s flow. Common interactions like token swaps, often require 2 consecutive transactions
Implementations of this onboarding experience have varied wildly over the years but the most popular applications have coalesced around a development stack like this:
The “build it on your own” crypto development stack
- Users set up or bring their existing Metamask or Coinbase Wallet to authenticate.
- App authentication using a single-chain, open-source wallet connection aggregator like Web3Modal v1 or WalletConnect.
- Implement deep-linking or a bespoke WalletConnect integration to implement mobile support.
- Implement EIP-4361 (Sign in with Ethereum) to authenticate wallets and establish sessions.
- Ethers or web3js for website integrations with smart contracts.
This development approach pioneered the paradigm of users maintaining their own self-custody of their assets and identity around the decentralized web. However, it has significant technical implementation complexities as different dApp features are fragmented across various tools, SDKs, integrations, etc. resulting in application developers spending more time building out infrastructure that otherwise could be spent building out their application.
This technical complexity also extends to user’s onboarding experiences – which in turn has held back mainstream adoption, leading to rampant scams, hacks, and loss of funds due to the unforgiving nature of self-custody.
Additionally, since users have been required to bring their own wallets as part of using dApps, there isn’t a consistent experience across transaction flows, as different wallets all have their unique implementations. This is a huge pain point, not just for designing great and consistent user experiences, but for also troubleshooting customer issues.
The development of a few key EIPs in the past years (like 4337 and 6963) and an industry-wide shift in focus onto mobile-first experiences have led to demands for crypto onboarding experiences to rapidly adapt.
The modern crypto consumer stack maintains the principle of non-custody and composability while remembering that we are designing for humans. The onboarding experience looks something like this:
The modern Crypto onboarding experience
- Hybrid authentication - users can log in using social login (OAuth), email, SMS, or bring their own self-custodial wallets.
- Users who log in using web2 methods (email, SMS, OAuth), have a non-custodial embedded wallet created for them behind the scenes using a wallet-as-a-service (WaaS). The application developer can decide whether or not the user should know or even care.
- Built-in fiat on-ramps - users can top up their crypto balances with a credit card directly within the dApp.
- Gas fees are sponsored on behalf of the user via account-abstracted smart wallets.
- Consecutive transactions can be automatically approved behind the scenes using session keys.
- Multi-chain integrations are abstracted behind SDKs and frameworks.
The modern crypto development stack
The modern crypto development stack looks something like this:
- Hybrid authentication - using web3 authentication tools that bridge web2 and web3 logins.
- Applications use scoped embedded wallets (or build their own wallet), using a WaaS provider, or a bespoke SSS or TSS-MPC implementation. With an end-user wallet recovery process or backup scheme.
- ERC 4337 account abstracted smart contract wallets with built-in paymaster and bundling functionality powered by Alchemy or Zerodev.
- Embedded wallet used as a signer for the AA wallet.
- Fiat-onramps like Banxa or Moonpay are directly integrated to serve in-app transactions.
The modern crypto stack makes using dApps much more seamless for the user, at the expense of increasing complexity for developers. Unfortunately, the more the blockchain is abstracted away, the more integrations and implementation of new technology is required to achieve that.
For example, using an ERC 4337 paymaster abstracts away the concept of gas from the user, but requires the application developer to deploy and manage smart contract wallets per-user. Similarly, implementing embedded wallets can allow users to sign up without needing to download a wallet like Metamask beforehand, however, doing so requires an extensive knowledge of cryptographic security, legal/custodial risk, as well as performing expensive security audits.
Fortunately, web3 development SDKs like Dynamic exist to combine all of the features and integrations needed to build a modern crypto dApp. By integrating Dynamic, you can easily unlock the power of hybrid authentication, embedded wallets, account abstraction, multi-chain, and more within your application, with only a few lines of code. Adding new features becomes just a toggle in our dashboard, rather than a two-week engineering sprint.
Ready to Dive in?
If you're aiming to integrate Dynamic without figuring out the complexities of setting all this up, Dynamic can get you set up in minutes. All you have to do is turn on a toggle and then test it out.
Before joining Dynamic, I was a web3 consultant and have helped launch many projects over the years. This meant spinning up unique web3 experiences with minimal time and resources and finding the best tools available. While the web3 space continues to evolve rapidly, the core challenge remains the same – how do we make it less complicated for everyday consumers? The answer starts with better onboarding.