Over the coming months, you will see a lot of Zap art throughout our products. As Bitcoin enters a more consumer-facing era post Lightning, we see visual design as a major player in humanizing the protocols, furthering our effort towards mainstream adoption.

Empty State Interactive Design

One of the biggest user experience challenges currently is onboarding users onto Lightning. We have seen many apps try various things with different trade-offs.

As excited as we are about autopilot, we don’t think it is ready just yet. Autopilot seems to be more confusing than not and was jarring to users, at least for now.

Users have suggested Zap should open a channel to new users and allow them to swap funds directly onto Lightning. This takes many onboarding shortcuts to improve the user experience, but it is not necessarily secure. This approach would leave Zap open to some potential attack vectors. We feel Zap is too big at this point to knowingly expose ourselves to nefarious attacks in lieu of improved UX. We also aren’t comfortable offering a short term feature-fix that we won’t be able to offer for a significant amount of time, especially one that has unsolved security holes.

There are many improvements to be made when onboarding users onto Lightning (we have a few plans ourselves), and there is a lot left to learn. Should we have our users all open a channel to our Zap routing nodes? Should Lightning wallets remove on-chain functionality? Should users be encouraged to distribute their Lightning funds between many peers to further decentralize the network? For now, we decided to simply use design to guide the user to their first Lightning transaction.

When you finish verifying your recovery phrase, Zap will now show you a “Fund your wallet” empty state on the home screen to deposit funds.

When your deposit confirms, you will see a small notification on the Channels navigation button. When clicked, you will see a similar “Open a channel” empty state to open a channel.

If you have an ideal channel peer in mind, you can paste or scan their peer info. However, if you just want to connect to a healthy routing node, Zap aggregates a list and displays them at the bottom. You can simply click one of the suggested peers to open a channel.

We don’t believe channels will be relevant to users forever, but we also aren’t entirely confident they need to be hidden from users today.

Skeleton Loading Screens

The last user experience improvement I’ll highlight is our new skeleton loading screens. A common Lightning user experience problem is the fact that the on-device node frequently needs to sync to catch up to the chain tip. This can be perceived as a heavy bogged down experience for users, needing to wait for what feels like forever, when in reality it’s typically 5–15 seconds. This was our previous syncing screen.

This experience is clearly draining. Being constantly reminded that you are storing filters of a distributed ledger is intimidating. So, maybe Lightning and Bitcoin isn’t meant for a mainstream audience.

Sike. This is a common problem in many popular consumer-facing applications. Do you think Bitcoin is the only technology that ever faced the issue of having to fetch data before being able to deliver an optimal user experience? There are many techniques and tested design tactics to ease the user into the app and rapidly reduce the cognitive load that is waiting for data to be fetched.

For us, we think skeleton loading screens are a great enhancement and are underutilized in the Bitcoin space today. It is widely known in the design space through intense user study and research that skeleton loading screens are perceived to be a shorter wait time when compared to a blank screen or progress bars/spinners. Have you used one of these services before?

Turns out they need to fetch data in order to give their users an ideal experience as well, and they seem to be doing fine.

So, with this new release of Zap iOS, there are no intense, overbearing full-screen loading animations or syncing screens. If you open Zap and it needs to sync a few days worth of blocks, fetch some channel data, load your transaction history, and so on, you will see an animated skeleton loading screen.

Thanks

Alright, folks, that’s all for now. Zap has been a trailblazer and a leader in Bitcoin/Lightning design thinking. I am proud to be working on bringing non-custodial financial tools to the greater world. Bitcoin user experience has been the one to blame as of recent. Have patience, trust the process. It may seem like we are moving slowly given the scope of a month but zoomed out to January 3rd, 2009 we are actually moving lightning fast. We got this.

I’d also like to shoutout Otto and the community. Otto is the lead maintainer of Zap iOS, with over 2,000,000 lines of code committed to the project. He DMd me on Twitter in October of 2017 looking to contribute to Bitcoin.

Since then, we have been working together on what Lightning on mobile should look and feel like. This project is community-driven. I don’t do any recruiting. Zap has no investor backing. We don’t talk to media. In some ways, Zap is a miracle. It exists because of all of us testing, writing code, suggesting features, reporting bugs, and willing Bitcoin forward. On behalf of the community, thank you, Otto, for being the change you want to see.

Lastly, I’d like to say thanks to you all. Zap iOS has thousands of active users, and today it can be used on mainnet with no remote node. Oh how far we’ve come. Thanks for your continued support, bug tickets, feature requests, and so on ❤️✊

You can contact me @JackMallers on twitter or zap@jackmallers.com via email. For bug reports, troubleshooting, feature requests, etc. we encourage you to open issues on our Github repository and/or join our slack.

You can download mainnet Zap iOS here.

The show goes on, you’ll hear more from me soon.

Catch you on the flip side 🍻✌️