Public beta · live on npm

BetterCodePush

Ship React Native updates while the fix still matters.

Hosted over-the-air delivery for bare React Native and Expo prebuild projects. Release from your terminal, roll out gradually, and recover without waiting for app review.

iOS & Android Expo SDK 52+ Bare React Native Optional RSA signing
checkout-mobile/production
LIVE
ACTIVE RELEASE

Checkout confirmation fix

Target1.0.0
PlatformiOS
Channelproduction
IntegrityRSA-SHA256
Rollout10%

Expand when the first cohort looks healthy.

Bundle uploadedContent-addressed artifact
Signature verifiedDigest matches native key
Serving devicesProduction · cohort 1 of 10
$npx bettercodepush deploy --platform ios --channel production --rollout 10release active
Built for the React Native stack you already use
React NativeExpoHermesEAS BuildMetro
THE RELEASE LOOP

From a merged fix to a controlled rollout.

BetterCodePush handles the release path around your JavaScript bundle while your native binary remains the trust anchor.

01

Release from the CLI

Build the matching platform bundle, upload it directly, and activate one canonical release.

02

Verify before serving

SHA-256 integrity checks are always enforced. Add RSA signatures when your app is ready for them.

03

Roll out deliberately

Start with a device cohort, watch adoption, and expand without rebuilding the native application.

04

Recover quickly

Disable one release or roll a channel back while retaining a complete audit trail.

START HERE

One setup. Then every release is a command.

Select your project type to see the exact production setup. Signing can be added now or later.

Expo SDK 52+ with prebuild/CNG. EAS Build is supported.
01

Install the CLI

Keep the release tooling local to your project so every developer and CI run uses the same version.

npm install --save-dev @bettercodepush/cli
02

Create your apps

Create an organization, one app per native platform, and a Live API key in the hosted console.

Open the production console
03

Initialize native wiring

The initializer installs the right build integration and writes the platform app IDs into your native projects.

npx bettercodepush init --build expo
npx expo prebuild --clean
04

Verify and deploy

Ship a new native build once, then deliver signed JavaScript updates to matching app versions.

npx bettercodepush doctor
npx bettercodepush deploy --platform ios --target-app-version 1.0.0 --channel production
OPTIONAL, RECOMMENDED

Turn on bundle signing before production distribution.

Your private key stays in your release environment. Only the public key is embedded into each native app.

npx bettercodepush keys generate
CLEAR BOUNDARIES

Made for native builds, not sandbox previews.

BetterCodePush changes how your native app resolves its JavaScript bundle. That gives it a dependable recovery path, and it means a real native build is required.

Read the complete setup guide
Bare React NativeiOS and Android projects
Supported
Expo prebuild / CNGExpo SDK 52 and newer
Supported
EAS BuildFor development and release binaries
Supported
Expo GoNo custom native bundle loader
Not supported
expo-updates / EAS UpdateChoose one OTA runtime
Not supported
Content-addressedArtifacts are verified against their declared SHA-256 before activation.
Native trust anchorOptional RSA public keys are embedded at native build time.
Auditable changesRelease, rollout, key, and rollback activity stays visible to your organization.
No client secretThe API key belongs in your terminal or CI, never inside the shipped app.
QUESTIONS, ANSWERED

The details that matter before your first deploy.

For command flags and troubleshooting, the CLI package is the canonical customer guide.

Yes. Expo SDK 52 and newer are supported through prebuild/CNG, including native binaries built with EAS Build. Expo Go and expo-updates/EAS Update are not supported because BetterCodePush owns the native bundle loading path.

PUBLIC BETA

Ship the fix.
Keep the release controlled.

Create an organization, add your native apps, and make the first deployment from your existing project.

Start with BetterCodePush No billing setup required during the beta.