Expo app integration with React Native Stallion
Expo integration guide - Learn how to migrate your Expo app from EAS Updates or Expo Updates to React Native Stallion (Stallion Software) for faster, affordable OTA updates. Includes npm install -g expo-cli setup instructions.
Note:
Full Expo support requires minimum React Native Stallion SDK version 2.3.0.
Expo Integration with React Native Stallion
Introduction
Thinking about switching from Expo Updates or EAS Updates? Whether you're looking for more control, better pricing, or faster Over-the-Air (OTA) updates, React Native Stallion is a lightweight and developer-friendly alternative.
This guide shows how to migrate your Expo app to React Native Stallion using the prebuild approach. If you're currently using Expo Updates, you'll find the transition smooth and well worth the benefits.
Prerequisites
Before integrating React Native Stallion with your Expo app, ensure you have Expo CLI installed. You can install it globally using:
npm install -g expo-cli
Alternatively, you can use npx expo commands without global installation, which is the recommended approach for most projects.
Step 1: Run Expo Prebuild
First, generate the native iOS and Android folders using Expo's prebuild command:
npx expo prebuild
This will create the ios/ and android/ directories, converting your project into a prebuild-compatible structure—no full eject required.
Step 2: Follow Native Installation Steps
Now that your native folders are generated, follow the native installation guide to install and configure React Native Stallion SDK in both Android and iOS.
Step 3: Add Custom Metro Configuration
Create a metro.config.js file at the root of your project to define aliases and ensure custom resolution works correctly:
const { getDefaultConfig } = require("@expo/metro-config");
const path = require("path");
const projectRoot = __dirname;
const config = getDefaultConfig(projectRoot);
config.resolver.alias = {
...config.resolver.alias,
"@": path.resolve(projectRoot),
};
module.exports = config;
Step 4: Add Babel Configuration
Create or update the babel.config.js file:
module.exports = function (api) {
api.cache(true);
return {
presets: ["babel-preset-expo"],
plugins: [
[
"module-resolver",
{
root: ["./"],
alias: {
"@": "./",
},
},
],
],
};
};
Step 5: Install Required Packages
Install the following packages (use latest versions):
npm install --save-dev \
@react-native-community/cli \
@react-native/metro-config \
babel-plugin-module-resolver \
babel-preset-expo
Or with Yarn:
yarn add -D \
@react-native-community/cli \
@react-native/metro-config \
babel-plugin-module-resolver \
babel-preset-expo
Step 6: Publish Your Bundle with Custom Entry File
If you're using Expo Router, your entry file will likely be:
node_modules/expo-router/entry.js
Use the following command to publish your bundle with React Native Stallion:
npx stallion publish-bundle \
--upload-path=nimbus-apps/nimbus-consumer-app/expo \
--platform=ios \
--release-note="Migrated from Expo Updates" \
--entry-file=<your-custom-entry-file>
For example for Expo router apps the entry file should be node_modules/expo-router/entry.js
Step 7: Proceed with Production Setup
Everything else should work as expected from here. You can continue with the production deployment steps outlined in the production usage guide.
Looking for a fast, affordable, and flexible alternative to Expo Updates? Learn why developers are switching to React Native Stallion and how it unlocks better OTA workflows.
Related Resources
- Installation Guide - Complete setup instructions for React Native Stallion
- Patch Updates - Get 98% smaller updates with differential patching
- Production Usage - Deploy your Expo app to production
- Expo Updates Alternative Blog - Detailed comparison with Expo Updates