React Native OTA updates without Expo
Most OTA tooling assumes you are on Expo. Ubriot ships over-the-air updates to bare React Native too, through ubriot-updates-rn, a standalone native client that downloads, swaps, and rolls back on its own.
One package, no Expo required
ubriot-updates-rn is a published npm package: a native OTA client for bare React Native that reuses the same Ubriot update backend and CLI.
npm install ubriot-updates-rnThe same OTA workflow, minus Expo
- OTA for bare React Native, no Expo
- Standalone client: ubriot-updates-rn
- Named channels (production, staging, etc.)
- Runtime version compatibility checks
- Download, swap, automatic rollback
- Instant rollback from the dashboard
- CLI command: ubriot update
- Same backend as the Expo path
How OTA works on bare React Native
Install the client once, then ship updates with one command.
Step 1
Install ubriot-updates-rn
Add the standalone native OTA client to your bare React Native app. No Expo, no expo-updates. Published on npm and ready to install.
Step 2
Point it at your Ubriot endpoint
Configure the client with your Ubriot update URL and runtime version. The app checks for a new bundle on launch.
Step 3
Run ubriot update
Bundle your JS layer and publish it to a channel, production, staging, or any name you choose. The same CLI that powers the Expo path.
Step 4
Download, swap, roll back
The client downloads the new bundle, swaps it in, and rolls back automatically if the update fails. Roll back any release from the dashboard too.
A CodePush alternative for bare React Native
Ran CodePush before App Center shut down? Ubriot is a direct home: JS-layer over-the-air updates without Expo, published to named channels with instant rollback, driven by ubriot update. Expo and bare RN share one backend, so the whole team standardizes on Ubriot.
Ship OTA to bare React Native today
Install ubriot-updates-rn and publish with ubriot update. No Expo required.