Launching BetterCodePush
I just launched BetterCodePush, a hosted over-the-air update service for React Native. It is live on npm and in public beta.
The pitch is one line: ship React Native updates while the fix still matters.
Why build this
If you shipped React Native apps in the last few years you probably relied on Microsoft’s CodePush. Then Microsoft retired App Center and CodePush along with it, and everyone got to pick between self-hosting the old server, moving into Expo’s ecosystem, or just eating the app review wait every time a one-line JS fix needed to go out.
None of those felt great to me. A crash in production should not sit behind a multi-day review queue when the fix is a JavaScript change. So I built the thing I wanted: a hosted service that owns the boring parts (storage, CDN, release management) and gets out of your way.
What it does
- Works with bare React Native and Expo prebuild. Expo SDK 52+ through prebuild/CNG, including binaries built with EAS Build. Expo Go is not supported because BetterCodePush owns the native bundle loading path.
- Releases from your terminal. One CLI to publish, inspect, and manage releases.
npx bettercodepush doctorverifies your wiring before you ship anything. - Staged rollouts. Deploy to 10% of devices, watch the first cohort, then expand. If something looks wrong, disable the release and subsequent update checks recover — no deleting history, no scrambling.
- Optional RSA signing. The private key stays with your release tooling; only the public key ships in the app. And your API key never ships in the app at all — mobile clients talk to a public CDN, the CLI holds the credentials.
Getting started is a few commands:
npm install --save-dev @bettercodepush/cli
npx bettercodepush init --build expo # or --build bare
npx bettercodepush doctor
npx bettercodepush deploy --platform ios --target-app-version 1.0.0 --channel production
Try it
The console is at console.bettercodepush.com — create an organization, one app per platform, grab a Live API key, and you can ship your first OTA update in an afternoon.
If you try it and something is rough, I want to hear about it. This is the fun part of a launch: real apps hitting the thing you built.