[BUG] Claude Desktop (Windows) crashes when opening generated web page preview — infinite render loop in EpitaxyFramePage + EventEmitter listener leak
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Claude Desktop crashes on Windows specifically when trying to view/preview a web page generated by Claude (artifact preview). The renderer enters an infinite re-render loop in EpitaxyFramePage, accompanied by EventEmitter listener leaks that grow with each render cycle, and the app becomes unresponsive/crashes shortly after.
Log excerpt from %APPDATA%\Claude\logs\main.log:
2026-08-16 16:51:17 [warn] [antalytics] track() called before init(); event dropped (pre-init buffering requires registerPreInitConsent())
2026-08-16 16:51:19 [warn] [LOCAL_SESSION] [RenderLoopDetector] Rapid re-rendering in EpitaxyFramePage: 20 renders in 1000ms {"sessionType":"local"}
2026-08-16 16:51:20 [warn] MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 $eipc_message$_1a6a86a9-b6fb-4d64-8e14-a3eb46104c36_$_claude.settings_$_AppPreferences_$_preferencesChanged listeners added. Use emitter.setMaxListeners() to increase limit
2026-08-16 16:58:56 [warn] MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 $eipc_message$_1a6a86a9-b6fb-4d64-8e14-a3eb46104c36_$_claude.web_$_Launch_$_activeServers_$store$_update listeners added. Use emitter.setMaxListeners() to increase limit
2026-08-16 16:58:57 [error] Unrecognized Content-Security-Policy directive 'webrtc'.
2026-08-16 16:59:00 [error] Unrecognized Content-Security-Policy directive 'webrtc'.
2026-08-16 16:59:00 [error] Unrecognized Content-Security-Policy directive 'webrtc'.
2026-08-16 16:59:00 [warn] [MCP Apps] oncalltool handler replaced. Previous handler will no longer be called.
2026-08-16 16:59:00 [warn] [MCP] [MCP App: visualize][viz:timing:firstrender][info] {"iframe_ms":15}
2026-08-16 16:59:00 [warn] [MCP] [MCP App: visualize][viz:timing:complete][info] {"iframe_ms":17}
The pattern:
RenderLoopDetector flags EpitaxyFramePage re-rendering 20x within 1000ms.
Each render cycle appears to register new IPC listeners (preferencesChanged, activeServers store update) without cleaning up the old ones — MaxListenersExceededWarning fires repeatedly.
Unrecognized Content-Security-Policy directive 'webrtc' errors fire repeatedly in the same window, likely because the artifact preview iframe re-applies its CSP header on every render pass.
Shortly after, the app becomes unresponsive and crashes.
What Should Happen?
What Should Happen?
Opening a generated web page preview should render once without triggering repeated re-renders, and IPC event listeners should be cleaned up between renders (or deduplicated) rather than accumulating.
Error Messages/Logs
2026-08-16 16:51:17 [warn] [antalytics] track() called before init(); event dropped (pre-init buffering requires registerPreInitConsent())
2026-08-16 16:51:19 [warn] [LOCAL_SESSION] [RenderLoopDetector] Rapid re-rendering in EpitaxyFramePage: 20 renders in 1000ms {"sessionType":"local"}
2026-08-16 16:51:20 [warn] MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 $eipc_message$_1a6a86a9-b6fb-4d64-8e14-a3eb46104c36_$_claude.settings_$_AppPreferences_$_preferencesChanged listeners added. Use emitter.setMaxListeners() to increase limit
2026-08-16 16:58:56 [warn] MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 $eipc_message$_1a6a86a9-b6fb-4d64-8e14-a3eb46104c36_$_claude.web_$_Launch_$_activeServers_$store$_update listeners added. Use emitter.setMaxListeners() to increase limit
2026-08-16 16:58:57 [error] Unrecognized Content-Security-Policy directive 'webrtc'.
2026-08-16 16:59:00 [error] Unrecognized Content-Security-Policy directive 'webrtc'.
2026-08-16 16:59:00 [error] Unrecognized Content-Security-Policy directive 'webrtc'.
2026-08-16 16:59:00 [warn] [MCP Apps] oncalltool handler replaced. Previous handler will no longer be called.
2026-08-16 16:59:00 [warn] [MCP] [MCP App: visualize][viz:timing:firstrender][info] {"iframe_ms":15}
2026-08-16 16:59:00 [warn] [MCP] [MCP App: visualize][viz:timing:complete][info] {"iframe_ms":17}
Steps to Reproduce
Open Claude Desktop on Windows
Have Claude generate a web page (HTML artifact / MCP visualize widget)
Open/view the generated page preview inside the app
Observe repeated RenderLoopDetector warnings for EpitaxyFramePage in %APPDATA%\Claude\logs\main.log
App becomes unresponsive and crashes shortly after
Claude Model
Sonnet (default)
Is this a regression?
Yes, this worked in a previous version
Last Working Version
_No response_
Claude Code Version
Claude 1.30096.5 (6e1346) 2026-08-14T21:58:49.000Z
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
Other
Additional Information
Claude Desktop version: Version 1.30096.5 (6e1346)
OS: Windows 10 22H2
GPU: NVIDIA GeForce GTX 960 (581.08)
Installer type: Claude Setup.exe
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