React Native

React Native Expo "Manifest URL Not Found" Local Development Error

· by DebuggedIt

Quick answer

"Manifest URL not found" means the Expo Go app on your device couldn't successfully reach your local development server to fetch the app's manifest — this is...

"Manifest URL not found" means the Expo Go app on your device couldn't successfully reach your local development server to fetch the app's manifest — this is fundamentally a network connectivity issue between your physical device and your development machine, and the fix depends on identifying exactly what's blocking that connection.

The Problem

Scanning the QR code or entering the connection URL in Expo Go fails:

Something went wrong
Manifest URL not found: exp://192.168.1.42:8081

The development server (via expo start) is clearly running and shows no errors on the machine itself, pointing toward a connectivity issue between the device and that server, rather than the server itself being broken.

Why It Happens

Several distinct network-related causes commonly produce this exact error:

  • The physical device and development machine aren't actually on the same Wi-Fi network, or are on a network with client isolation enabled (common on guest networks, some corporate networks, and certain routers by default) that prevents devices from directly communicating with each other even while nominally connected to the same network name
  • A firewall on the development machine blocking incoming connections on the Expo development server's port (commonly 8081, or 19000/19001 for older Expo CLI versions) from other devices on the network
  • The development machine's displayed local IP address in the QR code/URL is incorrect or stale — particularly relevant on machines with multiple network interfaces (Wi-Fi and Ethernet simultaneously connected, or an active VPN), where Expo might advertise an IP address that isn't actually the correct, currently-relevant one for your physical device to reach
  • A VPN active on either the development machine or the physical device interfering with local network discovery and connectivity, even when both devices are genuinely on the same physical Wi-Fi network

The Fix

First, confirm both devices are genuinely on the same network and can reach each other at all, testing with a simple, protocol-agnostic check like ping if possible, or by testing a basic HTTP connection from the physical device's own browser directly to your development machine's displayed IP and port:

# From the physical device's mobile browser, visit the exact address shown in the Expo CLI output
http://192.168.1.42:8081

If this fails even in a plain browser, the issue is confirmed to be network-level connectivity, not anything Expo-specific.

Check your development machine's firewall for rules that might be blocking incoming connections on the Expo development server's port:

# macOS - check firewall status and allow incoming connections for node/expo if prompted
# Windows - check Windows Defender Firewall inbound rules for the relevant port
# Linux - check iptables/ufw rules

If you're on a network with suspected client isolation (a public network, certain guest Wi-Fi, some corporate networks), use Expo's tunnel mode instead, which routes the connection through a public tunneling service rather than relying on direct local network connectivity between the two devices:

npx expo start --tunnel

Tunnel mode is generally slower than a direct local connection (since traffic routes through an external tunneling service rather than directly over your local network), but it reliably works around local network restrictions that block direct device-to-device connectivity, making it a practical fallback specifically for networks where direct connections genuinely aren't possible.

If you suspect the advertised IP address itself is incorrect (common with multiple active network interfaces), explicitly check and, if needed, manually specify the correct IP address Expo should advertise:

# Confirm your machine's actual, currently correct local IP
ifconfig | grep "inet "  # macOS/Linux
ipconfig                  # Windows

Compare this against what Expo is actually displaying in its connection URL/QR code — if they don't match, explicitly set the correct host:

npx expo start --host 192.168.1.42

If a VPN is active on either device, temporarily disable it and retry, since VPNs frequently interfere with local network discovery and direct device-to-device connectivity even when both devices are genuinely on the same physical network — many VPN configurations route all traffic through the VPN tunnel by design, which can prevent the kind of direct local-network communication Expo's non-tunnel mode relies on.

Still Not Working?

If tunnel mode also fails to connect, or connects but behaves unreliably, check whether a corporate or restrictive network is blocking the specific tunneling service's traffic as well, not just direct local connections — some highly restrictive corporate networks block a broad range of external services by default, including tunneling infrastructure, in which case neither local network mode nor tunnel mode will succeed, and testing from a completely different network (a personal mobile hotspot, a home network) is the most direct way to confirm whether the current network's own restrictions are the fundamental blocker, independent of anything about your specific Expo configuration.