I'm seeing a consistent issue across multiple Flutter apps, not just one project.
Whenever the user's mobile device (Android or iOS) is connected to specific VPN providers, the Flutter app fails to establish a connection with Firebase services (Firestore, Auth, Storage). This happens even when the VPN location is the same country.
The app instantly switches to “offline mode” and logs show SSL handshake failures.
Errors seen across all apps:
SSLHandshakeException: Connection closed by peer
net::ERR_CONNECTION_CLOSED
net_error -100 / -200
Firestore repeatedly outputs:
W/Firestore: (25.1.4) [WatchStream]: Stream closed with status:
Status{code=UNAVAILABLE, description=Channel shutdownNow invoked, cause=null}
YouTube player (WebView-based or plugin-based) also fails to load, giving similar TLS/connection closed errors.
Observations:
- The issue only appears when the device is connected to certain VPNs (ExpressVPN, PlanetVPN, Nord, etc.).
- Works perfectly without VPN.
- Works for some VPN servers, fails for others (even in the same country).
- The errors indicate Firebase / Google servers closing the connection, not the client
Any official guidance or best practices for handling Firebase + VPN users in production would be greatly appreciated.