Expo SDK 57 development build cannot load JavaScript bundle on Android over tunnel; DevTools also times out


I'm developing an app, a React Native application using Expo, on Ubuntu MATE. I have an Android development build installed on a physical phone, and my goal is to run the app on that phone while developing locally.

I'm experiencing a persistent problem getting the development build to connect to Metro and load the JavaScript bundle.

Environment

  • OS: Ubuntu MATE (Linux)

  • Framework: React Native with Expo Router

  • Expo SDK: 57

  • Bundler: Metro

  • Device: Physical Android phone

  • Build: EAS development build using expo-dev-client

  • Network: Expo tunnel

  • Expo Doctor: All 21 checks passed

Problems encountered

1. Development build cannot connect to Metro over the local network

Initially, The App failed to connect to the development server:

Failed to connect to /192.168.100.25:8081

The phone and computer were connected to the same Wi-Fi network. Metro was listening on port 8081.

2. Switching to the Expo tunnel did not resolve the problem

I started Expo using tunnel mode. The tunnel URL was:

https://fieotgc-manu_shifu-8081.exp.direct

The tunnel's root URL opened in a browser, and its /status endpoint returned:

packager-status:running

However, the development build still failed to connect. The error included:

Failed to connect to fieotgc-manu_shifu-8081.exp.direct/2406:da1a:e91:9302:b663:6311:f736:2d11:443

I also tested with a second phone and encountered the same problem.

3. Expo Go also failed to load the project

When I tested the project with Expo Go, I encountered:

Uncaught Error: java.io.IOException: Failed to download remote update

4. React Native DevTools also fails to open

When attempting to open the debugger, Expo CLI displays:

Failed to open the React Native DevTools.
Error: Request timed out

Troubleshooting already performed

  • Restarted Metro and recreated the Expo tunnel multiple times.

  • Tried tunnel mode instead of LAN mode.

  • Verified that the tunnel status endpoint was responding.

  • Tested the connection using a second Android phone.

  • Checked the listening ports.

  • Updated Expo dependencies using npx expo install --check.

  • Ran npx expo-doctor; all 21 checks passed.

The issue remains unresolved.

What I need help diagnosing

  1. Why can the tunnel status endpoint respond successfully while the Android app cannot connect to the development server?

  2. Could IPv6 resolution, the tunnel connection, WebSocket connectivity, or Android networking be involved?

  3. Are the failed JavaScript bundle download and DevTools timeout related, or could they be separate problems?

  4. What is the best way to identify the failing request and its underlying error without repeating basic troubleshooting steps?

I want to continue developing locally with the existing EAS development build, rather than switching to a different workflow.

-1
Oct 13 at 9:44 PM
User AvatarEmmanuel Kahugu
#android#react-native#microsoft-metro#metro-bundler#expo-router

No answer found for this question yet.