Expo support with a config plugin
ExpoSDK 0.4.0CLI 0.4.0
FireOTA now works in Expo apps (SDK 50+) with development and release builds and EAS Build. A config plugin re-applies the native setup on every prebuild.
Expo SDK 50 and newer are supported with development and release builds (npx expo run:android, EAS Build). Expo Go is not supported, because it cannot load native code.
npx expo install @fireota/react-native npm install --save-dev @fireota/cli npx fireota init
What fireota init does in an Expo project
- Adds the config plugin to app.json, so every expo prebuild and EAS Build re-applies the native change. android/ and ios/ don't need to be committed.
- Wraps your root component with withFireOTA: the root layout (app/_layout.tsx) with expo-router, otherwise registerRootComponent(App).
- Uses expo.version from app.json as the runtime version.
{ "expo": { "plugins": ["@fireota/react-native"] } }Publishing
fireota publish bundles Expo apps with expo export:embed and the same entry point as the native build, expo-router included.
expo-updates must not be installed alongside FireOTA, because both replace the bundle at launch. The plugin stops the build if it finds it; set { "allowExpoUpdates": true } in the plugin options while migrating.