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.
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
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
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.
Why can the tunnel status endpoint respond successfully while the Android app cannot connect to the development server?
Could IPv6 resolution, the tunnel connection, WebSocket connectivity, or Android networking be involved?
Are the failed JavaScript bundle download and DevTools timeout related, or could they be separate problems?
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.