{
  "id": 15936417,
  "title": "Shipping a Mac app without a $99 Apple Developer account",
  "url": "https://urgent.news/2026/10/21/shipping-a-mac-app-without-a-99-apple-developer-account",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-10-21T19:15:24.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/devanshu_verma/shipping-a-mac-app-without-a-99-apple-developer-account-1b6j"
  },
  "original_language": "en",
  "account": "I am the author of Kopi, an open-source clipboard manager for macOS and Windows. It was while writing this open-source project that I had to make a decision about shipping a Mac app without a $99 annual Apple Developer account. I wrote up the decision in a decision record and decided to share the story behind it.\n\nmacOS requires apps downloaded from the internet to be signed with an Apple Developer ID certificate and notarized by Apple to avoid Gatekeeper warnings. For a commercial app, this fee is normal, but Kopi is free and open source, so I decided against paying the fee. My first thought was to skip the paid certificate, sign the app ad-hoc, and tell people to click through the warning. However, this didn't work because Kopi needs two macOS permissions: Accessibility and Pasteboard access. macOS doesn't remember these grants by app name, but rather by the app's designated requirement, which is based on the code signature hash. With an ad-hoc signature, every new build has a different hash, meaning each new build appears as a different app to macOS. This caused issues for my alpha testers, who would lose permissions with every update and have to manually grant them every time.\n\nThe solution was to use a self-signed certificate that never changes. By signing the app with a real, self-signed certificate, I could base the designated requirement on the bundle identifier and the certificate itself instead of the build's hash. This means that version N+1 is considered the same app as version N by macOS, so permissions carry over between updates. Although the app is not trusted by Apple when first opened, this approach solved the issue of permissions resetting on every update.",
  "summary": "I build Kopi , a free, open-source (MIT) clipboard manager for macOS and Windows. It's written in Rust with Tauri 2 and React, and it's in alpha. This post is about one decision that took more thought than any feature: how to ship a Mac app without paying Apple $99 a year. I wrote it up as a decision record in the repo ( ADR 0006 ), and this is the longer story behind it. The problem: $99 a year…",
  "key_points": [
    "Author Kopi, open-source clipboard manager for macOS and Windows",
    "Decided to ship Mac app without $99 Apple Developer account",
    "Used self-signed certificate to maintain permissions across updates"
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}