Macless
Blog $99, one-time →
No Mac. No rented Mac. No monthly CI bill.

Ship an iOS app to the App Store without ever owning a Mac

This is the GitHub Actions pipeline, signing scripts, and notes I used to build and submit an actual App Store app — using GitHub's free build servers and a web browser. Nothing else.

One-time payment. Instant download. 30-day money-back guarantee.
$ git push origin main
→ GitHub spins up a macOS build machine (free, public repo)
→ signs the app, archives it, exports a .ipa
→ uploads to TestFlight
done. no Mac involved, nothing spent.
I'm Jackson. I built Citolex, a speed-reading app, and wanted it on the App Store — but I don't own a Mac and wasn't going to rent one just to click a few buttons in Xcode. It turns out GitHub gives away free macOS build minutes on public repos. Normally that's used for running tests. I used it to build, sign, and upload the whole app instead. It worked, and Citolex actually shipped. This is that setup, cleaned up so you don't have to piece it together yourself.
— Jackson

What this replaces

Normally, shipping an iOS app means owning a Mac (starting around $799) or renting one in the cloud (usually $20–100+ a month) just to run Xcode long enough to sign and upload a build. This replaces that with a GitHub Actions workflow that does the same steps — for free, because GitHub doesn't charge for macOS runners on public repositories.

How it works

  1. 1You push code to GitHub, same as any normal commit.
  2. 2GitHub starts a free macOS machine and checks out your project onto it.
  3. 3A script fills in your bundle ID, App Group, and code signing using secrets you set once — no clicking through Xcode.
  4. 4The command-line build tools archive the app and export a signed .ipa.
  5. 5The build uploads straight to App Store Connect / TestFlight.
  6. 6You never opened Xcode. You never touched a Mac.

What's included

Not just a workflow file you copy and hope works. The whole setup, written up the way I wish it existed before I had to figure it out myself.

This is the exact pipeline behind Citolex — a full app with native Swift plugins that went from "is this even possible" to submitted for App Store review, without a single Mac. Every fix in the troubleshooting doc is one this pipeline actually needed. → citolex.com

Price

$99 one-time
No subscription — you're already saving on a Mac, no reason to pay monthly on top of it.
  • Workflow file, signing script, setup guide, App Store Connect guide, and troubleshooting doc
  • Any future updates to the guide, included
Get instant access — $99
30-day money-back guarantee. If you can't get a signed build out, email me and I'll refund it — no back-and-forth.

Before you ask

Do I need any Apple hardware?

No Mac to build or sign. You'll still want an iPhone to actually test the finished app — TestFlight installs directly on a physical device.

Is this against Apple's or GitHub's rules?

No. You're using GitHub's own free macOS minutes to build your own app, on your own repo, under your own Apple Developer account — exactly what they're for. This isn't reselling compute or running anyone else's builds.

Do I still need to pay Apple?

Yes — the $99/year Apple Developer Program fee is separate and unavoidable. This removes the Mac requirement, not Apple's own fee.

What if I'm not using Capacitor?

The signing and CI steps work no matter what generates your iOS project — Capacitor is just what my example app used. The guide covers plain Xcode projects too.

What if my repo needs to be private?

Private repos work exactly the same way — nothing about the pipeline changes. The only difference is GitHub's free-minutes allowance: public repos get unlimited free macOS build minutes, private repos get a monthly allowance before you're billed per minute past it (still usually cheaper than a rented Mac). Either way, your signing certificates and credentials are stored as encrypted GitHub secrets — they're never exposed in your repo or build logs, public or private.

What if I get stuck?

Email me. The troubleshooting doc covers the errors this pipeline has actually produced, and if you can't get a build out within 30 days, I'll refund you.

Ready to give it a try?

Get the template — $99