Short answer
On a release APK or AAB, the JavaScript bundle is missing: build with cd android && ./gradlew bundleRelease (AAB) or ./gradlew assembleRelease (APK), and remove org.gradle.configureondemand=true from gradle.properties if it is there, because it skips bundling. In development, start Metro with npx react-native start, then connect the device with adb reverse tcp:8081 tcp:8081, or set your computer’s IP and port 8081 in the dev settings.
Which build you’re on decides the fix
01
A release build without the JavaScript bundle
“This command uses Gradle's bundleRelease under the hood that bundles all the JavaScript needed to run your app into the AAB (Android App Bundle).” React Native, Publishing to Google Play Store
A release build must carry its JavaScript inside the app. If a tester or client sees this screen, the bundle step didn’t run. Build with ./gradlew bundleRelease or ./gradlew assembleRelease from the android folder, and check that android/app/build.gradle still points at your index file.
02
A Gradle setting skips the bundle
“Make sure gradle.properties does not include org.gradle.configureondemand=true as that will make the release build skip bundling JS and assets into the app binary.” React Native, Publishing to Google Play Store
Open android/gradle.properties and remove the line if it is there, then build again.
org.gradle.configureondemand=true03
A debug build that can’t reach Metro
“You can also iterate quickly on a device by connecting to the development server running on your development machine.” React Native, Running On Device
Debug builds load JavaScript from Metro on your computer. Start it, then forward the port over USB.
npx react-native start adb reverse tcp:8081 tcp:808104
Over Wi-Fi, the app points at the wrong address
“Type in your machine's IP address and the port of the local dev server (e.g. 10.0.1.1:8081).” React Native, Running On Device
Without a cable, open the dev menu and set the debug server host to your computer’s IP address and port 8081. The phone and computer must be on the same network.
Checked against the vendor’s docs on : React Native docs: Publishing to Google Play Store; React Native docs: Running on device.
Rather hand it over?
Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.
- from $450App Fix TicketOne reproducible bug in an existing mobile or web app, diagnosed and fixed.See scope and start
- from $450AI-Built App RescueA Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way.See scope and start
Related: Expo app crashes in production · Android blocks http:// requests · Google Play App Bundle signed with the wrong key