Designing a Bitcoin Wallet for iOS
A quick start guide for designing the best native iOS bitcoin app.
If you’ve already developed a bitcoin wallet for iOS how do you make it a great experience as a bitcoin wallet?
The goal is to make the iOS bitcoin wallet both:
the best native iOS app
the best native bitcoin app
New Paradigms
Bitcoin wallets have so many new paradigms to consider, and the user base could be anyone anywhere in the world, so even seemingly simple questions can become complicated.
Let’s take a simple example- How should I display the balance?
Should the unit be shown as:
bitcoin
sats
dollars
other
And even once a decision is made on what unit to show, now what format should it be?
Should it be formatted like this:
Apple
To answer these questions let’s start with the basics: the goal is to make an iOS app feel native to the platform it is on.
On the Apple platform we get a solid guide for making great apps like the Human Interface Guidelines (HIG). The HIG contains guidance and best practices that can help to design a great experience for any Apple platform. A general goal is to use as many native features and paradigms of the platform the app is on to not just make it feel at home on the Apple platform, but also because using native best practices have additional benefits like getting a lot of functionality for free including accessibility.
SF Symbols is another great tool Apple has given designers and developers in the last few years: it is a library of over 5,000 symbols of iconography designed to integrate seamlessly with the system font for Apple platforms.
SF Symbols even has bitcoin symbols. #bitcoinonly
Bitcoin Design Community
Now that we know where to find best practices to make a great native iOS app, where are best practices to make a great native bitcoin app? Enter Bitcoin Design Community
The Bitcoin Design Community is an open space to discuss and explore everything bitcoin and design. Open standards are part of their foundation, so all of the work can be found on Github as a part of the open design process.
One of the ways making bitcoin more intuitive and accessible is achieved is through the Bitcoin Design Guide: a free, open-source guide that covers consumer wallets. The Bitcoin Design Guide has reference designs like the Daily Spending Wallet which is an in-depth exploration of a mobile wallet covering primary user flows.
There is also a Bitcoin Design Guide section on Units & Symbols, which discusses formats similar to what we saw earlier from peach wallet and mempool.space.
Bitcoin UI Kit
The Bitcoin Design Community built a resource called the Bitcoin UI Kit which is a design system and UI Kit that provides a design foundation for prototypes, concept explorations and open-source projects to kickstart the design process. These assets can be found on the Bitcoin UI Kit Figma.
BitcoinUI
As an iOS developer you might want something that takes the Bitcoin UI Kit even further and can be easily used via a Swift implementation of that design system. BitcoinUI is a native iOS implementation of Bitcoin UI Kit, in an easy to use Swift Package. The design system components in BitcoinUI include:
Colors
Button styles
Text styles
Icons
BitcoinUI works as simple as SwiftUI or any native implementation; an example is being able to access colors like .bitcoinOrange that support both light & dark mode:
Text("Bitcoin Orange")
.foregroundColor(.bitcoinOrange)
BDK Swift Example Wallet
For a full example BDK Swift Example Wallet combines native Apple resources (SF Symbols), bitcoin design resources (BitcoinUI), and bitcoin wallet development resources (BitcoinDevKit) to create an example bitcoin wallet.
BDK Swift Wallet Example took inspiration from the Bitcoin Design Guide section on Units & Symbols when implementing the balance format:
But there are many ways for this balance format to be implemented, the ecosystem and users are always evolving, use the resources listed here to decide what is best for you.
What next?
Now that we’ve developed and designed a bitcoin wallet we can continue to: