Back to Knowledge
Updated Sep 2026

Building for iOS

Want to ship an iPhone app? Here's what you actually need in 2026: whether you really need a Mac, the modern Expo workflow, the Apple Developer Program, and how to get from idea to TestFlight with an AI assistant doing most of the typing.

1The Reality Check: Do You Need a Mac?

Short answer: it depends on your path

Apple's own tools (Xcode

Xcode

Apple's IDE for developing iOS, macOS, watchOS, and tvOS apps. Required for Apple development. Includes Interface Builder, simulators, and Instruments for profiling.

"Like Apple's walled garden has its own construction tools. You need this to build for iPhone."

and the iOS Simulator) only run on macOS. But if you build with Expo

Expo / React Native

A framework for building native iOS and Android apps with React. `npx create-expo-app@latest` gives you Expo Router out of the box, EAS Build compiles your app in the cloud, and `npx expo prebuild` generates native projects when you need them (the old "eject" and managed-vs-bare split are gone).

"Like React for your phone. Write JavaScript, get native apps."

, its cloud build service (EAS Build) compiles your iOS app on Expo's Macs, so you can build and submit from Windows or Linux.

You need a Mac for

  • • Native Swift / SwiftUI development in Xcode
  • • The iOS Simulator
  • • Local iOS builds (npx expo run:ios)
  • • Deep native debugging and profiling

You can skip the Mac with

  • • Expo + EAS Build (cloud iOS builds)
  • • A real iPhone for testing instead of the Simulator
  • • EAS Submit to push builds to App Store Connect
  • • Trade-off: slower feedback loop than a local Simulator

Budget advice: If you're serious about iOS, a used Apple Silicon Mac mini is the cheapest comfortable setup. If you're testing an idea, start with Expo + EAS + your own iPhone and buy hardware only once the app earns it.

2Your Options: Expo, Bare React Native, or Swift

If you already write React for the web, Expo lets you reuse those skills for iOS and Android from one codebase. It's the path React Native itself recommends for new apps.

Expo (Recommended)

Pros

  • • Current release: Expo SDK 57
  • • Expo Router: file-based routing, like the Next.js app/ folder
  • • Cloud builds and store submission (EAS)
  • • Over-the-air JS updates
  • • Custom native code via config plugins and prebuild

Cons

  • • Another platform (EAS) to learn and budget for
  • • Very unusual native needs take extra work

Best for: Almost everyone reading this. MVPs, side projects, and plenty of production apps.

Native Swift

Swift

Apple's modern language for building iOS, macOS, watchOS, and tvOS apps. Fast, safe, and the go-to for iPhone app development.

"Like Apple's secret sauce. If you want to build for iPhone, you speak Swift."

/ SwiftUI

Pros

  • • Day-one access to every new Apple API
  • • Best possible performance and polish
  • • Widgets, watchOS, visionOS without bridges

Cons

  • • Requires a Mac and Xcode
  • • iOS only: Android is a second codebase
  • • New language if you come from the web

Best for: Apple-only products and apps that live on the newest platform features.

"Ejecting" is gone. Old tutorials say to start with Expo and "eject" to bare React Native if you need native code. Expo now calls the managed-vs-bare split a deprecated concept. Instead it uses Continuous Native Generation (CNG): your app.json and config plugins describe the native project, and npx expo prebuild generates the ios/ and android/ folders whenever you need them.

In practice: add the native library, add its config plugin, rebuild. You never leave Expo.

3Apple Developer Program

$99 USD per year

You need a paid Apple Developer Program membership to publish on the App Store, use TestFlight, and (for most Expo workflows) put your app on a real iPhone at all. Google Play, for comparison, is a one-time $25 fee.

What membership unlocks

  • • App Store distribution
  • • TestFlight beta testing
  • • App Store Connect access
  • • Push notifications and in-app purchases
  • • Installing Expo Go or a development build on your iPhone

What works without it

  • • Writing code and learning
  • • Running the iOS Simulator (Mac required)
  • • Building and testing the Android version
  • • Previewing the web version of an Expo app

