If you have been following our blog, by now you should know about all the opportunities that NFT and crypto can bring to iOS app development. Integrating NFTs into your iOS apps can unlock new monetization avenues, improve user retention and engagement, and create valuable experiences for your customers. At the same time, web3 iOS development is still a very nascent and fast-changing field. There are significant hurdles and uncertainties that iOS developers will have to navigate and overcome.
Our team at Dreamerly knows this as well as anyone. We have had to address countless problems and headaches when building and publishing our web3 iOS apps. In the last three months, we have also been collecting lessons, insights, and best practices from 80+ crypto builders, iOS developers, and UI/UX designers from all over the world.
In this post, we summarize our learnings into the top 10 things that you should know when beginning your web3 iOS development. These guidelines can be a starting point to help you plan, develop, and market your web3 iOS apps more successfully.
1. Understand your target users
We cannot emphasize enough how important it is to know your target users, and what problems you are trying to solve for them. As Y Combinator’s famous motto goes: “Make something people want”, you really really need to have a working hypothesis on the problems that a set of users is facing.
Talk to your users, and solve their problems.
Even before you write the first line of code, you and your team can contact and talk to prospective customers to validate your hypothesis. To do so, we highly recommend Rob Fitzpatrick’s The Mom Test. To our knowledge, The Mom Test is one of the best, if not the best, resources for product teams to learn how to run user interviews, ask relevant questions, and draw useful insights.
When developing web3 iOS apps in particular, you also need to think through two additional considerations: 1) your users’ web3 knowledge, and 2) the iOS user profile.
- Your target users’ web3 knowledge: For almost every iOS developer we talked to, the first question on their minds when evaluating web3 features is: Does my user base know crypto and web3? There are several angles to extend this: How many users own a crypto wallet? How many users know how to transact on the blockchain? Which blockchains do they use? Have they owned an NFT before? Do they prefer wallet login over usernames and passwords? Depending on your answers to these questions, you can craft an appropriate minimum viable product (MVP) and go-to-market strategy. If you target traditional mobile users, think about how you can smoothen the web3 onboarding process and provide effective user education on web3 benefits. If you target crypto-native users instead, be prepared to have a limited addressable market at the beginning, as most iOS users are unfamiliar with crypto.
- The iOS user profile: On average, iPhone users have higher income, spend more on in-app purchases, and engage more with mobile apps than their Android counterparts (see source). On the other hand, the Android user base is more global and diverse, with a particularly strong presence in developing markets. This means that your iOS apps will have advantages in monetization, but will typically need higher quality and have a more restricted reach than the average Android apps.
2. Know the App Store’s crypto guidelines
The App Store’s unfriendly attitude towards crypto and NFT is one of the biggest sticking points for iOS developers thinking about adding web3 features into their apps. As of December 2022, the App Store Review Guidelines has two key clauses that you should know about:
- In-app purchase policy for NFTs (Clause 3.1.1 “In-App Purchase”): “Apps may use in-app purchase to sell and sell services related to non-fungible tokens (NFTs), such as minting, listing, and transferring. Apps may allow users to view their own NFTs, provided that NFT ownership does not unlock features or functionality within the app. Apps may allow users to browse NFT collections owned by others, provided that the apps may not include buttons, external links, or other calls to action that direct customers to purchasing mechanisms other than in-app purchase.”
- Cryptocurrency policies (Clause 3.1.5 “Cryptocurrencies”): We do not quote the entire policies here, but the gist is that a) only apps that have appropriate financial licenses can facilitate cryptocurrency transactions and ICOs; b) apps cannot do on-device mining; c) only apps owned by organizations can offer virtual currency storage; and d) apps can not offer crypto for completing tasks.
In our view, the in-app purchase policy for NFTs (Clause 3.1.1) is extremely useful for iOS developers, because it opens the door for NFT features (in our previous blog spot, we break down the revolutionary implications of NFTs for mobile apps). Developers, however, need to ensure that they do not bypass Apple’s in-app purchase system. To do so, you can use the Dreamerly SDKs, which offer a seamless, compliance-focused, configurable suite of tools for developers to integrate in-app NFT purchases.
Apple’s cryptocurrency policies in Clause 3.1.5, on the other hand, are much more restrictive, and prevent most developers from enabling cryptocurrency transactions. Note here that Apple does not view NFTs as cryptocurrencies. Still, if you have the appropriate licenses, Clause 3.1.5 provides a straightforward route to build crypto exchanges on iOS.
3. Decide on the right balance between web2 (centralized backend) and web3 (decentralized network)
When adding web3 features to iOS apps, you will face an important trade-off between scalability and decentralization. On one extreme, you can offload all storage and computation off-chain and leave only certain metadata (e.g. NFT ownership information) on-chain. This approach leverages the efficiency and scalability of web2 infrastructure and allows for fast iteration, but overlooks the ideal of decentralization. On the other extreme, you may package most, if not all, of your business logic into a smart contract, which maximizes decentralization, but at the cost of scalability and potential security problems.
In a sense, the trade-off here is reminiscent of the blockchain trilemma of decentralization, scalability, and security. In our view, app developers building out the MVP version of web3 features should opt for scalability and iteration speed over decentralization, because it can take a long trial-and-error process to arrive at the right features. Once the features are stable, developers can then move some logic on-chain for a higher degree of decentralization and transparency.
4. Choose your blockchain
Which blockchain best fits your mobile apps?
While choosing the right blockchain is a very nuanced topic, here we lay out six criteria for iOS developers to pick the best blockchain for their apps: 1) number of transactions per second, 2) transaction fee, 3) available functionalities, 4) existing infrastructure and developer community, 5) security, and 6) adoption.
- Number of transactions per second: Blockchains vary significantly in transaction speed. Bitcoin can handle 7 transactions/second, while Ethereum currently handles ~15-20 transactions/second (with a theoretical limit of 100K transactions/second following the Merge). Other networks such as Solana also boast a very high number of transactions/second (~4K-5K transactions/second for Solana at the moment). If your apps need to initiate a lot of on-chain transactions (e.g. for payment or gaming apps), you should prioritize a fast network.
- Transaction fee (also known as gas fee): This is closely related to the transaction speed, as a higher number of transactions per second correlates with lower transaction fees. All else equal, a lower transaction fee means a better user experience.
- Available functionalities: Ethereum is the clear leader in enabling almost all blockchain use cases, as it has the most developed standards for smart contracts among all blockchains. Recently, we have also seen the rise of application-specific blockchains (also known as AppChains) that support a particular use case or vertical. For example, ImmutableX’s goal is to empower web3 games.
- Existing infrastructure and developer community: The existing infrastructure and developer community of a blockchain is crucial for iOS developers, because they are the source of guidance, standards, and toolkits to help iOS teams execute on their vision. Older chains such as Ethereum and Bitcoin have the best developer community, but we have seen younger chains such as Arbitrum, Solana, and Polygon making strides in building their support networks. With respect to development infrastructure, we highly recommend starting with an EVM-compatible chain to leverage the existing support from the Ethereum community.
- Security: In March of 2022, the Ronin blockchain was attacked in one of the biggest hacks in crypto’s history (source). This drives home the importance of understanding deeply the security features that each blockchain offers. In some cases, you can consider privacy-focused blockchains such as the Gnosis Chain to satisfy the privacy requirements of your users.
- Adoption: In the spirit of the old saying “Nobody ever got fired for buying IBM”, it is always important for developers to track the adoption trends of different blockchains. Recently, we saw Polygon making impressive progress in onboarding major companies and brands, including Stripe, Instagram, and Nike.
5. Pick the right wallet integration
Wallet is the window into web3 for most users.
Let’s face it: the crypto wallet UX on the iPhones and iPads is terrible. So many iOS developers and users have complained to us about missing functionalities, bugs, and complicated wallet usage flow. That is why it is super important for you to think carefully about crypto wallet integration.
Roughly speaking, there are two integration routes at the moment:
- Wallet app connection: In order to use web3 features in your app, the end users first have to download a third-party wallet app (e.g. MetaMask, Trust Wallet, or Ledger). When starting the web3 feature, your app would redirect users to sign in with the third-party wallet app using the WalletConnect SDK, then redirect them back to your app to unlock the feature. This wallet connection flow is the traditional and most popular integration route for iOS developers, but the UX is difficult to follow and sometimes buggy.
- Traditional authentication with wallets in the backend: In the last few years, tools like Web3Auth and Magic Link have pioneered another wallet integration method. In this method, users would sign in using traditional authentication channels (username, email, social login). The backend would then create custodial or non-custodial wallets associated with users’ authenticated identities. Effectively, this hides the complexity of wallet authentication from the users, resulting in a much smoother experience. However, there are concerns over the security and centralization of the backend wallets.
We recommend that web3 developers start with the wallet app connection method in their testing phase. Once you get to production, you can add the traditional authentication method using Magic Link or Web3Auth to improve the onboarding flow for web2 users.
6. Price your app correctly
Because crypto and NFTs unlock many innovative monetization strategies for iOS developers (see link), it is worth thinking whether you should experiment with new pricing models in connection with your new NFT features. For example, should you charge a percentage of NFT trading amount like Axie Infinity? Or should you allow your end users to create new NFTs and earn a fee for every new creation?
While this decision depends on your business model, user behaviors, and personal preferences, we think there is some wisdom in putting some price on the new NFT features to test product-market fit. You can always remove the price later.
7. Launch fast
We get it. Any builder and creator would love to get their creation perfect before releasing it to the world. We have also heard from many product teams worried about the potential user blowbacks from releasing an unfinished feature. However, this fear is almost always misguided.
Remember, it is still extremely early for crypto and NFTs, and no one could claim that they have nailed the product-market fit equation for web3. Hypotheses will have to be torn down; product roadmaps will have to be updated; your understanding of users will have to change. And the sooner you can do that, the better.
As a result, launching a mediocre web3 feature as soon as possible, then getting user feedback, is a much better process than waiting to build the “perfect” web3 feature. As long as your crypto feature improves your users’ lives by just a little bit, you can launch it.
8. Be determined, tactful, and flexible in the app review process
Yes, Apple has allowed NFT transactions on their platform. But, the decision to allow your web3 features or not still rests in the hands of iOS app reviewers, and as iOS developers, we all know how opaque the app review process can be.
App store review is always a headache, but it can be overcome.
From our first-hand experience, iOS app reviewers tend to be very cautious around crypto and NFTs. This means that you should expect to see a lot of back-and-forth and even rejection on the first try. Still, they are mostly reasonable, and as long as you can show clearly that you follow their App Store’s guidelines, have good intentions, are cooperative, you should be able to pass the app review process. Determination, tact, and flexibility are your best friends in this process.
9. Get the word out
Integrating web3 to your iOS apps is a great way to expand your user base to more crypto-native customers or improve the engagement of your existing users. Given how new and revolutionary crypto is, however, you should have a plan on how to market the web3 features, educate your users if necessary, and generate buzz.
Web3 and mobile teams have come up with very creative strategies on making users know about new web3 functionalities. For example, web3 product managers emphasized to us the importance of building Discord or Telegram communities for crypto-native users. This represents a key difference in user behaviors, as web3 users have much higher expectations of regular communication, updates, and engagement from the developer teams than traditional iOS users. Twitter is also a powerful channel to reach web3 users, because Crypto Twitter is always abuzz with activity.
To reach users who are less familiar with crypto, a different approach is necessary. Many iOS teams focus on accessibility in their crypto marketing materials. For instance, they may replace technical definitions like “NFTs” with more user-friendly terms like “digital collectibles” or “virtual goods”. Another strategy is to plan out a series of FAQs, blog posts, and product announcements to help educate and onboard users to crypto. We recommend the Reddit NFT page as a very successful case study of how product teams can introduce web3 to their user base.
10. Don’t sit around. Iterate
As Richard Feynman said: “the imagination of nature is far, far greater than the imagination of man”, the most important thing for iOS teams to do is to constantly iterate, push out new updates to their web3 features, and get user feedback. The best product teams never stop talking to users and making changes to their apps.
As you get user feedback and suggestions about the new web3 features, you may end up with a long list of improvements and fixes to build. This is a great problem to have, though it may be difficult to decide the right priority and focus. We like the suggestion from Paul Buchheit, the Gmail inventor, to look for the “90/10 solution”. In other words, look for a method that achieves 90% of what you want with only 10% of the effort. This avoids feature creep and keeps your iteration process fast.
It’s time to build
If you take away anything from this post, let it be this: Launch and experiment with web3 features in your iOS apps as fast as you can. If it does not work out, great. It is a useful learning milestone regardless. But if it works, web3 can help push your iOS apps to a new height, especially at a time when most app developers are still behind on the crypto adoption curve.
If you need any help on this exciting journey, remember that our team at Dreamerly is just a DM away.
To help you launch fast, Dreamerly offers a suite of easy-to-use, app store-compliant mobile NFT toolkits. With our SDKs and backend architecture, you can integrate NFT features into your iOS apps with just a few lines of code, while ensuring that your apps follow the App Store’s guidelines.