Documentation
On this page

Rollbird vs Stallion#

Stallion and Rollbird are both hosted services that push new JavaScript bundles to React Native apps already installed from the App Store and Google Play. Stallion has its own SDK, CLI and console, with a free plan to 10,000 monthly active users. Rollbird, a hosted React Native OTA update service, has flat plans that don't count users. This page is for teams weighing a Stallion alternative: it walks one release through both tools command by command, maps Stallion's buckets and releases to Rollbird's channels, compares cost at three app sizes, and lists where Stallion is the stronger pick.

Rollbird publishes this page. Stallion details come from its pricing page and documentation, checked October 2026.

At a glance#

TopicStallionRollbird
Price modelPlans by monthly active users (MAU) with download and upload bandwidth allowances; Pro allows overage, Free is cappedFlat plans priced on apps, storage and seats; users and bandwidth are not metered
Free tier10,000 MAU and 50 GB of downloads a month, unlimited collaborators1 app, 3 production releases a month and 1 member, any number of users
Client libraryreact-native-stallion (MIT) with withStallion(App)@rollbird/react-native with Rollbird.wrap, built on Hot Updater's client
CLIstallion-cli: login, publish-bundle, release-bundle, update-release, generate-key-pairrollbird: login, init, release, rollback, status
Native setupEdit MainApplication and AppDelegate, copy a project ID and app token into strings.xml and Info.plistrollbird init writes the native configuration and signing key
Platforms per publishOne: --platform=ios or --platform=androidBoth detected platforms, unless you pass --platform
Release targetingThe app version you enter when promotingNative fingerprint by default, or app version
Staged rolloutStarts at 0%; raise it in the console or with update-release; it can't be loweredSet with rollbird release --rollout, adjustable in the dashboard
RollbackConsole or update-release --is-rolled-back=truerollbird rollback, always free and never blocked by plan limits
Differential updatesYes, patch updates; limited on the Free planNo
React Native0.69 or newer0.76 is the verified baseline
Expoexpo-stallion-plugin, then export and publish each platform's bundleConfig plugin for Expo 50 or newer; rollbird release builds the bundles

One release on both platforms, staged to 10%#

Here is the same job in each tool: ship one JavaScript fix to iOS and Android production users, start at 10%, go to everyone, then undo it. The Stallion column follows its publish, release and update references and its production guide. The Rollbird column follows the CLI reference.

StepStallionRollbird
Before the first uploadCreate a bucket in the Stallion consoleNothing; the channel was embedded by rollbird init
Build and upload iOSstallion publish-bundle --upload-path=<org>/<project>/<bucket> --platform=iosnpx rollbird release --production --rollout 10 --yes builds, signs and uploads both platforms
Build and upload Androidstallion publish-bundle --upload-path=<org>/<project>/<bucket> --platform=androidIncluded in the command above
Make it a production releasePromote each bundle in the console with the target app version (admins only), or run stallion release-bundle --project-id=<id> --hash=<hash> --app-version=<version> --ci-token=<token> once per platformIncluded: --production publishes to the production channel
Start at 10%The new release begins at 0%; run stallion update-release --project-id=<id> --hash=<hash> --rollout-percent=10 --ci-token=<token> per platform, or use Manage Release in the consoleIncluded: --rollout 10
Go to 100%update-release again with --rollout-percent=100, per platformRaise the percentage in the dashboard
Undo itupdate-release --is-rolled-back=true per platform, or roll back in the consolenpx rollbird rollback

release-bundle and update-release only work with a CI token from the project settings; without one, promotion and rollout happen in the console. In Rollbird, the same rollbird release command runs on a laptop after rollbird login and in CI with a project-bound ROLLBIRD_TOKEN; see CI/CD.

Two rollout rules from Stallion's phased rollout guide are worth knowing before you plan a release. A percentage can be raised, paused or rolled back, but not lowered. And a user outside the newest release's percentage gets the previous release only if that one is at 100%; otherwise they get no update.

How the concepts map#

