Desktop app: main webview hangs (~daily), watchdog kill takes 30–60 min
Version: Claude Code Desktop 2.1.119 (auto-update channel: latest)
Platform: Windows 11 Pro 26200, Electron app at %APPDATA%\Claude\claude-code\2.1.119
Frequency: 5 hangs in 5 days (4/24, 4/25 x2, 4/27, 4/28)
Today's Sentry event ID: c9ea80aeeccb4eefa6cd5f2a2dc1de2a
Symptom
- Chat UI goes completely blank/frozen
- Background CCD agent sessions continue to run normally (visible in
main.log:[CCD] Session ... workflow ... endedlines keep streaming the whole time the UI is dead) - OS reports the windows as
Responding=True, so the hang is internal to the renderer JS, not the Electron message loop - No Crashpad minidump — pure JS hang, no native crash
Watchdog behavior
main.log eventually emits:
[info] Main webview is unresponsive, will kill and reload
[error] Sentry caught: Main webview became unresponsive
…but only after ~48 minutes of dead UI in today's instance. The watchdog timeout / kill threshold appears far too lax for what is effectively a soft-lockup the user must wait through.
Likely trigger (today)
Last renderer log entries before going silent (claude.ai-web.log):
13:45:20 [error] REACT_QUERY_CLIENT 503 overloaded_error /api/bootstrap/{org}/system_prompts
13:45:21 [error] REACT_QUERY_CLIENT 503 overloaded_error /api/bootstrap/{org}/current_user_access
13:46:25 [error] REACT_QUERY_CLIENT 504 /v1/sessions -- error.message contains the FULL Cloudflare 504 HTML page (~5KB) including footer scripts
13:46:45 [error] REACT_QUERY_CLIENT 504 /v1/sessions branch-statuses
13:49:18 [error] REACT_QUERY_CLIENT 504 branch-statuses <-- last log line from renderer
Renderer then went silent for ~48 min until the watchdog killed it.
Hypothesis: when upstream returns a 504 Cloudflare HTML page, React Query swallows the whole document into the error object; if that propagates into render or a retry loop with a heavy serializer, the renderer wedges. Other hangs (4/24, 4/27) show similar patterns of API-error spam immediately preceding the silence.
Repro: not deterministic from user side; correlates with periods of API 5xx on /v1/sessions and /api/bootstrap.
Asks
- Reduce the unresponsive-watchdog kill threshold (or expose a setting).
- Truncate Cloudflare/HTML error bodies in REACT_QUERY_CLIENT before they hit the error-handling path.
- Add a circuit breaker on bootstrap/session 5xx storms instead of unbounded retries.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