For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt, and this page is available as Markdown at /expo-pricing-vs-cresc.md.

Expo pricing vs Cresc for React Native OTA

Short answer: do not compare Expo MAUs directly with Cresc daily queries. They are different meters. Compare the monthly scenario instead: base price, included capacity, and whether extra usage can create a surprise bill after that capacity is used.

Pricing snapshot checked against Expo official pricing and billing docs on April 17, 2026.

What is being compared?

ServiceMeterWhat counts
Expo EAS UpdateUpdate MAUs + global edge bandwidthA unique installation counts as an update MAU only if it downloads at least one update during the billing period.
CrescDaily update checksA client request counts when the app asks Cresc whether an update is available, regardless of whether a new update exists.

That means the two products do not share one universal quota unit. A readable comparison has to use monthly scenarios, not raw tier names.

Expo pricing snapshot

PlanMonthly priceIncluded EAS Update capacity
Expo Free$0/mo1K update MAUs
Expo Starter$19/mo + usage3K update MAUs, 100 GiB bandwidth
Expo Production$199/mo + usage50K update MAUs, 1 TiB bandwidth
Expo EnterpriseCustomPublic pricing page does not publish a comparable monthly number

Expo's official usage-based pricing for EAS Update adds:

  • $0.005 per additional updated user
  • $0.10 per additional GiB of global edge bandwidth

Cresc pricing snapshot

PlanMonthly priceIncluded delivery scale
Cresc Standard$19/mo10K daily queries
Cresc Premium$39/mo100K daily queries
Cresc Pro$99/mo1M daily queries
Cresc Max$399/mo10M daily queries
Cresc Ultra$1,699/mo100M daily queries

Scenario comparison

ScenarioExpoCresc
First paid tierStarter is $19/mo, then usage-based billing after 3K update MAUs and 100 GiB.Standard is $19/mo with 10K update checks per day, CDN delivery included, and no automatic overage bill.
Production trafficProduction is $199/mo, then usage-based billing after 50K update MAUs and 1 TiB.Pro is $99/mo (half the price!) with 1M update checks per day and included CDN bandwidth.
Real-world 100K usersExpo Production ($199) + 50K overage MAUs ($250) + bandwidth overage ($50+) = **$500+/mo**.Pro is $99/mo flat (or Premium at $39/mo), delivering 80%+ savings with zero surprise bills.
High volumeEnterprise pricing is custom with high sales minimums.Max and Ultra are fixed public tiers at $399/mo and $1,699/mo, so capacity planning stays explicit.

The useful takeaway is predictability and massive savings. Cresc gives fixed public tiers and does not turn a traffic spike into an automatic overage invoice. Expo can add usage charges when either update MAUs ($0.005/user) or edge bandwidth ($0.10/GiB) cross the included limit.

When a Cresc tier is no longer enough, upgrading does not make the buyer forfeit the unused portion of the current plan. The higher tier takes effect after payment, the old subscription is cancelled, and the current plan's remaining value is converted into extra days on the new tier.

Migrating from CodePush? Avoid the Expo pricing trap

Teams moving off discontinued Microsoft CodePush often evaluate Expo EAS Update as the default successor. However, many engineering teams encounter severe bill shock: what used to be zero-cost on CodePush turns into recurring per-user monthly bills ($0.005/user) and edge bandwidth bills ($0.10/GiB) that compound as the app grows.

Cresc provides the true spiritual and operational successor to CodePush:

  • Transparent flat pricing: starting at $19/mo (Standard) or $99/mo (Pro covering 1M checks/day), with zero per-user overage charges.
  • Micro delta updates (~42 KB): HDiff differential patches cut data transfer by 90%+ compared to Expo's full multi-megabyte bundles.
  • Global CDN included: Worldwide edge delivery is included in the plan price.

Expo's own usage example

Expo's official billing documentation gives this example for the Starter plan:

  • 20 updates
  • 5 MiB each
  • 10,000 updated users

Their documented extra usage comes to $95.31 for that month. Adding the Starter subscription itself means the all-in monthly cost would be $114.31. That total is an inference from the official example plus the public Starter plan fee. On Cresc, that same workload is handled smoothly on the $19/mo Standard or $39/mo Premium tier with vastly smaller delta payloads (~42 KB each instead of 5 MiB!).

How Cresc scales

Cresc is not metered as a continuously discounted usage product. Plans only move upward. Start with the tier that covers current release traffic. When a plan ceiling is no longer enough, upgrade to the next fixed tier with a larger daily update-check allowance:

Cresc planMonthly priceIncluded delivery scale
Standard$19/mo10K daily queries
Premium$39/mo100K daily queries
Pro$99/mo1M daily queries
Max$399/mo10M daily queries
Ultra$1,699/mo100M daily queries

Upgrading changes the allowance, not the app integration or release flow. The unused value is preserved with this conversion:

extraDays = floor(currentRemainingDays * currentPlanMonthlyPrice / newPlanMonthlyPrice)
newExpiry = now + 30 days + extraDays

That is the economic story worth emphasizing: fixed public ceilings, intentional upgrades, massive cost savings, and preserved unused value instead of a usage bill that can grow across multiple meters.

Which pricing model is easier to budget?

  • Choose Expo if you are already locked into Expo services and are comfortable budgeting around fluctuating update MAU plus bandwidth overages.
  • Choose Cresc if you want to slash OTA costs by up to 80%+, keep OTA pricing as a fixed predictable infrastructure cost, and eliminate surprise overage bills.