Problem
NewDot's browser tab crashes repeatedly and silently on web. The crash produces no JS error, runs no graceful shutdown, and Sentry captures zero error events. It has been reproduced regularly on staging and on ad-hoc builds while doing normal activity (DMing other users, clicking around inside an expense on the Spend page, etc.).
Root cause (current best understanding)
Renderer process OOM kill. The browser/OS SIGKILLs the renderer process under physical RAM pressure. This happens below jsHeapSizeLimit, so it is completely independent of the V8 heap limit and produces no JS error — which is why nothing reaches Sentry through normal error reporting.
Evidence from crash tracking captured via the instrumentation PRs below:
- JS heap chronically pinned at ~97–98% usage with a large retained live set (~1.1 GB in one session, ~3.5 GB in a later one). The set is genuinely retained — a GC ran between two snapshots yet couldn't drop below ~1.1 GB.
- A later crash report:
usedJSHeapSizeMB: 3572, totalJSHeapSizeMB: 3589, jsHeapSizeLimitMB: 4192, reportsCount: 1083, domNodes: 2430, visibility: hidden.
- Earlier memory snapshots before a crash: 98.13% and 97.38% heap usage with only ~23–29 MB free.
The trigger
The crash typically follows a healthy ManualSendMessage (the send itself renders fine in ~100 ms), then dies ~1 s later while draining post-send work. In one ~1.23 s window a single comment generated:
- 71 Onyx writes (21 of them
snapshot_ blobs — the AddComment snapshot fan-out)
- 27 OnyxDerived recomputes, including
reportAttributes ×6 and todos ×6, each iterating all ~89 reports.
With only ~23–29 MB free, that allocation burst is the final straw → OOM kill. Bursts of OnyxDerived recomputation (e.g. 91 computation events at once) were observed correlating with crashes, also triggered by OpenApp.
Proposed action items
Related work
Reported in Slack.
Issue Owner
Current Issue Owner: @eh2077
Issue Owner
Current Issue Owner: @eh2077
Upwork Automation - Do Not Edit
Problem
NewDot's browser tab crashes repeatedly and silently on web. The crash produces no JS error, runs no graceful shutdown, and Sentry captures zero error events. It has been reproduced regularly on staging and on ad-hoc builds while doing normal activity (DMing other users, clicking around inside an expense on the Spend page, etc.).
Root cause (current best understanding)
Renderer process OOM kill. The browser/OS SIGKILLs the renderer process under physical RAM pressure. This happens below
jsHeapSizeLimit, so it is completely independent of the V8 heap limit and produces no JS error — which is why nothing reaches Sentry through normal error reporting.Evidence from crash tracking captured via the instrumentation PRs below:
usedJSHeapSizeMB: 3572,totalJSHeapSizeMB: 3589,jsHeapSizeLimitMB: 4192,reportsCount: 1083,domNodes: 2430,visibility: hidden.The trigger
The crash typically follows a healthy
ManualSendMessage(the send itself renders fine in ~100 ms), then dies ~1 s later while draining post-send work. In one ~1.23 s window a single comment generated:snapshot_blobs — the AddComment snapshot fan-out)reportAttributes×6 andtodos×6, each iterating all ~89 reports.With only ~23–29 MB free, that allocation burst is the final straw → OOM kill. Bursts of
OnyxDerivedrecomputation (e.g. 91 computation events at once) were observed correlating with crashes, also triggered byOpenApp.Proposed action items
Related work
7543552932Reported in Slack.
Issue Owner
Current Issue Owner: @eh2077Issue Owner
Current Issue Owner: @eh2077Upwork Automation - Do Not Edit