DevTools fails to load through proxies that don't support SSE
- Dominant language
- Dart
- Stars
- 1.7k
- Forks
- 404
- Avg merge
- 6d 17h
- Merged PRs (30d)
- 18
Description
I tried to launch DevTools in a cloud editor that doesn't support SSE (its connections will just hang indefinitely) and it failed to load (just leaving a white screen after printing the version number to the console).
The network tab looks like this:

I can't easily confirm, but I think it will be hanging on this `await` here:
https://github.com/flutter/devtools/blob/43b2f5ea102fede6aa4776510858775acc31c6df/packages/devtools_app/lib/main.dart#L28
That `init()` call tries to use storage which will be a `ServerConnectionStorage` because `DevToolsServerConnection.connect` does not return null here:
https://github.com/flutter/devtools/blob/f38f4acde909be516b3de172405d48b6b484ea70/packages/devtools_app/lib/src/config_specific/framework_initialize/_framework_initialize_web.dart#L18-L23
It doesn't return null, because in `connect()` the call to `api/ping` works fine (it's not SSE), which then unconditionally creates an `SseClient`:
https://github.com/flutter/devtools/blob/86102bdec15a0a5fb3fb70ab98e8ff4e5e50141c/packages/devtools_app/lib/src/server_api_client.dart#L28
_If_ we want to support this, I think there are two options:
1. Support WebSockets instead of SSE for this API (DWDS already has some abstractions over SSE+WebSockets that could probably be taken)
2. Change this code to detect that SSE is not responsive and return `null` (this would effectively disable the server though, which may affect some functionality)
@devoncarew @jacob314 I don't know if this is currently worth pursuing, but thought it was worth capturing the issue somewhere perhaps to come back to.
Contributor guide
Assessment
This issue has not been assessed yet.