Heads up on Expo Go: On iOS, Expo's docs now have you build your own copy of Expo Go with npx eas-cli@latest go and install it through TestFlight, which needs an active membership. No Mac and no membership yet? Prototype on Android or in the browser first, then join when you're ready to test on an iPhone.

4Testing Your App

iOS Simulator (Mac only, free)

Ships with Xcode from the Mac App Store

Advantages

  • • Free and instant
  • • Every iPhone and iPad screen size
  • • Fastest iteration loop
  • • No membership needed

Limitations

  • • Camera and some sensors aren't real
  • • Performance doesn't match a phone
  • • Gestures feel different with a mouse

After installing Xcode, add the command line tools too:

Terminal (macOS)

xcode-select --install

Physical iPhone or iPad

Real hardware for accurate results

Advantages

  • • Real performance, camera, GPS, sensors
  • • Accurate touch and gestures
  • • Works without a Mac via EAS builds

Two ways to run your app

  • • Expo Go: quick sandbox for standard Expo libraries
  • • Development build: your own app shell, needed once you add custom native code

Build a development build in the cloud

eas build --platform ios --profile development

5Cloud Builds with EAS

EAS (Expo Application Services) is to mobile what Vercel is to web: you push, it builds on their machines, and it hands you something installable. EAS Build handles code signing and certificates, which is the part of iOS development that burns the most beginner hours.

One-time setup

npm install --global eas-cli
eas login
eas build:configure

Build

eas build --platform ios      # or: android, all

Pricing: EAS has a free plan with limited build capacity plus paid tiers. Limits change, so check expo.dev/pricing. With a Mac you can also build locally for free.

6What It Really Costs

Apple Developer Program

Required for TestFlight, App Store, and on-device testing

$99/year

Google Play Console (if you ship Android too)

One-time registration

$25 once

Xcode + Simulator

Mac App Store

Free

Expo + Expo Router

Open source

Free

EAS Build / Submit

Free plan with limits; paid tiers for more builds

Free to start

A Mac

Optional with EAS; a used Apple Silicon Mac mini is the budget pick

Varies

A test iPhone

Strongly recommended before launch; your own phone counts

Varies

Cheapest real path to the App Store: the phone you already own + Expo + EAS's free plan + the $99/year membership. No Mac required.

7Quick Start Guide

1

Create the app

You'll need Node.js

Node.js

A runtime that lets you run JavaScript outside of a web browser. It's the engine that powers most modern dev tools, including Claude Code.

"Like installing a game console. You need the console (Node) before you can play any games (run tools)."

installed (a current LTS like Node 24). The template comes with Expo Router already set up.

Terminal

npx create-expo-app@latest my-app
cd my-app
2

Start the dev server

Terminal

npx expo start

On a Mac, press i to open the iOS Simulator. Otherwise press a for an Android emulator, w for the web, or scan the QR code with Expo Go.

3

Build screens with your AI

Routes live in the app/ folder, just like Next.js. Try: "Add a tab layout with Home and Settings screens using Expo Router, and a settings toggle that persists." Tell Claude Code you're on Expo SDK 57 so it doesn't reach for outdated APIs.

4

Build for iOS in the cloud

Terminal

npm install --global eas-cli
eas login
eas build:configure
eas build --platform ios

EAS walks you through signing in to your Apple Developer account and creating certificates.

8Common Traps

Following "eject" tutorials

Anything that tells you to eject is out of date. Use config plugins and npx expo prebuild (Continuous Native Generation).

Editing ios/ by hand, then running prebuild

With CNG, the ios/ folder is generated. Manual edits get overwritten. Put native changes in app.json or a config plugin instead.

AI code for an old SDK

Assistants trained on older Expo versions suggest deprecated packages. State your SDK version in CLAUDE.md and point the AI at docs.expo.dev.

Leaving signing to the last day

Apple account enrollment, certificates, and App Store review all take time. Do a TestFlight build early, not the night before launch.

Secrets in the app bundle

Anything shipped in a mobile app can be extracted. Keep API keys on your server (a Next.js API route or FastAPI backend) and call that instead.

Need a backend? Your Expo app can call the same API as your website. Build it in Next.js on Vercel, or in Python with the Python stack.

Ready to build for iOS?

Start with Expo, build in the cloud, and buy hardware only when the app earns it.