All articles

Guides

Build a React Native iOS app without a Mac

You can write, build, sign, and publish a React Native app to the App Store without owning a Mac. Here is the honest 2026 playbook, from Expo EAS to bare React Native CI, including the code signing part everyone skips.

Nicolas Ristic·June 16, 2026·10 min read

Yes, you can build a React Native iOS app and publish it to the App Store without owning a Mac. You write every screen and every line of JavaScript or TypeScript on Windows or Linux, and a macOS environment in the cloud handles the three steps that genuinely need Apple's toolchain: compiling the build, signing it, and submitting it to the App Store. For most React Native teams the fastest no-Mac path is Expo with EAS Build, but it is not the only one. This guide separates what actually needs a Mac from what does not, and compares the real options for 2026.

Do you actually need a Mac to build a React Native iOS app?

No, you do not need to own a Mac, but you do need macOS somewhere in the pipeline. It helps to split an iOS release into three stages. Development is writing your JavaScript or TypeScript, building the UI with React Native components, and running your business logic, and all of it happens on Windows or Linux with Node and the React Native tooling. Build is turning that project into a signed .ipa file, which requires Apple's Xcode toolchain and therefore a macOS machine. Publishing is uploading the build to App Store Connect and sending it for review, done from macOS or a service that talks to Apple for you. Only the build and publish stages touch macOS, and both can run on a cloud machine you never physically own.

Does Expo or bare React Native change the no-Mac path?

It changes how much you assemble yourself, not whether it is possible. Expo with EAS Build is the smoothest no-Mac route: you run eas build --platform ios from Windows or Linux, and Expo compiles your app on its own hosted macOS machines, manages your certificates and provisioning profiles, and hands back a signed .ipa. A bare React Native project created with the React Native CLI needs the same macOS build somewhere, but you have more choices: EAS Build also supports bare projects, or you can point a cloud CI like Codemagic, Bitrise, or a GitHub Actions macOS runner at your repo. The mental model is the same in both cases. Your laptop stays on Windows or Linux, and a remote Mac does the Xcode work.

  • Expo managed or dev-client projects: EAS Build is the default, and it handles signing and upload with almost no configuration.
  • Bare React Native projects: use EAS Build for bare workflows, or a cloud CI where you own the build script and the signing steps.

What do you need before you start?

Before any of the no-Mac tooling matters, a few things have to be in place. None of them require Apple hardware, but one of them costs money.

  • An active Apple Developer Program membership. It costs 99 US dollars per year and is mandatory to sign apps and submit to the App Store.
  • A React Native project that already builds and runs on an Android device or emulator. Fix your JavaScript and native dependency errors before adding iOS to the mix.
  • An app record in App Store Connect, with a unique bundle identifier such as com.yourcompany.yourapp.
  • A place to run the macOS build: Expo EAS, a cloud CI service, a rented Mac, or a managed platform. The next sections compare these.

Why is iOS code signing the real blocker?

Code signing is the step that stops most Mac-less developers, not the build itself. Apple requires every iOS app to be signed with two things: a distribution certificate that proves who you are, and a provisioning profile that ties your certificate, your app identifier, and your allowed devices together. Historically both were generated inside Xcode on a Mac, which is exactly why going Mac-free feels blocked here. The good news is that certificates and profiles are just files, and they can be created and managed without ever opening Xcode. You have three practical routes: let Expo EAS generate and store them for you, let a cloud build service create them through the Apple API, or automate them with fastlane match, which keeps an encrypted copy in a private git repository and reuses it on any machine. Either way, signing stops being a manual Xcode ritual.

  • Expo-managed signing: EAS creates and stores your certificate and profile and reuses them on every build. Lowest effort for React Native teams.
  • Managed CI signing: a cloud service creates and rotates the credentials through Apple's API. Low effort, tied to that vendor.
  • fastlane match: your certificates live encrypted in a private git repo and are pulled into any build. More setup, fully reproducible across tools.

What are your options to build a React Native iOS app without a Mac?

