Integrate Revopush OTA with Expo 
This guide will help you to set up your Expo project and make first Revopush release.
Create an application 
- Go to Applications and add an application

- Enter application name and save it

- As a result, you will see your application in the list with two deployments available out of the box

Setup Revopush SDK 
Revopush SDK doesn't work with Expo Go because it requires native code changes.
| Expo SDK | Revopush SDK | Revopush Expo plugin | 
|---|---|---|
| 52+ | 1.3.0 | 1.0.0 | 
Install Revopush SDK 
npx expo install @revopush/react-native-code-pushInstall Revopush Expo plugin 
npx expo install @revopush/expo-code-push-pluginSetup Expo config plugin 
If you don't have, add Expo dynamic config to your project
Go to app settings to get Deployment keys:

Extend Plugin section in your Expo config with:
module.exports = ({ config }: { config: ExpoConfig }) => ({
    ...config,
    plugins: [
        ["@revopush/expo-code-push-plugin", {   
            ios: {  
                CodePushDeploymentKey: 'YOUR_DEPLOYMENT_KEY',   
                CodePushServerUrl: 'https://api.revopush.org'
            }, 
            android: { 
                CodePushDeploymentKey: 'YOUR_DEPLOYMENT_KEY', 
                CodePushServerUrl: 'https://api.revopush.org'
            } 
        }] 
    ],
});Run prebuild command to generate native ios and android folders
npx expo prebuild --cleanWARNING
If you faced with ios target version error, add expo-build-properties plugin and set ios deploymentTarget to 15.5
JS configuration 
Configure the SDK in the JavaScript layer of your expo app (minimal setup):
import codePush from "@revopush/react-native-code-push"; 
function RootLayout() {}
export default codePush(RootLayout); Configure CLI 
After registration, install the Revopush CLI.
npm install -g @revopush/code-push-cliLogin to Revopush CLI using the following command:
revopush loginThis will launch a browser, asking you to authenticate with either your GitHub or Google account. This will generate an access key that you need to copy/paste into the CLI (it will prompt you for it). You are now successfully authenticated and can safely close your browser window.
Opening your browser...
Visit https://app.revopush.org/cli-login?hostname=<YOUR_HOST_NAME> and enter the code
Enter your access key:Read more about Revopush CLI
Make a release 
Release process contains from 2 steps: generating bundle and releasing it to Revopush.
Android 
Run expo export command to generate production HermesJS bundle and assets:
npx expo export:embed \
  --platform android \
  --dev false \
  --reset-cache \
  --bundle-output ./build-android/index.android.bundle \
  --assets-dest ./build-android \
  --bytecodeTo release this bundle run:
revopush release <APP_NAME> ./build-android <TARGET_VERSION> -d <APP_ENVIRONMENT> --mandatoryiOS 
Run expo export command to generate production HermesJS bundle and assets:
npx expo export:embed \
  --platform ios \
  --dev false \
  --reset-cache \
  --bundle-output ./build-ios/main.jsbundle \
  --assets-dest ./build-ios \
  --bytecodeTo release this bundle run:
revopush release <APP_NAME> ./build-ios <TARGET_VERSION> -d <APP_ENVIRONMENT> --mandatoryTest locally 
To test Revopush on your simulator or device you need to run application in release mode.
For Android:
npx expo run:android --variant release --no-bundlerFor iOS:
npx expo run:ios --configuration ReleaseWARNING
Every time you change Revopush settings inside app config you need to run npx expo prebuild --clean to apply these changes on native side
Troubleshooting 
If you see this message in logs:
The error message: Update is invalid - A JS bundle file named "null" could not be found within the downloaded contents. Please check that you are releasing your
CodePush updates using the exact same JS bundle file name that was shipped with
your app's binary.
You will probably need to remove expo-updates package.
npm uninstall expo-updatesThen remove expo-updates specific app config properties and run prebuild to uninstall native expo-updates dependencies
npx expo prebuild --clean