EAS Update pricing explained (2026)#
EAS Update is Expo's hosted service for over-the-air (OTA) updates to React Native and Expo apps. Its bill has three moving parts: a monthly plan, a charge for each update user above the plan's allowance, and bandwidth above a quota. This page explains each part and works through the cost at 10,000, 100,000 and 1,000,000 users.
All EAS figures come from expo.dev/pricing and its Markdown version, checked October 2026. Rollbird publishes this page; Rollbird's own pricing is at the end, kept separate from the explanation.
The plans#
| Plan | Monthly price | Update MAUs included | Bandwidth included |
|---|---|---|---|
| Free | $0 | 1,000 | 100 GiB |
| Starter | $19 plus usage | 3,000 | 100 GiB |
| Production | $199 plus usage | 50,000 | 1 TiB |
| Enterprise | Custom | 1,000,000 | 40 TiB |
The Free plan has no overage: usage is limited to what it includes, so an app past 1,000 update users needs a paid plan.
What counts as an update MAU#
Expo defines it this way: a user who downloads one or more updates in a billing cycle counts as one monthly active user (MAU). A user who opens the app but downloads no update that month doesn't count.
Two practical consequences:
- Shipping more often doesn't multiply the count. A user who downloads five updates in a month is still one MAU.
- Shipping at all is what makes a user count. In a month with no update, the per-user charge is close to zero; in a month where you ship to everyone, nearly every active user counts.
How overage is charged#
Above the plan's allowance, each extra update user is billed on graduated tiers. Each rate applies only to the users inside its band, like tax brackets.
| Update MAUs (Starter and Production) | Price per extra MAU |
|---|---|
| Up to 200,000 | $0.005 |
| 200,001 to 500,000 | $0.00375 |
| 500,001 to 1,000,000 | $0.0034 |
| 1,000,001 to 2,000,000 | $0.003 |
| 2,000,001 to 3,000,000 | $0.0024 |
| 3,000,001 to 6,000,000 | $0.0022 |
The tiers continue down to $0.00085 per MAU above 100 million. Enterprise starts its overage after 1,000,000 included users, at its own rates.
Bandwidth#
Bandwidth over the quota costs $0.10 per GiB. The quota grows with your audience: on Starter, Production and Enterprise, every update user above the plan's allowance adds 40 MiB to the included bandwidth.
That means overage starts when the average update user downloads more than about 30 to 40 MiB a month:
| Plan and size | Included bandwidth | Average per user before overage |
|---|---|---|
| Starter at 10,000 MAU | 100 GiB + 7,000 × 40 MiB ≈ 373 GiB | about 38 MiB |
| Production at 100,000 MAU | 1 TiB + 50,000 × 40 MiB ≈ 2,977 GiB | about 30 MiB |
| Production at 1,000,000 MAU | 1 TiB + 950,000 × 40 MiB ≈ 38,133 GiB | about 39 MiB |
A large bundle shipped twice a month can cross that line. The worked examples below leave bandwidth out, then show one case where it matters.
Worked examples#
The cheapest plan at each size, before bandwidth:
| Update MAUs | Cheapest plan | Calculation | Monthly cost |
|---|---|---|---|
| 1,000 | Free | Included | $0 |
| 10,000 | Starter | $19 + 7,000 × $0.005 | $54 |
| 100,000 | Production | $199 + 50,000 × $0.005 | $449 |
| 1,000,000 | Production | $199 + 150,000 × $0.005 + 300,000 × $0.00375 + 500,000 × $0.0034 | $3,774 |
Why those plans: at 100,000 users, Starter would cost $19 + 97,000 × $0.005 = $504, more than Production's $449. At 1,000,000 users Starter would cost $3,829 against Production's $3,774.
The 1,000,000 line, step by step: $199 for the plan, $750 for users 50,001 to 200,000, $1,125 for users 200,001 to 500,000, and $1,700 for users 500,001 to 1,000,000.
With bandwidth. Take the 100,000-user app and say each user downloads two updates of 20 MiB in a month. That is about 3,906 GiB against a quota of about 2,977 GiB, so about 929 GiB of overage at $0.10, or roughly $93. The month costs about $542 instead of $449. The exact figure depends on how Expo measures the transferred bytes, so treat it as an illustration.
When EAS Update is the right choice#
- Your app is on Expo and EAS Build. EAS Update is built into that workflow: channels in
eas.jsonbuild profiles, runtime versions, and the Expo dashboard. - Your audience is small. Up to 1,000 update users it costs nothing, and up to 3,000 it costs $19.
- You use its rollout tools. EAS supports per-update percentage rollouts, branch-based rollouts, and rollback to an earlier or embedded update (Expo docs).
- You want one vendor. Build, submit and update from the same account and bill.
When the per-user model costs more#
The bill tracks how many people download your updates, so it rises with every user you gain, whether or not your release process changed. A team that grows from 10,000 to 100,000 users goes from $54 to $449 a month for the same work. Teams in that position usually compare a flat-priced hosted service against running their own server; the CodePush alternatives page lists both kinds.
How Rollbird prices instead#
Rollbird is a hosted OTA update service for bare React Native and Expo apps, with staged releases, free rollback, and no per-user pricing. Its plans are priced on apps, storage, seats and release history:
| Plan | Monthly price | Apps | Storage | Members | Production releases |
|---|---|---|---|---|---|
| Free | $0 | 1 | 250 MB | 1 | 3 a month |
| Indie | $7 | 3 | 2 GB | 1 | Unlimited |
| Team | $15 | 10 | 10 GB | 3 | Unlimited |
| Studio | $29 | Unlimited | 50 GB | 10 | Unlimited |
Annual billing costs ten times the monthly price. At 10,000, 100,000 or 1,000,000 users, an app on Indie still pays $7 a month. Rollback is always free and never counts against a limit. See pricing for the current plans.
Where EAS still wins against Rollbird: it is free below 1,000 update users, it is part of the Expo toolchain, and its rollout tooling goes further, with branch-based rollouts and percentage changes from the CLI. The Rollbird vs EAS Update comparison covers setup, concepts and migration.