Announcing Zap Desktop 0.6.0-beta

Jack Mallers
7 min readNov 15, 2019

Yo. Today we are blessed, a new major release of Zap Desktop has been released 🎊🎉. You can download the new release for Mac, Windows, and Linux here. You can find a getting started tutorial here, and more in-depth release notes here.

Zap Desktop has continued increasing its growth rate and has cemented its place as the most popular Zap client. It took Zap Desktop about two years to reach 1,000,000 asset downloads, and since then, it has taken a few months for it to add another 250,000 asset downloads.

Interesting Insights

Zap Desktop has seen a shocking amount of growth in countries outside of the United States since its last major release, with the Middle East leading the charge, according to the data I have access to (Github metrics and what I can gather from my nodes). Users prefer Zap Desktop because it can be downloaded and used anonymously. With iOS and Android, you have to submit a base-minimum amount of information to Apple and Google to use their application platforms, but Zap Desktop can be downloaded from the internet and used without sharing any personal information.

We’ve also seen nice growth in the open-source codebase as well. Zap Desktop is becoming one of the more popular open-source wallet codebases in all of Bitcoin. Since its last major release, the repository has reached 1,000+ Github stars and averages hundreds of unique clones and thousands of unique views per week. We’ve seen many applications use Zap Desktop to support their Lightning apps, and developers using Zap development tools within their own applications. Amazing to see.

Alright, it’s time to dive into some of the major enhancements in Zap Desktop 0.6.0-beta.

lnurl

the crowd goes wild

To satisfy one of the more popular requests we’ve gotten from users, Zap Desktop 0.6.0-beta comes with lnurl-withdraw support. This greatly improves the user experience, allowing users to withdraw from services without the need to create and share an invoice.

We encourage more Lightning services to enable lnurl support. With it, users can both deposit and withdraw from Lightning services by simply clicking buttons, never interfacing with the underbelly of the protocol. If you have any questions about our implementation or about how to implement it in your own Lightning apps, feel free to join our Slack.

Global Password

With this Zap Desktop release, Mac and Linux users can now enable a global application password through their settings. When enabled, Zap will require you to enter a password to simply gain access to the app, entirely separate from and in addition to your individual wallet passwords.

As the Lightning Network becomes more mature and users begin to experiment with more BTC, this feature allows users to opt-in to a higher level of security.

This feature simultaneously lays the foundation for many more ambitious features that rely on advanced security practices. With this feature, we’ve built the foundation to store hashes of sensitive data to your operating system’s secure storage. This will now enable us to roll out much-improved onboarding with one global password, as well as financial services related to Olympus. We will enable Windows support in an upcoming minor release. Turns out dealing with Windows is a bit more complicated than Mac and Linux, who knew? 🙂

Invoicing and Activity History Improvements

Zap Desktop 0.6.0-beta comes with an array of invoicing and activity history improvements.

Fallback Addresses

You can now enable fallback on-chain addresses inside of your BOLT 11 Lightning invoices through your preferences. One of the more painful user experiences in Lightning today is managing the different layers. We see various attempts from wallets to separate “on-chain” and “lightning”. One of the most notable for me personally, is my beloved BTCPay Server. When checking out with BTCPay Server, as a user, you see this interface:

Having to toggle between “Bitcoin” and “Bitcoin (Lightning)” is not the best user experience of all time, especially considering we have a solution ready for us with BOLT 11. The specification states Lightning invoices can include an on-chain address, known as a “fallback address”. The point is, wallets can now scan the invoice, and decide if the user has sufficient channel balance to make the payment, or if they should offer the user the option to make the payment on-chain.

With Zap Desktop 0.6.0-beta we first start by allowing users to enable fallback addresses inside their invoices. In upcoming releases, we will support paying to fallback addresses. We hope that this encourages all wallets to support fallback addresses, as it will surely improve Bitcoin’s UX.

Infinite Scrolling Pagination

Over the last few months, users would frequently report performance issues with Zap. After digging into the problem, we realized it was less to do with the software and more to do with the growing size of the user’s node. I faced this problem personally, as one of my nodes has close to 600 channels and thousands of payments both sent and received. In previous Zap releases, we would load all activity at once, causing serious issues if a user’s node was rather large. Now, we paginate with infinite scrolling, which results in a nice user experience and gives Zap serious performance improvements.

Export Transactions As a PDF

Lastly, we’ve added the ability for users to export their transaction as a PDF. We’ve seen an increase in users using Zap as it relates to their business. Whether you are a merchant, a taxpayer, a trader, etc. we hope this feature provides you a nice enhancement when attempting to stay on top of things.

If you are a business and would like to see more features like this added to Zap, feel free to open an issue and we’ll get to it.

Message Signing

With this release, Zap users can now sign and verify messages from within their wallet’s profile.

I had a tweetstorm about this feature which caused a bit of a stir on the internet, so I’d like to clarify a few things. Even today, a reputation system exists and continues to be built on the Lightning Network. At the protocol level, nodes keep track of actions and punish others who don’t play nice. I have ambitious plans on how this type of idea can extend itself to the application layer and be exposed through a user interface to general consumers. Nonetheless, with this release, we're making a step in the right direction.

The current LND API only validates the signature and then checks that the recovered public key exists in the channel graph. Because of this, the current API will not work for private channels. So, all users will be able to verify signatures, but only remote (routing) nodes with public channels will be able to sign messages. I’d love to hear the community’s feedback on this feature as we enhance it and build out some of the ambitions I mentioned on Twitter.

User Experience Improvements

Lastly, there are many user experience improvements that we are very excited about.

Skeleton Loading Screens

This release of Zap Desktop includes skeleton loading screens. Skeleton loading screens are perceived to be a shorter wait time when compared to a blank screen or progress bars/spinners. We first introduced them in Zap iOS and we will continue to use them throughout our applications.

Auto-Complete Seed Recovery

Now when recovering a wallet with your seed, Zap Desktop comes with auto-complete and will suggest words from the BIP39 word list as you type. Typing 24 words can be daunting and a huge pain, and we hope this enhances that user experience and speeds up the process of your wallet recovery.

Error Boundaries

Last but not least, my personal favorite, Zap Desktop’s new error boundaries. We’ve added error boundaries throughout the app so that if the application encounters a critical error, it will no longer crash. Instead, users will see a modal showing the error, details of the error, and the ability to click and submit the issue to us.

You all drive Zap forward. It’s your feedback and bug reports that help us improve Zap and make it better. I hope this makes it easier to report issues and over time helps Zap become more and more stable.

Thanks

Alright, peeps, that’s going to wrap up the Zap 0.6.0-beta high-level review. If you’re interested you can find the full changelog here. I’m super excited for you to give this new release a spin.

As you know, this is a community-driven project. Zap has grown bigger than I ever imagined it would, helping people all over the world, and authored by a community of passionate doers. As always, I’d like to say thanks to the community. It’s your bug tickets, your PRs, your ideas, your testing, your usage that drives Bitcoin, Lightning, and projects like Zap forward. Just a fact. Much love. ❤️✊

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 all know what we got cookin. Cypherpunks write code.

Talk soon.🍻😃

--

--