Expo服务不可用时,我的React Native分离应用会受何影响?能否自建Bundle?
Hey there, let's break down your questions step by step—this is a common concern for folks building with Expo, so great to ask upfront!
First: Will my Expo-dependent app stop working if Expo shuts down?
It depends on how you've deployed your app:
- If you're using Expo Go for testing: Yes, Expo Go relies entirely on Expo's servers to load and run your JS bundle, so those apps would fail if the service goes down.
- If you've built a standalone APK/IPA (via EAS Build or
expo build:android): No way! These standalone builds include the Expo Runtime directly in the app package. By default, your JS bundle is embedded right into the APK/IPA too—so even if Expo's servers vanish, your app will keep running perfectly, unless you specifically set up OTA updates pointing to Expo's servers.
Can I store the JS bundle locally or on my own server, completely independent of Expo?
Absolutely! In fact, embedding the bundle in your standalone build is the default behavior. And if you want to host the bundle on your own server (for custom OTA updates, for example), that's fully supported too—no ties to Expo required.
Step-by-step to make your APK use your own bundle (local or self-hosted)
Scenario 1: Embed the bundle directly in the APK (100% local, most reliable)
This is the default for standalone builds, but if you've tweaked OTA settings before, here's how to confirm/enforce it:
- Open your
app.jsonorapp.config.jsand make sure theupdatessection disables remote updates:"updates": { "enabled": false } - Rebuild your APK using EAS Build or
expo build:android. This package will now include your JS bundle and all assets directly—once installed, it won't call any external services to run.
Scenario 2: Host the bundle on your own server for custom OTA updates
If you want the flexibility to push updates without re-submitting to the Play Store, but don't want to use Expo's services:
- Generate your offline bundle and assets:
Run this command to export a standalone bundle:
You'll find theexpo export --platform androidandroid-index.bundleand all associated assets in thedistfolder. - Deploy to your server: Upload everything in the
distfolder to your own server, ensuring the bundle is accessible via HTTPS (e.g.,https://your-server.com/expo-bundle/android-index.bundle). - Update your app config to point to your server:
Modify theupdatessection inapp.json/app.config.js:
The"updates": { "enabled": true, "url": "https://your-server.com/expo-bundle/" }urlshould be the root path where your bundle and assets live—Expo's Runtime will automatically fetch the latest bundle from this location. - Rebuild your APK: Use EAS Build or
expo build:androidto create a new build. From now on, your app will load the bundle from your server, with zero dependency on Expo's infrastructure.
Quick extra notes
- You don't need to eject from Expo Managed Workflow to do any of this—all steps work seamlessly in Managed mode.
- Standalone builds (whether with embedded or self-hosted bundles) are fully self-contained. Even if Expo disappears tomorrow, these apps will keep running as normal.
内容的提问来源于stack exchange,提问作者Mizlul

