Expo EAS Update Pricing: What Growth Actually Costs
Calculate Expo EAS Update costs as your app grows. Compare MAU and bandwidth charges with Bundle Drop’s unlimited MAU plans.
Written by George FeanFounder and maintainer of Bundle Drop
At one million updated installations, Expo Update's published Production subscription and graduated MAU charges total $3,774 per month before bandwidth overages. Smaller patches can reduce transferred bytes. They do not remove the charge for an installation that downloaded an update.
That is the pricing decision worth examining: whether your OTA subscription should grow with the number of installations receiving a release, even when the release is small.
This article is published by Bundle Drop. Prices were checked on November 7, 2026. It explains Expo Update pricing, formerly EAS Update, through one million updated installations; it is not a comparison of the entire Expo platform or a negotiated Enterprise quote.
An active app user is not necessarily a billable updated user
Expo's billing documentation defines an updated user as a unique app installation that downloads at least one update during the billing period. That installation counts once even if it downloads several releases. An installation that opens the app without downloading an update does not enter this count.
An app with a million active installations therefore does not automatically incur a million updated-user charges. But when a release reaches all million during that period, it does. Model the audience that actually receives updates, rather than copying your analytics MAU count into a spreadsheet without checking the definition.
The subscription is the start of the calculation
Expo's current public pricing includes these allowances:
| Plan | Monthly subscription | Included updated installations | Base update transfer |
|---|---|---|---|
| Free | $0 | 1,000 | 100 GiB |
| Starter | $19 | 3,000 | 100 GiB |
| Production | $199 | 50,000 | 1 TiB |
| Enterprise | Custom | Contract-dependent | See current offer |
Free has no updated-user overage pricing. Paid self-service plans add graduated charges beyond their included users. Through one million installations, the marginal rates are $0.005 up to 200,000, $0.00375 from 200,001 to 500,000, and $0.0034 from 500,001 to 1,000,000. Each rate applies only to its band, rather than retroactively to every installation.
Expo subscriptions include other services and build credits. A team already paying for Production should separate its existing subscription from the incremental cost of Update usage. Moving OTA delivery does not automatically remove a subscription still needed for builds or other services.
See the audience meter separately from transfer
Move the audience. Watch the meter.
Monthly estimate: Expo Update $449. Bundle Drop $25.
1 project · 3 GB shared OTA storage · Unlimited MAU
Compare Bundle Drop plans- Expo subscription
- $199
- Additional updated installs
- $250
- Transfer / allowance
- 1,953.1 / 2,977.1 GiB
- Additional transfer
- $0
- Bundle Drop MAU charge
- $0
The calculator chooses the lowest public Free, Starter, or Production subtotal for the entered Update scenario. Bundle Drop automatically uses the lowest current plan that fits the project and retained-storage sliders, with monthly billing on both sides. It does not quietly compare an annual Bundle Drop discount against a monthly Expo bill. This compares Update costs only, so a lower-priced Expo plan may not include other features your team needs.
The transfer control is the total MiB downloaded per updated installation across the entire month. For example, four downloads averaging 5 MiB produce 20 MiB. Use measured compressed transfers, including patch and asset-reuse behavior; source bundle size is not the same as network traffic.
Large audiences can reach thousands without a bandwidth overage
Assume every listed installation downloads an update and averages 20 MiB of total update transfer during the period:
| Updated installations | Production subscription | Additional updated-user charges | Transfer overage | Modeled monthly subtotal |
|---|---|---|---|---|
| 200,000 | $199 | $750 | $0 | $949 |
| 500,000 | $199 | $1,875 | $0 | $2,074 |
| 1,000,000 | $199 | $3,575 | $0 | $3,774 |
These are public self-service examples, not claims about every customer's invoice. Expo advertises Enterprise volume pricing and publishes an Enterprise MAU schedule; an actual contract can change the comparison. Ask for that offer before treating the self-service figure as your inevitable cost.
The 40 MiB allowance changes the bandwidth calculation
For each updated installation above a paid plan's included MAU allowance, Expo includes another 40 MiB of transfer. Chargeable transfer is what remains after subtracting both the plan's base allowance and this additional allocation. The excess costs $0.10/GiB. Expo's bandwidth guide explains the units and the role of compressed assets.
At one million updated installations on Production, the allowance is 1,024 GiB plus 950,000 × 40 MiB: 38,133.375 GiB. At 20 MiB per installation, total transfer is 19,531.25 GiB, so the example has no transfer overage. At 100 MiB, transfer becomes 97,656.25 GiB and adds approximately $5,952.29, bringing the modeled Production subtotal to $9,726.29. The calculator can select Starter instead: at that transfer level, its larger allocation from additional paid users produces a slightly lower modeled total of $9,690.09. Plan labels alone do not determine the cheapest Update subtotal.
Expo supports bundle diffing and asset reuse. Those optimizations deserve credit: use their actual effect in the transfer input. Neither means an updated installation stops counting toward the audience meter.
Bundle Drop removes the MAU meter, not every capacity decision
Every Bundle Drop plan includes unlimited monthly active users. Capacity follows projects, teammates, channels, and shared OTA storage. The calculator assumes one organization, one member, and two channels, then finds the lowest monthly plan for your projects and retained storage. Free stays free while that capacity fits, even as updated installations grow; increasing the updated-install slider does not add a Bundle Drop MAU charge.
That is a different commercial model, not a claim that the products have identical entitlements or that infrastructure has no limits. Choose enough capacity for your retained releases and organization. Transfer and retained storage are different quantities: delivering the same bundle repeatedly does not mean storing a new copy for each installation. Why we do not price by MAU explains the decision; pricing lists current limits.
You can keep Expo development and EAS Build while using Bundle Drop for OTA delivery. Switching the runtime update layer still requires reviewed integration and a new native release; follow the Expo integration guide. Existing binaries do not switch providers through a JavaScript upload alone.
Budget for updated installations, actual transfer, retained storage, and services you already buy. If Expo's integrated workflow justifies the resulting bill, keep it. If audience growth is the part making OTA expensive, compare a capacity-priced update service before assuming that meter is unavoidable.
Common questions
About the author
George Fean
Founder and maintainer of Bundle Drop
George builds Bundle Drop and writes about the compatibility, delivery, rollout, and recovery boundaries behind React Native OTA updates.
GitHub profile