There are four realistic paths in 2026. They trade cost against how much pipeline you have to configure yourself. Here is an honest comparison.

  • Expo EAS Build: the default no-Mac path for React Native. Run one command, and Expo builds on hosted macOS, manages signing, and can submit to the App Store with eas submit. Works with managed and bare projects. Best for most teams that want to ship without owning a pipeline.
  • Cloud CI (Codemagic, Bitrise): hosted macOS build machines aimed at mobile, with React Native support and code signing helpers. You still write and maintain a build configuration. Best for teams who want control, custom native steps, and repeatable CI.
  • GitHub Actions macOS runners: run your iOS build on Apple hardware inside your existing GitHub workflow. Cheapest at low volume, but you assemble the pod install, build, signing, and upload steps yourself. Best for developers already living in GitHub.
  • A managed release platform (Releasely): you upload your build or connect your project in a web workspace, and the platform handles the iOS build, the code signing, and the App Store submission for you. No CI file to maintain and no macOS to configure. Best for developers who want to ship, not to run a pipeline.

How do you go from a React Native project to the App Store, step by step?

Here is the end to end path, with a note on where each step runs so you always know what needs macOS and what does not. If you want to weigh every option first, see our comparison of app release tools. The flow is close to the Flutter version of this guide; only the build command differs.

  1. Confirm your React Native project builds and runs cleanly on your machine, on Windows or Linux, against Android.
  2. Enroll in the Apple Developer Program, then create the app record and bundle ID in App Store Connect, from any browser.
  3. Set your version and build number before you cut the build, in app.json for Expo or in the native project for bare React Native. Our versioning guide covers keeping both stores in sync.
  4. Generate or connect your distribution certificate and provisioning profile, through Expo EAS, a cloud service, or fastlane match, with no Mac.
  5. Run the iOS build to produce a signed .ipa, on cloud macOS rather than your machine. With Expo that is eas build --platform ios.
  6. Upload the .ipa to App Store Connect and let it process into TestFlight, through eas submit or your CI service.
  7. Fill in your store listing, screenshots, and metadata, then submit for review, from any browser.

What still needs a Mac or a cloud device?

Being honest about the limits keeps you out of trouble. A few things are harder or impossible without access to macOS or a physical Apple device.

  • Running the iOS Simulator. The simulator is macOS only, so you cannot use it from Windows or Linux. Expo Go and an Android emulator cover most day to day iteration instead.
  • Live debugging on a physical iPhone from your editor usually expects a Mac, though TestFlight lets you install and test builds on your own device without one.
  • Native modules with custom iOS build steps, or CocoaPods issues, may need manual Xcode work, best done on a rented cloud Mac.

For day to day iteration, most React Native teams test on Android locally, use Expo Go or a development build where possible, and rely on TestFlight for real iOS device testing.

Can you publish to the App Store directly from Windows?

Yes. You write and manage everything from Windows, and the actual iOS build and upload run on a cloud macOS environment. With Expo EAS it is two commands, eas build and eas submit, and with a managed platform it can be a single upload. No Apple hardware is involved on your side.

Do you have to pay for cloud iOS builds?

Usually yes, in some form. Expo EAS, cloud CI services, and rented Macs bill by build minutes, by tier, or by the hour, and a managed platform bundles the cost into its plan. Expo and GitHub Actions both offer limited free minutes that can cover very low volume. The one unavoidable cost is the Apple Developer Program at 99 dollars per year.

Is building iOS apps without a Mac against Apple's rules?

No. Apple requires that iOS apps are built and signed with its toolchain, but it does not require that you own the Mac running it. Using Expo's hosted macOS, a cloud CI machine, or a managed service is fully compliant, which is why every major React Native build provider offers it.

Can you test a React Native app on a real iPhone without a Mac?

Yes, through TestFlight. Once your build is processed in App Store Connect, you can install it on any iPhone from the TestFlight app and test the real iOS build. During development, Expo Go and development builds also let you preview on a device. What you cannot do without macOS is run the iOS Simulator or attach a native debugger from your editor.

Written by

Nicolas Ristic

Nicolas builds Releasely and writes about App Store submission, ASO, and shipping Flutter and React Native apps to the App Store and Google Play.

ShareXLinkedIn
Releasely

Ship to both stores from one workspace

Drag a build or a project folder, write release notes, push to App Store Connect and Play Console. Free to start.