Repository navigation
Windows Desktop: concurrent reasoning summaries correlate with ResizeObserver loops and UI freezes #33996
Description
Summary
On Codex/ChatGPT Desktop for Windows, the UI repeatedly became sluggish or temporarily unresponsive. The desktop log showed bursts of ResizeObserver loop completed with undelivered notifications errors. These bursts correlated almost exactly with concurrent reasoning-summary items being added or completed in the renderer.
Disabling concurrent_reasoning_summaries in the Codex config and fully restarting all ChatGPT/Codex processes stopped the visible freezing in this environment. No new ResizeObserver errors or Windows application hangs have been recorded since the targeted restart so far.
Related general Windows performance report: #20214.
Environment
- Codex/ChatGPT Desktop package:
OpenAI.Codex_26.715.4045.0_x64 - Chromium/file version:
150.0.7871.124 - Windows 11 Pro 25H2, build
26200.8875, x64 - GPU: NVIDIA GeForce RTX 4090 plus AMD integrated graphics
- Two displays, 150% (
device-scale-factor=1.5) - Installed from the Microsoft Store/MSIX package
Observed behavior
- UI pauses and occasional Windows
Not Respondingstate - Delayed interaction while reasoning/status content updates
- 55 occurrences of the following renderer error in one approximately 13-minute app session:
[electron-message-handler] [desktop-notifications][global-error] ResizeObserver loop completed with undelivered notifications.
- Windows Event Viewer recorded three
Application Hangevents forChatGPT.exeversion150.0.7871.124during the affected period. - An earlier app version (
26.707.8479.0) also producedChatGPT.execrashes with exception code0xc06d007f, although those older crashes may be a separate failure mode.
Correlation
The ResizeObserver errors repeatedly appeared immediately before or after log entries such as:
Reasoning summary item completed ... summaryPartCount=...
Reasoning summary part added ...
The app also logged:
Concurrent reasoning summaries feature override resolved featureOverride=true
Workaround
Add the following to %USERPROFILE%\.codex\config.toml:
[features]
concurrent_reasoning_summaries = falseThen fully terminate all ChatGPT.exe, codex.exe, and related Codex background processes before restarting the desktop app. Merely closing and reopening the window can leave the original renderer/background processes active.
The bundled Codex CLI confirms:
concurrent_reasoning_summaries under development false
After the full restart, the user reports that the freezing appears resolved. The post-restart observation currently shows zero new ResizeObserver errors and zero new Windows application hangs.
Expected behavior
Updating or completing reasoning-summary UI items should not trigger ResizeObserver loops or make the renderer unresponsive. If the experiment causes a layout feedback loop on Windows, it should be disabled for affected builds or the relevant resize callback should avoid synchronously changing observed dimensions.
Notes
- A clean profile and reinstall had not resolved the original freezing.
- The issue occurred before old conversations were restored, so restored history was not the initiating cause.
- GPU-disabled testing did not resolve the broader freezing, so hardware acceleration does not appear to be the sole cause in this environment.
Activity
github-actions commentedon Jul 18, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
michaelstienstra25-sudo commentedon Jul 18, 2026
Reviewed the suggested potential duplicates:
This report adds a different isolated A/B result on 26.715.4045.0: the ResizeObserver bursts correlate with reasoning-summary UI updates, and disabling concurrent_reasoning_summaries followed by a full process restart stopped the observed freezes and new matching errors so far.
I am therefore leaving this issue open as a narrower reproduction/root-cause lead, while acknowledging that these reports may share a renderer-level failure mode. I am happy to consolidate if maintainers confirm they have the same underlying cause.
michaelstienstra25-sudo commentedon Jul 19, 2026
Correction / updated diagnosis after further reproduction on
OpenAI.Codex_26.715.4045.0_x64:The
concurrent_reasoning_summaries=falseworkaround was not durable. The desktop app later reproduced the same WindowsApplication Hang/Not Respondingbehavior. In addition, desktop logs show a remote Statsig feature override setting the feature back totrue, despite the local config value.More importantly, later hung processes had zero new ResizeObserver errors and zero reasoning-summary update bursts. The older process did contain 80 ResizeObserver errors correlated with 57 reasoning-summary updates, so that remains a real renderer symptom/possible trigger, but it is not sufficient to explain the recurring main-process hangs.
The newer evidence is a much closer match for #33884, #33780, and #33912: synchronous HID / Codex Micro device discovery blocking the Electron main thread.
Local hardware inventory on the affected PC found:
VID_1532&PID_02A6) connected through a Realtek USB hub, several USB topology levels below the root hubVID_1B1C&PID_0C32) and Elite Capellix LCD (VID_1B1C&PID_0C39)VID_0000&PID_0001, “port reset failed”That inventory is notable because #33780 proves a Corsair composite HID can block
HID.node -> hid.dll, while #33884 reports the periodic main-thread hang and successful A/B workarounds by bypassing Work Louder/Codex Micro discovery or moving/unplugging affected USB HID devices.A plugin-disable A/B was also inconclusive: the app restored/reinstalled plugin state at startup, so it did not produce a clean isolation. Statsig refreshes sometimes took 10–32 seconds in logs, but current direct connectivity to the relevant endpoints is fast; this may amplify symptoms but is not proven as the root cause.
I am leaving this issue open for now, but the title/body should no longer be read as claiming ResizeObserver/concurrent summaries are the sole root cause. Maintainers: please consolidate this with #33884/#33780/#33912 if the HID trace explains this report as well.
michaelstienstra25-sudo commentedon Jul 19, 2026
Additional controlled A/B evidence from the same affected Windows installation (
OpenAI.Codex_26.715.4045.0_x64):I inspected the shipped
app.asarand confirmed the current build still has this path:1e4(10,000 ms)connect()callsthis.discovery.findWLDevices([DeviceType.Project2077])WLDeviceDiscovery.findWLDevices()synchronously callsnodeHID.devices()I then built a read-only out-of-process HID descriptor probe with a 2.5-second hard per-interface timeout. It enumerated 44 present HID interfaces and measured
CreateFile,HidD_GetAttributes, manufacturer, product, and serial-string calls separately.The main local trigger was a Razer Basilisk V3 Pro (
VID_1532&PID_00AB) with 12 associated HID interfaces. Through the existing USB path—an active USB 2.0 extension plus a powered TP-Link UH720 V3 hub (internally two cascaded Realtek RTS5411 /VID_0BDA&PID_54114-port USB 2.0 hubs)—the 12 interfaces required 2,579 ms combined. Individual interfaces took up to 740 ms, with the delay specifically inHidD_GetManufacturerString,HidD_GetProductString, andHidD_GetSerialNumberString; open and attributes calls were only 0–2 ms.Controlled change: move only the Basilisk directly to the PC's USB root hub.
Result with identical probe:
Finally, I quit the workaround-launched app and started Codex normally from the Start menu, so Codex Micro discovery was enabled again. A 55-second window-response probe spanning multiple discovery intervals recorded 91/91 responsive samples and zero hung episodes. Before isolating the USB path, a comparable 45-second run recorded 14 unresponsive samples out of 69.
Conclusion: a slow hub/extension/device path is a compatibility trigger, but the product defect is synchronous, unbounded all-HID enumeration on the Electron main thread. The robust app-side fix remains: use async/worker/utility-process discovery, prefilter the supported Work Louder VID/PIDs before descriptor reads, enforce hard timeouts/circuit breaking, back off instead of polling every 10 seconds, and expose a supported opt-out for optional Codex Micro discovery.
mm0nst3r commentedon Jul 19, 2026
Confirmed working workaround, plus an important recovery detail for the system-wide choppiness variant.
On
OpenAI.Codex 26.715.3651.0, heavy task updates could produce denseResizeObserveractivity and very fine sub-second choppiness. The effect spread beyond the Codex window: desktop animation and video playback also became choppy.Preventing recurrence
In a backup-protected writable copy of
resources/app.asar, I applied two exact same-length changes:Replace:
with
n?setTimeout(I):I(), padded with ASCII spaces to the original length. This defers the ResizeObserver-triggered React commit instead of performingflushSyncinside that path.Replace the bundled reduced-motion resolver:
with:
again padded with ASCII spaces to the original byte length.
I also launched Chromium with
--force-prefers-reduced-motion. The AMD integrated display adapter was disabled so the RTX 4090 was the only active display adapter, followed by a Windows restart.Already-degraded desktop requires a DWM restart
Completely closing every Codex /
ChatGPT.exeprocess did not clear the system-wide choppiness. Once triggered, Desktop Window Manager remained degraded after Codex was gone.Win+Ctrl+Shift+B, disabling G-Sync, closing Docker/WSL, and disabling the translucent sidebar did not clear that state.The recovery that immediately restored smoothness was:
Save work and close every Codex process.
Open PowerShell as Administrator.
Run:
Windows automatically starts a fresh
dwm.exe; the displays briefly flash or blank. Signing out or rebooting is the fallback if DWM does not recover.Result
After the DWM reset and final preventative configuration, the machine completed almost 24 hours of real heavy Codex use without recurrence. On this affected system, the combined workaround resolved all observed Codex freezes, fine-grained desktop/video choppiness, and persistent post-exit DWM degradation.
This is unsupported and the minified patterns are build-specific. It is a proven operational result on one machine, not a claim that every Windows stutter has the same cause. A product fix should remove synchronous
flushSyncwork from the ResizeObserver/layout path and prevent renderer activity from leaving the compositor degraded after the app exits.areslp commentedon Jul 26, 2026
Follow-up from a current Windows release: this renderer path still reproduces on package
OpenAI.Codex_26.721.4979.0_x64.Config vs desktop override
The user-level config still contains:
However, the flushed desktop renderer log for this 4979 process recorded:
Concurrent reasoning summaries feature override resolved featureOverride=truefeatureOverride=falseSo the remote/desktop experiment is still overriding the local false value in this release.
Current log correlation
Across one 22.5-hour 4979 desktop log:
ResizeObserver loop completed with undelivered notificationserrorsThe renderer also appears to process the same completion in multiple window contexts:
Reasoning summary item completedrowsprimary,avatarOverlay, andglobalDictationrenderer appearancesThis is close to three-way duplicate delivery/bookkeeping, not merely a high number of unique reasoning items.
Live resource control
A separate 60.70-second read-only process sample on the same running 4979 instance found:
The user-visible symptom is increasing UI lag, especially during session switching, even though Windows continues to report
Responding=True.This does not prove that reasoning/ResizeObserver activity is the only Windows hang cause; the earlier HID diagnosis in this thread remains important. It does show that the reasoning-summary/ResizeObserver amplification itself is still active in 4979 and that the local disable is not authoritative.
Could maintainers please either honor the local disable in Desktop, disable this experiment on affected Windows builds, or deduplicate reasoning updates before broadcasting them to hidden overlay/dictation renderers?
kongtou20070406 commentedon Jul 31, 2026
Follow-up from a newer Windows desktop build: this renderer/layout-loop path still reproduces on
OpenAI.Codex_26.721.11231.0_x64.Environment
26200.8875, x6426.721.11231.0150.0.7871.1281.75The user config contains a
[features]section but no explicitconcurrent_reasoning_summariesentry. The running desktop log recorded:Concurrent reasoning summaries feature override resolved featureOverride=truefeatureOverride=falseCurrent reproduction
Across the current desktop process lifetime:
ResizeObserver loop completed with undelivered notificationsReasoning summary item completedprimary: 989avatarOverlay: 924The visible UI remains severely choppy. This reproduced both while the RTX 5090 was nearly idle and later while a CUDA training process was saturating it, so GPU contention amplifies the symptom but does not explain the idle-GPU reproduction.
A read-only system sample also found:
This rules out physical disk I/O as the main cause in this reproduction.
Targeted renderer-reset A/B
To avoid interrupting long-running backend work, I identified the primary
ChatGPT.exe --type=rendererprocess and terminated only that renderer. The desktop main process, packaged app-server, and external training process all remained alive. The app's renderer-crash recovery created a fresh renderer and reloaded the window.Result:
23:52:13Z23:52:25.962Z, about 12.5 seconds laterThis shows that stale renderer accumulation is not required. Restoring active/streaming task state immediately re-triggers the layout feedback loop in a fresh renderer.
Working interpretation
This reproduction supports the reasoning-summary / multi-window delivery amplification described above: active task hydration and streaming updates appear to re-create the ResizeObserver loop, including delivery to the hidden
avatarOverlayrenderer. It does not prove that every Windows hang has this cause, but it is a directly reproducible frontend jank path in the current 26.721.11231.0 build.Could maintainers please:
No private prompts, thread IDs, local paths, or full logs are included here. Sanitized excerpts can be provided if needed.
duron9000 commentedon Jul 31, 2026
Additional controlled A/B evidence from another Windows system on the current desktop build.
Environment
26.721.11231.0150.0.7871.12832.0.101.8864device-scale-factor=1.5)The user-visible symptom was severe frame stutter specifically while moving the pointer over the Codex UI or dragging the Codex window. Other desktop applications remained smooth. Updating the Intel graphics driver did not resolve it.
During a window-drag sample, Codex/ChatGPT showed substantial CPU-side renderer/compositor activity while GPU utilization remained relatively low. The current desktop log contained:
ResizeObserver loop completed with undelivered notificationsReasoning summary item completedConcurrent reasoning summaries feature override resolved featureOverride=trueThe user config already contained:
The bundled CLI recognized that value as
false, but the running desktop renderer continued to logfeatureOverride=true.Working A/B workaround
Adding this top-level setting to
%USERPROFILE%\.codex\config.toml:and then fully restarting Codex removed the observable window-drag/UI stutter in this environment. This setting suppresses creation of the reasoning-summary UI rather than relying on the overridden concurrent-summary feature flag.
This is an initial successful observation rather than proof that reasoning summaries are the only possible cause of Windows stutter. However, the clean behavioral change, the matching ResizeObserver/summary log activity, and the low GPU utilization provide another reproduction of the frontend layout-jank path on Intel graphics. I will follow up if the symptom returns during longer use.
lucasimo commentedon Aug 4, 2026
Confirming this issue on another Windows system with a closely matching environment.
Environment:
26.727.6591.0150.0.7871.18226200.8875Observed behavior:
Win+Ctrl+Shift+B.Diagnostics:
Concurrent reasoning summaries feature override resolved featureOverride=true.ResizeObserver loop completed with undelivered notifications.Kadeluxe commentedon Aug 16, 2026
I wonder what's going on that it affects DWM even after app is closed, like how?
stillflood commentedon Aug 21, 2026
Follow-up from the current Windows Desktop release: this renderer/layout-loop path is still active on OpenAI.Codex 26.818.3698.0 (UI release
26.818.31338, Chromium151.0.7922.170) and has now progressed from jank/hangs to repeatable browser-main crashes.Reproduction and crash timeline
On 2026-08-21 (UTC+8), normal multi-task use produced three full Desktop exits:
Each run created a Crashpad sidecar with:
{"capture_kind":"crash","osarch":"x86_64","ptype":"browser"}Crashpad report identifiers:
d548bcac-4627-41e7-a039-f5b75899d1f77fc16765-0072-40b9-b16e-7e56559dc840ac627570-75e6-441b-82f5-2ef9c533cdd0Directly preceding renderer evidence
In the 10:54–11:29 process lifetime, the Desktop log contained:
ResizeObserver loop completed with undelivered notificationsConcurrent reasoning summaries feature override resolved featureOverride=trueturn/startedandturn/completedevents for unknown conversations near the final minuteThe app log ended about two seconds before the third Crashpad timestamp, with no normal shutdown sequence.
Fresh-process resource state
Only about three minutes after the automatic restart:
The machine still had approximately 60 GB of physical memory free, so this was not global RAM exhaustion. Earlier the same day, Windows also recorded
RADAR_PRE_LEAK_64forChatGPT.exe, and the Chromium GPU child process had crashed twice with exit code 34.This is now a user-blocking regression: three browser-main crashes in under 47 minutes while several ordinary Codex tasks were streaming. Could maintainers please disable or deduplicate reasoning-summary delivery on affected Windows builds, make the local opt-out authoritative, or otherwise prevent the ResizeObserver/update storm from taking down the browser main process?
No private project data, account identifiers, thread IDs, or raw logs are included.
rickgude commentedon Aug 25, 2026
Additional Windows crash confirmation (26.818 release family)
Confirming repeated full Codex Desktop exits on Windows during active reasoning-summary streaming. This is now occurring multiple times per day and interrupts production work.
Environment
26.818.4150926.81810.0.26200Frequency
Distinct Desktop process sessions show:
Not every transition can be classified as a crash from logs alone. The latest incident was abnormal: the session log ended abruptly at
2026-08-24T23:40:57.272Zwhile an active worker was streaming reasoning-summary updates. There was no normal shutdown, update, quit, or relaunch sequence.Directly preceding evidence
ResizeObserver loop completed with undelivered notificationsGit snapshot became staleThe app used approximately 1.67 GB while the machine still had over 100 GB free. Global RAM exhaustion is therefore ruled out.
The broad workspace caused Git status/review scans over hundreds of paths. One command had
argsCount=200, produced approximately 86 KB of output, and timed out after 60 seconds. This likely amplified renderer/update pressure, but it should not terminate the browser-main process.User-visible impact
Working interpretation
This is consistent with the renderer/layout-update storm documented in this issue, amplified by concurrent reasoning summaries and large Git/task state. It does not prove the native root cause because this exit produced no retained dump.
Could maintainers verify whether this failure path can terminate the browser process before dump capture, and add bounded or paginated handling for reasoning-summary plus Git/review updates?
Privacy
This report intentionally excludes private prompts, repository names, account identifiers, thread IDs, usernames, local paths, and raw logs. Sanitized excerpts can be supplied if maintainers request them.
avezey-ci commentedon Sep 5, 2026
Newer-build evidence and a reproducible summary opt-out precedence gap
Adding sanitized findings from a September 4, 2026 Windows incident and a read-only inspection on September 5. The PC gradually slowed until a forced shutdown was necessary. This resembles reports here and in #33368 / #41166, but the retained evidence does not establish a shared root cause, a RAM/VRAM leak, or that reasoning summaries caused the whole-PC freeze.
Separately, the installed desktop bundle has a reproducible precedence behavior: an experiment-driven
detailedsummary overrides inherited and next-turnnonevalues. An explicit per-requestnonestill wins. This is a concrete opt-out fix candidate, not a verified freeze fix.Environment and retained incident evidence
26.901.4073.0. Package inspected after restart:26.901.5280.0.ResizeObserver loop completed with undelivered notificationserrors across the day, first at 08:52:46 and last at 15:22:52. These were not all in the final minutes.main_thread_jank_snapshotrecords, including repeated records at 15:57–16:03; browser-sidebar color-scheme synchronization timed out at 16:05:06.BugcheckCode=0.No complete pre-freeze per-process resource history was available, and protected LiveKernelReports could not be inspected. The layout errors and later stalls do not establish an immediate causal chain. An initial desktop-log read returned empty content; a later read returned the retained records above, for an unknown reason.
Reproducible behavior in the newer desktop bundle
Asset:
webview/assets/app-initial-ffce11d82782.jsin package26.901.5280.0.SHA-256:
30bfcbdbc47b90bc72fa8853e949dce2eee6b519d3876113260c939801f17203.The desktop constructs
reasoningSummaryOverride: "detailed"whengetDefaultFeatureOverride("concurrent_reasoning_summaries")returns true. The inspected turn-start resolver then applies:none.Thus steps 1 and 2 can supply
noneand still producedetailed. The same bundle also has a voice-start path that callsupdateThreadSettingsForNextTurnwithsummary: "detailed"when the experiment is enabled.The reproduction below reads the exact installed asset, checks that the reviewed expression occurs once, and executes only that small expression with synthetic inputs. It passed seven assertions: three observed-precedence cases and four proposed-policy cases. It does not modify the app, launch Codex, or make model calls.
Scope: this is a function-level reproduction, not an end-to-end demonstration that a particular config-file edit is ignored or that disabling summaries prevents the Windows freeze.
Proposed maintainer change and validation
Preserve the provenance of an explicit user/project/task summary opt-out. Let the experiment supply a default only when no explicit opt-out applies, while retaining precedence for an explicit per-request choice. Apply that rule consistently to task creation, next-turn resolution, task restoration, and voice startup.
Suggested regression checks:
model_reasoning_summary = "none", verify that the outgoing turn remainsnone.The proposed helper in the reproduction is a policy illustration, not a drop-in production patch: the real code must retain explicit-setting provenance. The relevant override was found in the shipped desktop frontend; no public source patch target for that path was found. No application/configuration changes or before/after freeze fix have been deployed on this machine.
Read-only Node.js reproduction (no external packages)
Save as
codex-summary-opt-out-repro.cjsand runnode codex-summary-opt-out-repro.cjs, or pass an absoluteapp.asarpath as the first argument. It intentionally stops if the reviewed build/expression differs.This comment excludes account identifiers, private project paths, conversation text, prompts, credentials, raw databases, and full logs.
igscomp commentedon Sep 13, 2026
Additional browser-process crash evidence from the current Windows build
I can confirm three intermittent full Codex Desktop exits during ordinary multi-task use on the current Microsoft Store/MSIX release.
Environment
26.908.4834.0(x64)152.0.7977.8326200.9445, x64Crashpad evidence
Three sidecars were created in approximately 37 hours:
98159218-bae4-499b-84ff-e1b3dc590d20943d7b64-8f61-4605-9bad-64f2b1bc2f886eb64912-c9e0-4bcc-9b02-b3be9cac26b5Every sidecar contains the same classification:
{"capture_kind":"crash","osarch":"x86_64","ptype":"browser"}Latest crash correlation
For the latest crashed process, the two rotated main logs accumulated 2,145
ResizeObserver loop completed with undelivered notificationserrors and 4,308 reasoning-summary update/completion rows. The last log ends at2026-09-13T14:26:18.571Z, and the browser-process Crashpad sidecar was created about 0.6 seconds later.Immediately before the exit, the renderer emitted a dense burst of ResizeObserver errors from
14:25:52Zthrough14:26:17Z, roughly once per second. There is no normal shutdown, quit, or relaunch marker in that process log. The replacement process started at15:02:45Zand had already recorded 174 additional matching ResizeObserver errors by16:16:48Z.Windows Event Viewer did not retain a matching Application Error or Application Hang event for these exits, and only the Crashpad sidecars are present locally, not full dump files. Therefore this evidence confirms browser-process crashes but does not establish the native exception or prove that ResizeObserver/reasoning-summary activity is the sole root cause.
User impact
The whole desktop application disappears intermittently while tasks are active, interrupting ongoing work and requiring the application and task state to recover after restart.
Could maintainers investigate the browser-process termination around these renderer-update storms and ensure that a usable crash dump is retained or uploaded for this failure path? No private prompts, task identifiers, repository names, account data, local paths, or raw logs are included here.
luvs01 commentedon Sep 14, 2026
Windows 26.908: slow switching between small paginated tasks with fast history RPCs
Adding a current-build observation that may help separate history retrieval from renderer work.
Environment: Microsoft Store/MSIX
OpenAI.Codex_26.908.4834.0_x64, frontend bundle26.908.40834, Chromium152.0.7977.83.The user reports noticeably slow switching back and forth between two local tasks whose rollout files are approximately 6.8 MB and 9.1 MB. Both use paginated history. A separate approximately 899 MB task remains active elsewhere in the same application, so this is not a controlled test excluding large background state. However, selecting the huge task is not required for the reported switching symptom.
A bounded 4 MiB excerpt of the same app session's main-process log, covering
2026-09-14T01:20:55Zthrough02:17:25Z, contains:ResizeObserver loop completed with undelivered notifications.errors across two renderer windows (106 and 82).thread/readresponses took at most 8 ms for the 9 MB and large tasks;thread/turns/listtook at most 18 ms and 47 ms, respectively. Observed queue wait was at most 1 ms.thread/resumetook 185 ms, and the loggedmaybe_resume_started→maybe_resume_successinterval was about 522 ms. No equivalent successful-resume interval was established for the large task.Concurrent reasoning summaries feature override resolved featureOverride=truerecords were present.Read-only inspection of this installed frontend found turn virtualization with overscan 2. The raw rollout sizes therefore must not be interpreted as all-history DOM size. There is still entry/item processing before the visible-turn slice, item processing inside a large single turn, and proximity-triggered history hydration that need not wait for user scrolling. Those are investigation candidates, not a reproduced root cause.
Scope/limitations: the slow two-small-task switching is user-observed, while the timing/error counts above come from the earlier bounded log interval. At the time of this initial log-only observation, no controlled foreground performance trace or same-switch ResizeObserver stack had been captured; see the subsequent trace update below. The evidence supports a common renderer/layout-path investigation but does not prove ResizeObserver causes the delay rather than accompanying it. Background large-task processing is still a confounder. No summary opt-out, zoom, cache, app bundle, task state, or window configuration was changed for this report, and no crash/OOM claim is made.
Could maintainers correlate task-entry JavaScript/layout/paint time with the component generating these ResizeObserver events, and check whether currently projected item processing or automatic hydration delays first usable paint? It would also help to know which summary opt-out is actually authoritative in this build, given the conflicting workaround/override reports already in this issue.
The broader task-switching report #30428 may also be relevant, but its different tracing evidence should not be assumed to establish the same cause. This comment includes no task identifiers, business content, account data, private filesystem paths, raw rollouts, or full logs.
Follow-up: a short local trace points to subagent membership state work, not dominant ResizeObserver delivery time
A new, shorter performance trace was retained locally. The user navigated from a large task to another task, then stopped recording. Returning afterward felt fast, but that return was outside the trace, so this is not a measured bidirectional comparison and does not establish a cache effect.
The captured renderer main thread contains one complete
EventDispatch(type=click)taking 29.672 s wall time / 28.207 s thread CPU time (95.06%). Almost the entire interval contains the same React microtask callback inclient-d8dffccad60c.js(1-based line 8, column 122951). CPU stacks now retain their initial Profile and referenced node definitions, unlike an earlier longer recording that overwrote its ring buffer.The actionable path is:
React passive effects → subscription mount → atom evaluation/read/family resolution → subagent membership derivation.In this build, the profile label
Jf.isEqualatapp-primary-17b54400f32a.js(0-based line 1167, column 32779) maps to the body of thew7derived atom, which builds subagent membership and reads related state. It is not evidence that a deep-equality comparator itself takes 25 seconds. That subtree has approximately 25.671 s inclusive sampled time in the approximately 35.067 s renderer profile. Its relatedqdrmembership assembly andXdrcandidate traversal account for approximately 3.064 s and 1.431 s inclusive sampled time, respectively; these overlap and must not be added. Larger costs appear in atom reads and family resolution under the derived computation. These are whole-profile sample weights, not exact per-function CPU timings or invocation counts.For comparison, retained events on the same renderer main thread contain:
LocalFrameView::NotifyResizeObservers: 18.993 ms total, 157 calls, maximum 4.577 ms.Layout: 82.063 ms total, 50 calls.UpdateLayoutTree: 463.783 ms total.Paint: 49.425 ms total.There is one browser console notification containing the ResizeObserver error, about 0.476 s after the long click completes, plus two duplicate log-layer records. Browser receipt timing and renderer attribution are not sufficient to rule out an indirect trigger. Nevertheless, direct ResizeObserver/layout delivery costs do not account for the captured 29.7-second main-thread stall. This narrows the previous renderer/layout hypothesis toward state derivation and subscription work; this task-switching stall may deserve separate treatment from other ResizeObserver reports in this issue.
Suggested investigation/fix scope: measure membership-selector reevaluation counts, input cardinalities, and subscription mount/invalidation triggers; determine whether unchanged relationship results and per-thread reads can be reused, and whether dependencies can be scoped to the visible parent/turn instead of repeatedly traversing broader cached conversation/history state. A targeted regression should exercise task switching with a large retained task/subagent graph. The current trace does not establish input counts, algorithmic complexity, a memory leak, or that any particular configuration change fixes this.
Trace quality: buffer overwrite counts are zero and all referenced CPU nodes were found. The trace processor still reports 540 track parser errors/missing hierarchy entries and 99 discarded chunks, so this is not a claim that every track is lossless. The reported long event is complete and its CPU stack references resolve. Profiling overhead remains a limitation. The exact destination task is based on the user's action description, not independently established from the event payload.
The trace, task identifiers, raw logs, private paths, and business content remain local. Only these aggregate measurements and installed-build code locations are shared. No app bundle, configuration, history, or window setup was modified. A verified desktop-source change/build is still required before any fix can be claimed.
CrispyW0nton commentedon Oct 12, 2026
Version-specific local patch/startup confirmation with Codex assistance:
10.0.19045(local OS probe).26.1007.2314.0, internal app26.1007.21434; bundled backend0.162.0-alpha.17.2.webview/assets/virtualized-turn-list-93f4162a687b.js, the single matching expression wasn?(0,Te.flushSync)(se):se(). It was replaced withn?setTimeout(se):se()and padded to preserve the original byte length.The change was made in a backup-protected writable portable copy. The corresponding ASAR asset/header and embedded integrity digest were updated while integrity fuses remained enabled. The original Store installation is untouched. The modified portable executable loses its vendor signature; this is an unsupported, build-specific workaround.
JavaScript syntax and seven callback-behavior assertions passed. A cold launch through the verified Desktop shortcut observed the patched executable and responsive process samples. Historical logs had 3,563 ResizeObserver errors, but I have not measured sustained post-patch UI frame time or a comparable long-session error-rate reduction, so this is patch/startup confirmation rather than proof that all UI freezes are resolved.
I separately reproduced local MCP transport pressure; that evidence belongs in #42740. Successful remote compaction and long-running UI responsiveness remain unverified.
Sanitized report and verification limits: https://gist.github.com/CrispyW0nton/ec298528829397c5389dd49fba193578
NellInc commentedon Oct 13, 2026
macOS renderer trace findings on 26.1007.30912 (unpatched app)
Adding a cross-platform observation to this renderer discussion. These measurements do not establish the same underlying cause as the Windows reports above.
Environment and method
26.1007.30912, build20156; bundled backend0.162.0-alpha.17.2.bufferFull=false; parsed monotonic trace bounds span 51.555 seconds. Counts below cover the parsed trace, without normalising rates to the app-reported duration.Renderer measurements
After excluding main-thread tasks containing
CpuProfiler::StartProfiling, one renderer'sCrRendererMainhad 13 complete tasks over 50 ms, including 8 over 100 ms. The maximum was 353.910 ms wall time.These are nested wall durations and must not be added together. The React callbacks resolve to
app-shared-8bd9d0399038.js, trace-reported line 90, column 123793.Samples also contain
querySelectorAll,querySelector, atom-state dependency work and scroll/viewport geometry reads. Read-only inspection of the installed assets matched these profile locations (zero-based line and column):Eit:app-shared-8bd9d0399038.js, 293:48361, dependency traversal.Dit: the same asset, 293:48935, atom-state reads/recomputation.kGt: the same asset, 422:15323, readsscrollHeight,clientHeightandscrollTop.reconcileViewport:thread-response-space-controller-d9944902d856.js, 0:5899.These locations identify sampled activity; attribution to a particular application component or selector remains unresolved. The largest major-GC event was 191.236 ms.
Keep profiler startup separate
The largest multi-second task envelopes contained profiler startup:
CpuProfiler::StartProfilingtook 6,938.993 ms in one renderer and 2,307.290 ms in another. Those tasks are excluded from the counts above.Backend and ResizeObserver observations
During the app-reported recording window, maximum logged RPC durations were:
thread/read: 157 ms (38 requests).thread/turns/list: 1,220 ms (44 requests).thread/items/list: 650 ms (76 requests).One ResizeObserver warning was logged in that window. A causal ResizeObserver/
flushSyncfeedback loop was not established, and no renderer workaround was applied or validated.Profiling perturbs timing. Perfetto reported
legacy_v8_cpu_profile_invalid_callsite=1andlegacy_v8_cpu_profile_invalid_sample=1, limiting CPU-stack completeness. The figures describe this recorded session, rather than an uninstrumented baseline or a demonstrated fix.A useful investigation would correlate subscription/atom reevaluation, synchronous geometry reads and layout work with chat-switch input tasks, while separating history-fetch latency and profiler startup costs.
Only aggregate measurements and shipped-code locations are shared here. No raw trace, full logs, conversation content, task/account identifiers or private filesystem paths are attached or included.