Expo Classic/Turtle CLI standalone and offline iOS build still trying to contact development server: "Could not connect to development server"

I am using Expo Classic and Turtle CLI to make local standalone iOS builds of my React Native app.

I want my app to be “offline”: not do over the air updates, have all assets bundled with it, and generally have everything needed bundled into the simulator or binary build and not reach out to any servers to run the app.

I have been referencing the following Expo pages to create this type of build:

  • “Building Standalone Apps on Your CI”
  • “Hosting Updates on Your Servers”
  • “Offline Support”

My understanding from the Expo documentation is that while I need to run a local server to build my app locally, I shouldn’t need this server to be running after the build is done if I configure my app to not do over the air updates and have bundled assets. I am using the following settings in my app.json file to accomplish this:

“expo”: {
“updates”: {
“enabled”: false,
“checkAutomatically”: “ON_ERROR_RECOVERY”
“fallbackToCacheTimeout”: 0
},
“assetBundlePatterns”: [
“assets/*”
]
}

The problem is that after I finish my build, kill my local server, and install/run my build in either the iOS Simulator or binary build on a device, I immediately see an error message that says “Could not connect to development server” rather than my app loading. The problem doesn’t happen if I keep my local server that I used to create the build running.

Am I misunderstanding the documentation and it is not possible to have a totally standalone build with all required files/assets bundled? Or are the app.json settings not actually working as expected?

This is how I am making my build:

  1. From the expo project folder run: expo export --public-url http://MY.IP.ADDRESS:8000 --dev
    dist directory is successfully created.
  2. From the dist directory run: python -m SimpleHTTPServer 8000
  3. From the project folder run:
    EXPO_IOS_DIST_P12_PASSWORD=MY.PASSWORD
    turtle build:ios
    –team-id MY.TEAM.ID
    –dist-p12-path …/…/Certificates.p12
    –provisioning-profile-path …/…/…/Downloads/PROJECT_Ad_Hoc_Provisioning_Profile.mobileprovision
    –allow-non-https-public-url
    –public-url http://MY.IP.ADDRESS:8000/ios-index.json
    Build binary is successfully created.
  4. Kill server running on port 8000.
  5. Install and run build; see error, app will not load.
  6. Restart server on port 8000 and run build; app will load.