Skip to content

[Due for payment 2026-06-01] [$250] Web app crashes intermittently with no console errors #90756

Description

@MelvinBot

Description

The web app is crashing intermittently with no errors visible in the JS console after the crash occurs. This makes it difficult to debug since the console state is lost on crash.

Image

Most likely this crash https://expensify.sentry.io/issues/APP-2BN

Steps to reproduce

Unknown — needs reproduction. The reporter experienced multiple crashes on the web app but was not able to capture console output at the time of the crash.

Expected behavior

The web app should not crash unexpectedly.

Actual behavior

The web app crashes intermittently. No JS console errors are visible after the crash (likely because the page reloads and console is cleared).

Additional context

Upwork Automation - Do Not Edit
  • Upwork Job URL: https://www.upwork.com/jobs/~022055203627066608029
  • Upwork Job ID: 2055203627066608029
  • Last Price Increase: 2026-05-15
Issue OwnerCurrent Issue Owner: @mallenexpensify

Activity

  1. exfy-zapier commented on May 15, 2026

    @exfy-zapier

    This has been labelled "Needs Reproduction". Follow the steps here: https://stackoverflowteams.com/c/expensify/questions/16989

  2. melvin-bot commented on May 15, 2026

    @melvin-bot

    📣 @exfy-zapier! 📣
    Hey, it seems we don’t have your contributor details yet! You'll only have to do this once, and this is how we'll hire you on Upwork.
    Please follow these steps:

    1. Make sure you've read and understood the contributing guidelines.
    2. Get the email address used to login to your Expensify account. If you don't already have an Expensify account, create one here. If you have multiple accounts (e.g. one for testing), please use your main account email.
    3. Get the link to your Upwork profile. It's necessary because we only pay via Upwork. You can access it by logging in, and then clicking on your name. It'll look like this. If you don't already have an account, sign up for one here.
    4. Copy the format below and paste it in a comment on this issue. Replace the placeholder text with your actual details.
      Screen Shot 2022-11-16 at 4 42 54 PM
      Format:
    Contributor details
    Your Expensify account email: <REPLACE EMAIL HERE>
    Upwork Profile Link: <REPLACE LINK HERE>
    
  3. added
    BugSomething is broken. Auto assigns a BugZero manager.
    on May 15, 2026
  4. MelvinBot commented on May 15, 2026

    @MelvinBot
    ContributorAuthor

    Issue Analysis

    ⚠️ Medium confidence — The "Aw, Snap!" crash is a Chrome renderer/tab crash (not a JS exception), most likely caused by out-of-memory (OOM) conditions. Without reproducible steps, the exact trigger is uncertain, but the architectural patterns below are the most probable contributors.

    Root Cause: Chrome's "Aw, Snap!" page indicates the renderer process crashed — this is almost always an OOM condition on web. The App loads entire Onyx collections (all reports, transactions, report actions) into memory at startup and keeps them resident. Users with large accounts can exhaust Chrome's JS heap limit (~2GB desktop, ~500MB mobile), causing a full tab crash. Because this is a process-level crash (not a JS error), no console output or error boundary can capture it.

    Why existing crash reporting doesn't help:

    1. The ErrorBoundary catches React errors and unhandled promise rejections, but OOM tab crashes kill the process before any JS can run
    2. Memory telemetry sends breadcrumbs to Sentry every 2 minutes, but is passive — it observes memory usage but takes no preventive action when thresholds are exceeded
    3. No window.onerror handler exists for synchronous global errors

    Key contributing patterns:

    Investigation details

    Memory architecture gaps

    The app has memory monitoring via sendMemoryContext with thresholds at 70% (warning) and 85% (critical) of jsHeapSizeLimit, but this only logs to Sentry — there is no auto-reload, data eviction, or garbage collection trigger when memory is critical.

    Why console is empty after crash

    Chrome's "Aw, Snap!" is a renderer process crash. The DevTools console runs in the same renderer process, so it is destroyed along with all JS state. This is fundamentally different from a JS exception — no error handler can catch it because the process is already dead.

    Alternative explanations considered

    • WebGL/Canvas crash: The app uses canvas for text measurement and avatar processing, but these are lightweight operations unlikely to crash the renderer
    • Service Worker issue: SW registration has error handling but no retry logic; however, SW crashes would not cause "Aw, Snap!"
    • Browser extension conflict: Possible but unlikely to be the primary cause given the memory architecture concerns

    Possibly related issues

    Recommended next steps:

    1. Check Sentry for memory breadcrumbs from the reporter's session — the 2-minute memory tracking may show a ramp-up before the crash
    2. Reproduce by loading a large account (100+ reports) on web and monitoring performance.memory.usedJSHeapSize in DevTools
    3. Short-term mitigation: Add an active memory pressure response (e.g., tab reload with state recovery when memory exceeds 85%)
    4. Long-term fix: Complete the Onyx.connect() refactoring (Remove Onyx.connect() for the key: ONYXKEYS.COLLECTION.REPORT in src/libs/OptionsListUtils.ts #66378) to avoid keeping all collections in memory

    Next Steps: Reply with @MelvinBot implement this to create a draft PR, or @MelvinBot <your feedback> to refine this analysis.

  5. added
    ExternalAdded to denote the issue can be worked on by a contributor
    on May 15, 2026
  6. added
    Help WantedApply this label when an issue is open to proposals by contributors
    on May 15, 2026
  7. melvin-bot commented on May 15, 2026

    @melvin-bot

    Triggered auto assignment to Contributor-plus team member for initial proposal review - @eVoloshchak (External)

  8. changed the title [-]Web app crashes intermittently with no console errors[/-] [+][$250] Web app crashes intermittently with no console errors[/+] on May 15, 2026
  9. melvin-bot commented on May 15, 2026

    @melvin-bot
  10. mountiny commented on May 15, 2026

    @mountiny
    Contributor

    Looks like its this Sentry crash https://expensify.sentry.io/issues/APP-2BN

  11. 32 remaining items

  12. melvin-bot commented on May 29, 2026

    @melvin-bot

    @eVoloshchak Whoops! This issue is 2 days overdue. Let's get this updated quick!

  13. melvin-bot commented on May 31, 2026

    @melvin-bot

    Triggered auto assignment to @mallenexpensify (Awaiting Payment)

  14. melvin-bot commented on May 31, 2026

    @melvin-bot

    Payment Summary

    Upwork Job

    BugZero Checklist (@mallenexpensify)

    • I have verified the correct assignees and roles are listed above and updated the necessary manual offers
    • I have verified that there are no duplicate or incorrect contracts on Upwork for this job (https://www.upwork.com/ab/applicants/2055203627066608029/hired)
    • I have verified the PR was not reverted
    • I have applied any discounts due to bugs/regressions introduced by this PR
    • I have paid out the Upwork contracts or cancelled the ones that are incorrect
    • I have verified the payment summary above is correct
  15. eVoloshchak commented on Jun 1, 2026

    @eVoloshchak
    Contributor

    BugZero Checklist:

    Regression Test Proposal

    Test:

    1. Open the app
    2. Switch quickly between chats in inbox, open some expenses
    3. Make sure there are no LayoutManager is not initialized errors in console
    4. Click FAB -> "Start Chat"
    5. Select some users and add them to the chat group
    6. Click Next
    7. On the Group page try to go back, remove any selected member or click "Start Group"
    8. Verify the page isn't frozen

    Do we agree 👍 or 👎

    Zapier Logs Run ID: 00040eee-ba9e-ad0c-2d3f-260c616aa1c4
  16. mallenexpensify commented on Jun 2, 2026

    @mallenexpensify
    Contributor

    Payment Summary

    Contributor+: @eVoloshchak due $250 via NewDot

    ^ Test case created. Thx

  17. moved this from Done to SUBISSUE in [#whatsnext] #qualityon Jul 2, 2026
  18. JmillsExpensify commented on Aug 3, 2026

    @JmillsExpensify
    Contributor

    $250 approved for @eVoloshchak

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Awaiting PaymentAuto-added when associated PR is deployed to productionBugSomething is broken. Auto assigns a BugZero manager.DailyKSv2ExternalAdded to denote the issue can be worked on by a contributorNeeds ReproductionReproducible steps needed

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions