Shipping a Mac app without a $99 Apple Developer account
Description and use
Kopi uses a self‑signed certificate to avoid the $99 Apple Developer Program fee, keeping permissions across updates while accepting a single Gatekeeper warning on first launch.
Problem
How to ship a macOS app without paying the $99 annual Apple Developer Program fee while maintaining a good user experience.
Outcome
Kopi can be distributed to macOS users without paying Apple’s $99 fee, preserving permission continuity across updates while accepting a single Gatekeeper warning on first launch.
Workflow
- Create a self‑signed code‑signing certificate and store its private key in the repo’s secrets.
- Sign every release with that certificate, producing a stable designated requirement based on bundle identifier and certificate leaf.
- Import the certificate into the keychain during the release workflow so Tauri can sign the app.
- Provide users with an install guide, a .dmg background, and a one‑line terminal script to bypass quarantine.
- After the first launch, users grant permissions once; subsequent updates are signed with the same certificate and install without quarantine, so Gatekeeper does not block them.
- Users can disable automatic updates in the app settings if desired.
Evidence
On macOS, an app downloaded from the internet opens without a Gatekeeper warning only if it is signed with an Apple Developer ID certificate and notarized by Apple.
For an ad‑hoc signature, that requirement includes the build's own hash. Every new build has a new hash, so every new build looks like a different app to macOS.
I created a self‑signed code‑signing certificate and stored it in the repository's secrets. Every release is signed with it.
The workaround is to have the release workflow import the certificate into the keychain itself, then let the build sign with that identity.
The script doesn't quarantine the app, so Gatekeeper doesn't block the first launch.
- Record date: 2026-10-21T20:11:18.315Z