CLIReleasing Updates
React Native Release
Release OTA updates for React Native apps using the Turbopush CLI — runs react-native bundle internally and deploys to your deployment.
Automatically bundles and releases React Native apps. Runs react-native bundle internally.
npx turbopush release-react <appSlug> <platform>yarn turbopush release-react <appSlug> <platform>pnpm turbopush release-react <appSlug> <platform>Quick Example
Just run:
npx turbopush release-react myapp-ios iosyarn turbopush release-react myapp-ios iospnpm turbopush release-react myapp-ios iosExample: Specifying the version manually
If you don't want Turbopush to infer the version from your project files, you can manually specify it with the --targetBinaryVersion flag:
npx turbopush release-react myapp-ios ios --targetBinaryVersion "1.2.3"yarn turbopush release-react myapp-ios ios --targetBinaryVersion "1.2.3"pnpm turbopush release-react myapp-ios ios --targetBinaryVersion "1.2.3"You can also use version ranges with this flag:
npx turbopush release-react myapp-android android --targetBinaryVersion ">=1.2.0 <2.0.0"yarn turbopush release-react myapp-android android --targetBinaryVersion ">=1.2.0 <2.0.0"pnpm turbopush release-react myapp-android android --targetBinaryVersion ">=1.2.0 <2.0.0"In this case, the value you provide will be used and Turbopush will not attempt to read the version automatically from your configuration files.
Parameters
| Parameter | Required | Default | Description |
|---|---|---|---|
appSlug | Yes | - | The app slug from npx turbopush app add |
platform | Yes | - | android or ios — determines bundling behavior |
--deploymentName, -d | No | Staging | Target deployment |
--description, --des | No | - | "Change log" sent to the client |
--disabled, -x | No | false | Prevents download until activated via patch or dashboard |
--mandatory, -m | No | false | Marks update as required |
--noDuplicateReleaseError | No | false | Warns instead of errors on duplicate content |
--rollout, -r | No | 100 | Percentage of users (1-100) eligible for this update |
--targetBinaryVersion, -t | No | auto | Binary version(s) this update targets. Supports semver ranges. Auto-detected from Info.plist (iOS) or build.gradle (Android) |
--bundleName, -b | No | auto | Output bundle name. Default: main.jsbundle (iOS), index.android.bundle (Android) |
--development, --dev | No | false | Unminified dev build |
--entryFile, -e | No | auto | Entry JS file. Default: index.ios.js/index.android.js or index.js |
--gradleFile, -g | No | - | Custom build.gradle path (Android) |
--plistFile, -p | No | - | Custom Info.plist path (iOS) |
--plistFilePrefix, --pre | No | - | Plist prefix for env-specific files (e.g., STAGING → STAGING-Info.plist) |
--sourcemapOutput, -s | No | - | Sourcemap output path |
--outputDir, -o | No | temp | Output directory of generated bundle, sourcemaps and assets |
--privateKeyPath, -k | No | - | Path to private key for code signing |
How is this guide?