Releasing updates for Expo apps
Expo projects do not use aether release-react: it bundles through the React Native community CLI, which Expo apps do not ship. Bundle with npx expo export:embed, Expo’s own bundler entry point, then upload the folder with aether release.
This flow is maintained as docs/RELEASING.md in the aether-expo-plugin repository; when that file changes, this guide must be updated to match.
1. Bundle into a folder named CodePush
Section titled “1. Bundle into a folder named CodePush”The folder name is a protocol requirement, not a convention: devices look for the update signature at CodePush/.codepushrelease and hash file paths under a CodePush/ prefix. The CLI refuses to sign any other folder name.
iOS:
rm -rf build/CodePush && mkdir -p build/CodePushnpx expo export:embed \ --platform ios \ --dev false \ --bundle-output build/CodePush/main.jsbundle \ --assets-dest build/CodePushAndroid:
rm -rf build/CodePush && mkdir -p build/CodePushnpx expo export:embed \ --platform android \ --dev false \ --bundle-output build/CodePush/index.android.bundle \ --assets-dest build/CodePushUse the bundle filename your binary expects: main.jsbundle on iOS, index.android.bundle on Android.
2. Release the folder
Section titled “2. Release the folder”aether release MyApp build/CodePush 1.2.0 -d StagingThe third argument targets the binary version of the builds that should receive the update, as a semver version or range. To sign, add the private key; the signature is written into the folder before upload:
aether release MyApp build/CodePush 1.2.0 -d Staging --privateKeyPath keys/private.pemSigned updates need the matching publicKey prop in your plugin configuration.
3. Verify and promote
Section titled “3. Verify and promote”Run the release build and watch the update arrive with aether debug ios or aether debug android. When Staging looks good:
aether promote MyApp Staging Production