Cacher App
Published in

Cacher App

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

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.

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.

  1. From the root folder of your Electron app, run:
    electron-builder --publish always

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




The code snippet organizer for professional developers

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
Rui Jiang

Rui Jiang

Founder of Cacher, Human Penguin

More from Medium

Is Cross-Platform Development Still Good in 2022?

Tracking timestamps with Firestore

Forgotten HTML streaming

Reactime Version 12 Updates