I don't own a Mac. When I built my last iOS app (Citolex, a speed reading app with a couple of native Swift plugins), I didn't want to buy one or pay $20 to $100+/month for a rented cloud Mac just to run Xcode long enough to sign and upload a build.
Turns out GitHub gives away free macOS build minutes on public repos, usually used for CI/test runs. I pointed them at the whole release pipeline instead.
The pipeline
- Checkout on a free macOS runner
- Set bundle ID, App Group, and provisioning from GitHub Actions secrets
xcodebuild archive- Export a signed
.ipa - Upload straight to App Store Connect
All triggered by a normal git push. No Xcode GUI, no Mac, ever.
Did it actually work
Yes. Citolex has native Swift plugins and went through full App Store review, built entirely this way.
The parts that actually trip people up
Not the build step, that part is mechanical once it's set up. The real friction is signing: matching a distribution certificate to the right provisioning profile, keeping entitlements in sync with what's in App Store Connect, and not leaking the private key. Most of the errors I hit along the way were some flavor of "profile doesn't match this certificate."
Honesty notes, since these always come up
This does not remove Apple's $99/year developer program fee, you still need that. The free build minutes are a public repo perk specifically, private repos get a much smaller free allowance. And you'll still want a physical iPhone at some point to actually test the thing you're shipping.
I packaged the workflow file, signing scripts, and setup/troubleshooting docs as a one time $99 template for anyone who wants the shortcut instead of piecing it together from scratch: macless.dev. Not required to get the idea from this post, just mentioning it since people usually ask where the workflow file is.
Happy to answer anything about the signing setup specifically, that's the part most people get stuck on.
Top comments (0)