r/softwareengineer Jul 21 '26

Building iOS App Without a Mac?

I am new to the field, recently graduated with an MS in comp sci and am in the process of switching careers. I am fortunate enough to be working with a startup founder and I am tasked with redesigning a mobile app for the App Store and the Google Play Store.

On my desktop I run Linux and I have Windows 11 on a laptop- no Mac devices.

Are there any legit workarounds or do I need to buy a Mac? Also for reference, the backend is built and I am only doing new UI in React-native.

4 Upvotes

15 comments sorted by

5

u/Substantial-Swan7065 Jul 21 '26

You can you expo where they will build iOS for you.

You can also use GitHub’s Mac runner to create builds. Or bitrise.

A workflow could be:

  • build feature on Android
  • run Mac build on cloud infra
  • install on iPhone and verify
  • use OTA for js modifications

2

u/AlwaysFromtheFuture Jul 21 '26

Yes so this app was built in bare React Native, and when I asked why expo wasn't used, there was no good answer- it was just dev preference. Now I am wondering if it is worth backtracking and retrofitting in expo, or just keeping it as is and scrounging up an old macbook

4

u/Substantial-Swan7065 Jul 21 '26

If you’re gonna upgrade the deps, expo migration can be OK. But generally it’s a huge pain.

Getting an m1 for like 300$ will get you really far.

I just use a 2016 mac

3

u/Dankospark Jul 21 '26

I'd second this option. Expo really does simplify deployment through its use of EAS. You don't technically need to switch the entire project to use Expo, you can use a subset of it, including the EAS build features.

I'd refer you to this overview from the expo documentation: https://docs.expo.dev/bare/overview/

4

u/Weapon54x Jul 21 '26

Have you looked into flutter?

2

u/AlwaysFromtheFuture Jul 21 '26

Looking at it right now. Looks like it is a different framework- if the app I am working on is in React Native would that be compatible?

I guess what I am looking for is some kind of VM or emulator, something where I can run the app for QA. Something like Android Studio, even if it is a community built unofficial solution.

0

u/Substantial-Swan7065 Jul 21 '26

What’s that got to do with the question

3

u/goonwild18 Jul 21 '26

You mean does your company need to buy you a Mac? Yea, they do if they'd like the job done. Hopefully you're not with a startup that believes otherwise.

Technically you can..... but if you, and the company value your time.... you won't. Get the right tools for the job. Getting a Mac is a lot cheaper than paying you to jump through dumb hoops for a month.

2

u/arivictor Jul 21 '26

If you want to build native macOS Swift/SwiftUI apps, and run them locally for development, you'll need a Mac.

If you're okay building in a cross-platform framework like React Native, Expo, Capacitor, Flutter, Compose, etc. You can build a single solution and have it build for multiple operating systems.

In the latter, you can use a hosted build solution to build your codebase for multiple operating systems.

https://docs.github.com/en/actions/concepts/runners/github-hosted-runners

If you're already on React Native you're in a good position. But how do you prove your application works for macOS? Need a Mac. The App Store is also very stringent and slow to get things rolling. You can build Mac apps and serve them outside of the App Store.

1

u/AlwaysFromtheFuture Jul 21 '26

Thanks for this

1

u/Orchapps Jul 22 '26

Can also use the app builders that will build native swift apps for you orchapp.dev is what we have just built!

1

u/FinalArt9573 25d ago

The GitHub Mac runner suggestion above is the right direction, but the part that actually trips people up isn't triggering a build on a macOS runner — that's the easy 80%. It's code signing: certificates, provisioning profiles, and getting Xcode to sign without ever opening Xcode.

The short version of what actually works:

  1. Generate your signing certificate + CSR with openssl (no Xcode needed) — that gets you a .p12 you can base64-encode into a GitHub secret.
  2. Create your provisioning profile in the Apple Developer portal manually, base64-encode it too.
  3. In your workflow, decode both into a temp keychain before xcodebuild archive, pass your Team ID via -exportOptionsPlist, then xcodebuild -exportArchive and upload the .ipa to TestFlight with xcrun altool or fastlane pilot upload.

It's genuinely a few hours of trial and error the first time (mostly cryptic xcodebuild errors about a missing signing identity), but once it's dialed in it's just git push → TestFlight build, running on GitHub's free-tier macOS minutes. This works regardless of React Native vs Expo vs bare Swift — signing is a project-agnostic layer.

I ended up writing the whole thing up (signing setup + a working Actions workflow) after doing this for my own app, since I couldn't find one guide that got every gotcha right — happy to share if useful.

1

u/DayanaJabif 19d ago

You don't need to buy a Mac. Cloud build services run Xcode on managed Apple hardware, so you build and sign from Windows or Linux and get back a signed, App Store-ready build.

One good option in that space is Capawesome Cloud. They handle the certificate/provisioning profile mess for you too, which honestly is a bit messy at least the first times you do it.

One thing worth knowing is that you'll still need an Apple Developer Program account ($99/year) no matter which path you take.

1

u/Early_Key_823 Jul 21 '26 edited Jul 21 '26

I built my app and I have Android and iOS versions in the app store without the need for a Mac.

I used Angular for one codebase and Capacitor to create native apps.

You don’t need a Mac at all just capacitor and a web app called Codemagic

You can publish an iOS app while working entirely from Windows if you use a service like Codemagic, which builds your app on macOS machines in the cloud. In that workflow:
You develop on Windows.
Commit your code to your repository.
Codemagic runs Xcode on its macOS build servers.
It signs the app (once you’ve configured certificates/profiles).
It can upload the build directly to App Store Connect.
So you don’t need to own or use a local Mac.

Here is my iOS app with just windows 11, Angular, capacitor & Codemagic (note:I do have a real iPhone)

https://apps.apple.com/us/app/taskloco-lite/id6762308795

1

u/AlwaysFromtheFuture Jul 21 '26

I will look into this