When connecting via the mobile app or a browser over an unstable mobile network (e.g. international roaming with full signal strength but high latency/packet loss), the frontend’s websocket connection setup fails almost instantly and repeatedly, rather than degrading gracefully or retrying the specific failed request.
Steps to reproduce:
-
Connect to a Home Assistant instance via Nabu Casa remote access (or direct) while on a mobile network with full signal bars but poor underlying connection quality (observed on roaming networks specifically).
-
Log in successfully (authentication completes).
-
The frontend immediately attempts to establish the websocket connection and pull full state.
-
Connection is dropped, and the app shows “Unable to connect. Retrying in X seconds” almost instantly — even loading a lightweight page like /config/info, which has no dashboard cards or history data, shows the same behavior once past login.
Expected behavior:
Since signal strength (bars) does not reflect actual link quality, and the initial state sync is done as a single long-lived websocket session, any brief interruption forces a full restart of the connection and state fetch. It would help if the frontend could:
-
Retry the websocket handshake with backoff instead of failing outright on the first drop
-
Fetch initial state incrementally/in smaller chunks rather than one large sync, so a partial success can be resumed rather than restarted
-
Distinguish more clearly in the UI between “server unreachable” and “connection unstable, retrying”
Additional context:
Confirmed via direct terminal access (TeamViewer) to the Home Assistant host during the failures that Supervisor, all containers, and networking were fully healthy (ha resolution info returned no issues, docker ps showed all containers Up, ha network info showed working internet). The problem was isolated entirely to the client-side connection over an unstable roaming network, not the server.