StallionRollbirdNotes
OrganizationOrganizationBoth hold members and projects.
Project, linked by StallionProjectId and StallionAppToken in native filesProject, linked by rollbird init and the public key in rollbird.jsonRollbird has no token to paste into native files.
One project per app flavour (dev, QA, production)One project, one channel per build: rollbird init --channel preview, then --channel productionA binary only requests the channel it was built with.
Bucket of uploaded bundles, used by the in-app testing modalThe preview channelTesters run a build made with --channel preview and receive its releases.
Bundle, one per platform, identified by a hashOne release holding the iOS and Android bundles
Release: a bundle promoted for an app versionA production release, matched by native fingerprint or app versionWith the fingerprint default, a release only reaches binaries with the same native code.
--is-mandatory=truerollbird release --forceRollbird reloads after download unless reloadOnForceUpdate is false.
stallion generate-key-pair and --private-keyProvisioned by rollbird init; every release is signed
CI tokenProject-bound API token in ROLLBIRD_TOKEN

What each costs at 10,000, 100,000 and 1,000,000 users#

Stallion prices come from its pricing page, checked October 2026. Its Pro plan allows usage beyond 100,000 users and bills the overage monthly, but the page doesn't publish the overage rate, so this table doesn't guess one. Rollbird prices come from the pricing section.

Monthly active usersStallionRollbird
10,000$0 on Free, which stops at 10,000 users and 50 GB of downloads a month$0 on Free for one app shipping up to 3 production releases a month; otherwise $7 on Indie
100,000$64 a month on Pro, or $51 a month billed yearly; 2 TB of downloads included$7 on Indie for up to 3 apps
1,000,000Pro plus overage at an unpublished rate, or Enterprise at a custom price$7 on Indie for up to 3 apps

Rollbird's bill changes with apps, storage and seats, not users: Indie is $7 a month for 3 apps, 2 GiB and one member; Team is $15 for 10 apps, 10 GiB and 3 members; Studio is $29 for unlimited apps, 50 GiB and 10 members. Yearly billing costs ten months.

Moving from Stallion to Rollbird#

Run one update client per app. Stallion and Rollbird both choose the bundle the app loads at launch, so remove Stallion's wiring before rollbird init adds its own. The Stallion column comes from its installation, bundle signing and Expo guides.

FileStallion lines to removeWhat Rollbird uses
package.jsonreact-native-stallion, plus expo-stallion-plugin and stallion-cli if installed@rollbird/react-native, installed by rollbird init, and @rollbird/cli as a dev dependency
MainApplicationimport com.stallion.Stallion and Stallion.getJSBundleFile(...) in getJSBundleFile() or jsBundleFilePathBundle entry point wired by rollbird init
strings.xmlStallionProjectId, StallionAppToken, StallionPublicSigningKeyChannel and fingerprint, written by rollbird init; the public signing key goes in AndroidManifest.xml
AppDelegateThe Stallion import and StallionModule.getBundleURL() in bundleURLRelease bundle URL wired by rollbird init
Info.plistStallionProjectId, StallionAppToken, StallionPublicSigningKeyChannel, public signing key and fingerprint, written by rollbird init
App root componentwithStallion(App), and any useStallionUpdate or restart callsRollbird.wrap({ projectKey })(App); Rollbird.reload() for a custom restart
app.json (Expo)The expo-stallion-plugin entry with projectId, appToken and publicSigningKeyThe @rollbird/react-native plugin entry, registered by rollbird init

Then:

  1. Uninstall the Stallion packages and run pod install for iOS.
  2. Remove the native lines above, so the entry points match a fresh React Native template.
  3. Run npx rollbird login, then npx rollbird init --channel preview, and read the diff before committing it.
  4. Replace withStallion(App) with Rollbird.wrap, rebuild, and check a preview release and a rollback on a device with Getting started.
  5. Run npx rollbird init --channel production, build the store binary, and submit it.
  6. In CI, replace publish-bundle, release-bundle and update-release with one rollbird release --production --yes.

For example, remove the SDK with npm:

bash
npm uninstall react-native-stallion

Builds already on users' phones keep asking Stallion for updates until they install the new store version. Keep your Stallion project serving until most users have upgraded.

Where Stallion is the better choice#

Where Rollbird fits#

To try it, follow Getting started from installation to a verified preview update and rollback. For a wider view of hosted and self-hosted options, see CodePush alternatives in 2026.