Distributing a Mac app as a solo dev has an annoying tollbooth: Gatekeeper. Hand someone a prebuilt .app and macOS slaps it with the com.apple.quarantine attribute, then refuses to open it unless you've paid for Apple notarization.
For TetherShot, I sidestepped the whole thing.
The trick: don't ship a binary at all. Ship the source, and build it on the user's machine.
npm install -g tethershot
That postinstall doesn't download a .app. It compiles one from source using the Xcode Command Line Tools (swift build), then drops the result into ~/Applications.
Why it works:
- A bundle built locally never receives the quarantine attribute.
- No quarantine flag means Gatekeeper doesn't block it.
- No Gatekeeper block means no notarization needed — zero Apple Developer Program cost.
The user gets a native app that just opens. No "unidentified developer." No right-click-open dance.
The only requirement is the Xcode CLT, which most Mac devs already have (xcode-select --install).
TetherShot itself is a menu-bar app for pixel-perfect iPhone screenshots over USB or Wi-Fi — local-first, MIT, no telemetry. But the distribution model is the part I'd reuse for any Swift side project.
Top comments (0)