Getting your Electron app to work on macOS Catalina (10.15)

Rui Jiang
Rui Jiang
Oct 10, 2019 · 3 min read

Cacher’s code snippet manager empowers you and your team to get more done, faster. Try all features free.

I couldn’t find a writeup for this issue anywhere else on the internets so hopefully this post will help other poor Electron developers out there get around the issue. If you’re more inclined to skip straight to the workaround, here’s the snippet.

The Problem

electron-builder, the de-facto multi-platform package builder for Electron seems to have a bug where using the zip target (dmg is not affected) produces a compressed app folder which cannot actually be opened on macOS Catalina (10.15). Users on the newly released macOS will see the following error upon opening the app.

Image for post
Image for post
Time to panic

It is a known fact that macOS Catalina requires any software distributed outside the Mac App Store to be notarized. But it appears that electron-builder fails to actually include a valid notarized version of the app folder in the zip file. This issue is specific to Catalina and does not manifest itself in macOS Mojave.

While the culprit of the problem lies in either something Apple did or electron-builder didn’t do, I couldn’t sit around waiting for a fix while early Catalina adopters were hitting the issue on Cacher’s download page.

The Workaround

The key here is to know that the problem lies somewhere between when the notarized .app/ folder gets generated but before the .zip gets built. I ended up manually compressing the .app/ folder and filling in the auto-update YAML file details.

The steps below assume you are notarizing Electron apps with electron-notarize.

2. Go to Finder, open the dist/mac/ folder and right-click to Compress “”. The native zip bin does not compress the folder far enough. If you want to script this step, use 7zip instead.

3. Rename the new zip file to what’s currently in the dist/ folder. With default electron-builder settings, that would be YourApp-{version} .

4. From the root folder, run:
./node_modules/app-builder-bin/mac/app-builder blockmap -i dist/YourApp-{version}

This should output the file’s size, sha512, and blockMapSize .

5. Edit your dist/latest-mac.yml file with the information found in step 4. It should look like this once you’re done:

version: 1.0.0
- url:
sha512: 9Ce3rY674xSEGPBhbCoxmXFLdNQr5mjuvEEbQ1Il1goB4UjEMaQglg9eJ7kBrazgmii9ILp0ee2pX3IGvFc2Qw==
size: 69660814
blockMapSize: 73821
sha512: 9Ce3rY674xSEGPBhbCoxmXFLdNQr5mjuvEEbQ1Il1goB4UjEMaQglg9eJ7kBrazgmii9ILp0ee2pX3IGvFc2Qw==
releaseDate: '2019-10-08T16:48:58.867Z'

6. Manually upload dist/YourApp-{version} and dist/latest-mac.yml to your download hosting provider. (S3/DigitalOcean/GitHub)

7. At this point, your users should have a working notarized zip for macOS Catalina with auto-update enabled.

The Takeaway

I had a frustrating couple days working around the problem while hoping that Apple took pity on us sad Electron developers to introduce a fix. If there’s one lesson I learned, it’s to test early and often against beta releases of macOS.

P.S. If any of you have a better solution to the problem, I’d love to hear it.

Cacher is a code snippet organizer for pro developers — beautiful user-centric UI, integrations for popular editors/IDEs, support for 100+ languages.

Sign up at

Cacher App

The code snippet organizer for professional developers

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store