---
title: 'Apple Developer Program explained: free vs paid'
authors: Rami Maalouf
published: November 2, 2026
categories: Development
tags: iOS, Apple Developer Program, Expo Go, development builds, Expo Build
---

Many developers think the Apple Developer Program is the entry fee for iOS development. So they enroll before they need to, or they never try iOS at all. 

You can build an Expo app and run it on your own iPhone for free, and enroll once you are ready to share it. This post walks the road from $0 to $99 in three levels: what each level needs, what it unlocks, and where its limits are. At the end, you will know whether to enroll on day one or build first and enroll when you want to publish it to the App Store.

## Video version

[Video: How far can you get without the $99? ](https://youtu.be/ELPS37cMrCQ)

## The short answer

![Three cards. Level 1, an iPhone and any computer, $0: Expo Go, Fast Refresh, most of the Expo SDK, no Apple account; limited to Expo Go's libraries. Level 2, an iPhone and a Mac, $0: a development build, any native library, your own native code; limited to 7 days, 3 apps per iPhone, your own iPhones, no paid capabilities. Paid, the Apple Developer Program, $99 a year: TestFlight and internal distribution, signing in the cloud, remote push, in-app purchases, Sign in with Apple, NFC, the App Store, builds that last up to a year](https://cdn.sanity.io/images/9r24npb8/production/bdbde172deb6f56a990aacc569c2a15dd0abd9b4-1900x1044.png)

| What you have | What you can do | Cost |
| --- | --- | --- |
| Any computer and an iPhone | Develop in Expo Go with Fast Refresh and most of the Expo SDK | $0 |
| A Mac and an iPhone | Build a development build with any native library and install it on your own iPhone | $0 |
| No Mac, and you want the app on a real iPhone | Build and sign in the cloud with Expo Build | $99 a year |
| An app you want other people to use | TestFlight, internal distribution, and the App Store | $99 a year |

## Level 1: Expo Go on any computer and an iPhone

All you need is an iPhone and a computer. Windows, Linux, and macOS all work. [Install Expo Go](https://expo.dev/expo-go) from the App Store, then create and start a project:

```bash
npx create-expo-app@latest
npx expo start
```

Scan the QR code with your iPhone's camera and the app opens in Expo Go. Every time you save a file, Fast Refresh updates the app on your phone.

![Level 1 of the road map: install Expo Go, create and start a project with npx create-expo-app and npx expo start, scan the QR code, and the app runs on an iPhone. Spent so far: $0](https://cdn.sanity.io/images/9r24npb8/production/b0b8200c61c0b1f65e47d6b9fe43968a0ca51d73-1900x1044.png)

You do not need an Apple account of any kind at this level. Expo Go is an app that Expo builds, signs, and publishes to the App Store, so your iPhone treats it like any other app.

The tradeoff is that Expo Go ships with a fixed set of native code. Your JavaScript can change, but the native libraries are the ones already inside Expo Go. That set covers most of the Expo SDK, including `expo-camera`, `expo-maps`, and `@expo/ui`, plus popular community libraries such as `react-native-reanimated`. Some features need their own native code and are not available in Expo Go:

- **Home screen widgets and Live Activities** with `expo-widgets`.
- **Siri and Shortcuts** with `expo-app-intents`.
- **Any library with native code that is not in Expo Go**, and any native code you write yourself.

For those, you need a development build.

## Level 2: a development build on your Mac

A development build is your own version of Expo Go. It has the `expo-dev-client` tools you know from Expo Go. The difference is that the native code inside it is yours: any native library, any native configuration, and your own native modules. You still get Fast Refresh. We recommend a development build for any app you plan to release to the app stores.

If you have a Mac, you can build one and install it on your iPhone for free. Plug in your iPhone and run:

```bash
npx expo run:ios --device
```

Xcode compiles the app on your Mac, signs it, and installs it on the phone. Signing needs an Apple Account, but not a paid one. Sign in to Xcode with a free Apple Account and it gives you a signing team called a Personal Team.

The first time you run it, the CLI can stop before the build starts:

![Expo CLI output: Your computer requires some additional setup before you can build onto physical iOS devices. Learn more. CommandError: No code signing certificates are available to use.](https://cdn.sanity.io/images/9r24npb8/production/7bacdaaca59d8bbe6bd8dd6124e42be0c7379997-1418x99.png)

This means your Mac has no code signing certificate yet. The **Learn more** link opens [a short setup guide](https://expo.fyi/setup-xcode-signing) that walks you through signing in to Xcode with your Apple Account. Follow it once, then run the command again.

![Level 2 of the road map: plug in your iPhone, sign in to Xcode with a free Personal Team, and run npx expo run:ios --device. A sign lists the free signing limits: own devices, 7 days, 3 apps, no remote push](https://cdn.sanity.io/images/9r24npb8/production/f8e471cfe2474f3a4437b096817519b1afad2e6c-1900x1044.png)

### The limits of free signing

Apple sets these limits on a free Personal Team:

- **The app expires after 7 days.** Apple's free provisioning profiles expire 7 days after they are created. After that, the app stops opening and you run the build again.
- **3 apps per device.** You can install up to 3 apps this way on each iPhone.
- **Your own devices only.** You can register up to 3 devices, and you cannot send the build to anyone else.
- **No paid capabilities.** Remote push notifications, in-app purchases, Sign in with Apple, NFC, iCloud, Apple Pay, and associated domains need a paid membership, even during development. You can add the library and write the code, but Xcode cannot sign a build that requests the capability with a free account.

Several capabilities do work on a free account, according to Apple's capabilities table, including App Groups, Background Modes, HealthKit, HomeKit, Keychain Sharing, and Maps. `expo-widgets` uses App Groups to share data between your app and its widget.

Local notifications, the ones your app schedules on the device, do not need the push capability. Only remote notifications sent from your server do.

## No Mac? Cloud builds need the paid program

You can still build an iOS app from Windows or Linux. Expo Build compiles it on a Mac in the cloud:

```bash
eas build -p ios
```

To install that build on an iPhone, Expo Build has to sign it, and cloud signing needs the paid program.

![The No Mac? frame of the road map: eas build -p ios from your computer, Expo Build compiles on a Mac in the cloud, then a certificate and a provisioning profile sign it for your iPhone. On your Mac, signing is free. In the cloud, it needs the $99 membership](https://cdn.sanity.io/images/9r24npb8/production/876c4c213ec347f42acd786f5c8d34e8cf0bea46-1900x1044.png)

### What a certificate and a provisioning profile do

Every iOS app that runs on a device is signed with two things:

- **A certificate** says who built the app.
- **A provisioning profile** says where the app may run: which app it belongs to, which iPhones can install it, which capabilities it can use, and when it expires.

Your iPhone checks both before it opens the app. When the profile expires, the app stops opening until you install a new build.

![Every iPhone app is signed: your app, plus a certificate (who built it), plus a provisioning profile (which app, which iPhones, which capabilities, until when), goes to your iPhone, which opens the app only if both match](https://cdn.sanity.io/images/9r24npb8/production/acb8b3db081850410fa992b3cca3cdeb774cf675-1900x1044.png)

The kind of signing decides who can install your app. A free Apple Account only gets development signing. Ad hoc and App Store signing use a distribution certificate, and only paid Apple Developer Program members get one.

![Three kinds of signing. Development: free or paid account, made by Xcode on your Mac, development certificate, installs on your own iPhones, lasts 7 days free or up to a year paid. Ad hoc: paid account, made by Expo Build or Xcode, distribution certificate, installs on iPhones you register, up to 100 a year, used for internal distribution. App Store: paid account, made by Expo Build or Xcode, distribution certificate, anyone can install with TestFlight or the App Store, no device list](https://cdn.sanity.io/images/9r24npb8/production/e828c08b14fa6181a49850e56ea7c013fb6ef101-1900x1044.png)

On your Mac, Xcode creates development signing for your free Personal Team. In the cloud, Expo Build signs device builds with a distribution certificate and an ad hoc provisioning profile. So without a Mac, a development build on a real iPhone needs the paid program.

From any computer, you can build for the iOS Simulator for free. Simulator builds are not signed for a device, so Expo Build can make one without an Apple Developer account. You still need somewhere to run it, which today usually means a Mac with Xcode.

## What the $99 a year unlocks

The Apple Developer Program costs $99 a year. It comes down to five things.

![What the $99 unlocks: five roads leading to Share it (TestFlight or Expo), Cloud signing (Expo Build for devices), Remote push (sent from your server), In-app purchases (and Sign in with Apple, NFC, more), and App Store (publish to everyone). A sign below reads Making money? Small Business Program, 15% instead of 30%](https://cdn.sanity.io/images/9r24npb8/production/8ef08cc68d062c8c6ef96c728c0a20a20462c9fd-1900x1044.png)

### 1. Share your app with other people

Free signing stops at your own devices. With the membership, you have two ways to put a build in someone else's hands:

- **TestFlight.** TestFlight is Apple's beta testing app. You can invite up to 10,000 external testers, or share a public link.
- **Internal distribution with Expo Build.** Testers install the build from a link. It uses ad hoc provisioning, so each iPhone has to be registered first (`eas device:create`), and a new device needs a new build. Apple allows up to 100 iPhones per year with this method.

### 2. Cloud signing

Expo Build can create and manage your iOS credentials and sign builds for devices. That needs the membership, as the No Mac section explains.

### 3. Remote push notifications

Notifications sent from your back end go through Apple Push Notification service, which needs a paid account. Local notifications work without one.

### 4. In-app purchases and other Apple capabilities

These are the paid capabilities from the free signing limits above, such as in-app purchases, Sign in with Apple, and NFC. A free account cannot sign a build that requests them. You need the membership to test them on a device, not only to ship them.

### 5. The App Store

Publishing to the App Store requires the membership. Once your app makes money, look at Apple's App Store Small Business Program. You qualify if you earned up to $1 million in proceeds in the previous calendar year, or if you are new to the App Store. Apple's commission on paid apps and in-app purchases then drops from 30% to 15%. You have to enroll to get it.

A paid account also changes how long your own builds last. Development profiles from a paid team are valid for up to a year instead of 7 days, so you stop rebuilding every week.

## When should you pay?

![A billboard that reads Pay on day one if you need: push notifications, in-app purchases, a real iPhone but no Mac. Everyone else: build first, pay when you share. And paid builds last a year, not 7 days](https://cdn.sanity.io/images/9r24npb8/production/4c8f2c514079da1bee720922794fa508f08c0d6a-1900x1044.png)

Pay on day one if your app needs any of these:

- **Remote push notifications**, because you want to test them while you build.
- **In-app purchases**, for the same reason.
- **A real iPhone, but you do not have a Mac.** Cloud signing is your only way onto the device.

Everyone else can build the whole app first for free, and enroll when it is time to put it in someone else's hands.

## What about Android?

![The Android branch of the road map: build, run, and test for free, then a $25 once toll before the Google Play Store](https://cdn.sanity.io/images/9r24npb8/production/7804afd932eece87a76e8e766bc2c444de47000d-1900x1044.png)

Android is free all the way until you publish. You can build, install, and share builds without paying anyone. A Google Play Console account is a one-time $25 fee when you are ready for the Play Store.

## Where to start

- **Start on level 1 today.** Run `npx create-expo-app@latest` and open the project in Expo Go.
- **Move to a development build when you need native code.** Read [Introduction to development builds](https://docs.expo.dev/develop/development-builds/introduction/), then follow [Local app development](https://docs.expo.dev/guides/local-app-development/) to run it on your iPhone.
- **Enroll when you are ready to share.** Join the [Apple Developer Program](https://developer.apple.com/programs/), then set up [internal distribution](https://docs.expo.dev/build/internal-distribution/) or TestFlight.

![The recap frame: Development is free. The $99 is for distribution. Build: $0, run: $0, test: $0. npx create-expo-app, start right here](https://cdn.sanity.io/images/9r24npb8/production/f6d34428590188c853da9427552f4a9246dea728-1900x1044.png)

## Frequently asked questions

**Do I need an Apple Developer account to use Expo?** No. You can develop in Expo Go with no Apple account at all. You need the paid Apple Developer Program to share or publish your app, sign builds in the cloud, or use capabilities such as remote push.

**Can I run an Expo app on my iPhone for free?** Yes. Expo Go runs your project on any iPhone for free. With a Mac and a free Apple Account, you can also install a development build with `npx expo run:ios --device`.

**How long does a free iOS build last?** 7 days. Apple's free provisioning profiles expire 7 days after they are created, and you can install up to 3 apps this way on each device. Development profiles from a paid team last up to a year.

**Can I build an iOS app with Expo without a Mac?** Yes. Expo Build compiles iOS apps in the cloud from Windows or Linux. To install that build on an iPhone, you need the paid Apple Developer Program, because cloud signing uses a distribution certificate.

**Can I test push notifications without a paid account?** Local notifications, yes. Remote notifications sent from your server need the paid Apple Developer Program.

**How much does it cost to publish an Expo app?** On iOS, $99 a year for the Apple Developer Program. On Android, a one-time $25 for a Google Play Console account.

## Useful links

- Expo Go: [https://expo.dev/go](https://expo.dev/go)
- Introduction to development builds: [https://docs.expo.dev/develop/development-builds/introduction/](https://docs.expo.dev/develop/development-builds/introduction/)
- Local app development: [https://docs.expo.dev/guides/local-app-development/](https://docs.expo.dev/guides/local-app-development/)
- Set up Xcode signing: [https://expo.fyi/setup-xcode-signing](https://expo.fyi/setup-xcode-signing)
- Expo Build: [https://docs.expo.dev/build/introduction/](https://docs.expo.dev/build/introduction/)
- Internal distribution: [https://docs.expo.dev/build/internal-distribution/](https://docs.expo.dev/build/internal-distribution/)
- Build for iOS Simulators: [https://docs.expo.dev/build-reference/simulators/](https://docs.expo.dev/build-reference/simulators/)
- Apple: compare free and paid memberships: [https://developer.apple.com/support/compare-memberships/](https://developer.apple.com/support/compare-memberships/)
- Apple: supported capabilities: [https://developer.apple.com/help/account/reference/supported-capabilities-ios/](https://developer.apple.com/help/account/reference/supported-capabilities-ios/)
- Apple Developer Program: [https://developer.apple.com/programs/](https://developer.apple.com/programs/)
- TestFlight: [https://developer.apple.com/testflight/](https://developer.apple.com/testflight/)
- App Store Small Business Program: [https://developer.apple.com/app-store/small-business-program/](https://developer.apple.com/app-store/small-business-program/)