React Native OTA updates without the MAU tax.
Rollbird is a hosted React Native OTA update service for bare React Native and Expo apps, with unlimited users on every plan from $7/month.
Free plan · no card · unlimited users
MAU pricing bills you for growing.
Rollbird prices on apps, storage, and seats. Never on the people using what you built.
EAS Update list prices at expo.dev/pricing, cheapest plan at each size, checked September 2026. Excludes bandwidth overage.
Your users aren't a billing metric. Your app grew. Your bill didn't.
Linked in minutes. One rebuild, then OTA forever.
--production when it holds up.- rollbird release · fieldkit → production
- Publish a new release to the "production" channel?
- Yes
- Bundled iOS966 KB · 12.4s
- Bundled Android968 KB · 11.8s
- Signed2 bundles
- Uploaded1.9 MB · 2.1s
- PublishedRelease #4 · 100% rollout
- Live in production
- https://app.rollbird.dev/p/fieldkit/r/4
Everything a release needs. Nothing it doesn't.
Before you ship your first update.
- When do users actually get an update?
- The app checks on launch and downloads in the background, so the update runs the next time someone opens the app. Mark a release as forced and it reloads as soon as it lands.
- What counts as a production release?
- Only publishing to the production channel. Publish as many preview releases as you like — they never count, and neither do rollbacks. What a plan bounds is how much preview history we keep: the most recent 10 preview releases per channel on Free, 100 on Indie, all of them on Team and Studio. Older preview bundles are deleted and the storage comes back; the release itself stays in your history.
- Does it work with Expo?
- Yes, and it works without it.
rollbird initreads a bare app'sios/andandroid/projects and writes the native config itself. On an Expo app it registers a config plugin instead, so the channel, key and fingerprint are written again on everyexpo prebuildrather than being thrown away by it. Tested on Expo SDK 53 and 57. Expo Go can't run custom native code, so updates need a development or release build. - When do I have to submit to the stores again?
- When your native code changes: a new native module, a React Native upgrade, or anything else that changes the build. JavaScript and assets ship over the air.
- What happens if an update crashes the app?
- The device falls back to the bundle it was running before and reports it, so the release page shows the crash count next to the installs.
- Who can publish?
- Anyone with a token you issue, scoped to read or write and bindable to a single app. Revoke it and that pipeline stops publishing.
Priced on what we store, not who you reach.
- ✓Unlimited production releases
- ✓3 apps
- ✓1 team member
- ✓2 organizations
- ✓2 GB storage
- ✓Preview history: 100 releases / channel
- ✓Cancel anytime and your live releases keep serving
- ✓3 team members · 10 apps
- ✓Unlimited releases
- ✓5 organizations
- ✓10 GB storage
- ✓Unlimited preview history
- ✓Cancel anytime and your live releases keep serving
- ✓Unlimited apps · 10 members
- ✓Unlimited releases
- ✓Unlimited organizations
- ✓50 GB storage
- ✓Unlimited preview history
- ✓Cancel anytime and your live releases keep serving
Or start on Free: 1 organization, 1 app, 3 production releases a month, and preview releases that never count — we keep the last 10 per channel. No card.
✓Rollback is always free and never counts against anything.
Ship the fix now, not after review.
Unlimited users, free rollback, flat pricing from $7/month, however big you grow.
Ship your first updateFree plan · no card required