Skip to content

[Due for payment 2026-10-12] App crashes when reloading offline #102957

Closed

Description

@applause-bot

If you haven’t already, check out our contributing guidelines for onboarding. To join our Slack channel, fill out this form.


Version Number: 9.5.2-0
Reproducible in staging?: Yes
Reproducible in production?: No
If this was caught during regression testing, add the test name, ID and link from BrowserStack: #102641
Email or phone of affected tester (no customers): applausetester+en@applause.expensifail.com
Issue reported by: Applause Internal Team
Bug source: Pull Request QA execution
Device used: Macbook Pro 2023 / Tahoe 26.4.1
App Component: Workspace Settings

Action Performed:

  1. Sign in to a valid account on staging.new.expensify.com
  2. Turn internet off
  3. Reload the page

Expected Result:

Page reloads

Actual Result:

Page crashes

Workaround:

Unknown

Platforms:

  • Android: App
  • Android: mWeb Chrome
  • iOS: App
  • iOS: mWeb Safari
  • iOS: mWeb Chrome
  • Windows: Chrome
  • MacOS: Chrome Safari

Screenshots/Videos

To be added by Applause Leads

View all open jobs on GitHub

Applause Internal Information
Exported by: Mita Rachim
Bug ID: 7277433

Issue OwnerCurrent Issue Owner: @daledah

Activity

  1. added
    DeployBlockerCashThis issue or pull request should block deployment
    BugSomething is broken. Auto assigns a BugZero manager.
    on Oct 5, 2026
  2. melvin-bot commented on Oct 5, 2026

    @melvin-bot

    You have been assigned to this deploy blocker because you recently merged this PR: #102641

  3. melvin-bot commented on Oct 5, 2026

    @melvin-bot

    @rlinoz @daledah you have been assigned to this deploy blocker because you reviewed the offending PR: #102641

  4. github-actions commented on Oct 5, 2026

    @github-actions
    Contributor

    👋 Friendly reminder that deploy blockers are time-sensitive ⏱ issues! Check out the open `StagingDeployCash` deploy checklist to see the list of PRs included in this release, then work quickly to do one of the following:

    1. Identify the pull request that introduced this issue and revert it.
    2. Find someone who can quickly fix the issue.
    3. Fix the issue yourself.
  5. melvin-bot commented on Oct 5, 2026

    @melvin-bot

    @TMisiukiewicz you have been assigned to this deploy blocker because you authored the offending PR: #102641

  6. melvin-bot commented on Oct 5, 2026

    @melvin-bot

    💬 A slack conversation has been started in #expensify-open-source

  7. MelvinBot commented on Oct 5, 2026

    @MelvinBot
    Contributor

    Deploy Blocker Investigation

    Result: Load personal details in parallel with OpenApp did not cause this crash, and no other PR in Deploy Checklist: New Expensify 2026-10-04 did either.

    Root cause: The service worker doesn't precache the main signed-in screens bundle (authScreens). That bundle is now about 10.6 MB, which is over the 10 MiB limit set at config/rsbuild/rsbuild.common.ts:529. When you reload offline, that one file fails to load, so the app crashes.

    Recommendation: Don't revert anything. Roll forward with a one-line fix and cherry-pick it to staging. Change the limit to 16 * 1024 * 1024, and update the comment above it, which still says authScreens is about 6.3 MiB.

    Evidence
    1. The tester's console log shows that only one file failed after the offline reload: GET https://staging.new.expensify.com/5654-f980d4f4bed6b2f7.bundle.js net::ERR_INTERNET_DISCONNECTED. The retry logic reloaded the page, the file failed again, and ErrorBoundary took over.
    2. 5654 is the authScreens bundle. The navigator chunk loads it as "authScreens" (AppNavigator.tsx:9).
    3. The service worker skips it. The staging build log says: /5654-f980d4f4bed6b2f7.bundle.js is 10.6 MB, and won't be precached. The live staging service-worker.js lists 5654.c8226c512b.css but not the 5654 JS file.
    4. The bundle crossed the limit in 9.5.0-0, during Deploy Checklist: New Expensify 2026-09-30. It grew from 10,445 kB (the last 9.4.99 build, no warning) to 10,557 kB (the 9.5.0-0 build, with the warning). That release had 581 commits and no single large addition, so no one PR caused it.
    5. Production 9.5.1-9 has the same gap. Its equivalent bundle is also about 10.6 MB, and the production build log shows the same "won't be precached" warning. Production hides the problem because the CDN serves JS with cache-control: public, max-age=86400, while staging sends no Cache-Control header. On production, offline reload only works within 24 hours of the last online load.
    6. The code from PR 102641 never runs before the crash. loadPersonalDetails() (App.ts:441-448) runs only from openApp/reconnectApp. Those are called from AuthScreensInitHandler.tsx:223-226, which lives inside the bundle that fails to load. The log has no OpenApp or LoadPersonalDetails calls. The bug was linked to that PR only because its QA steps included an offline reload.

    I didn't reproduce this live. The evidence comes from the tester's log, the build logs, and the live service worker files.

    Follow-ups (not blockers):

    • Make the web build fail when the service worker would skip a JS file, instead of only warning. Otherwise this will come back silently the next time a bundle grows.
    • Consider splitting the authScreens bundle.
    • The assigned PR author and reviewers can probably be unassigned, because no PR caused this.

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


    view run

  8. TMisiukiewicz commented on Oct 5, 2026

    @TMisiukiewicz
    Contributor

    Verified Melvin's comment and it's valid, #102641 did not cause this

  9. m-natarajan commented on Oct 5, 2026

    @m-natarajan

    Issue is not reproducible on Windows 11 / Chrome in v9.5.2-2

    bandicam.2026-10-05.21-41-57-959.mp4
  10. removed
    DeployBlockerCashThis issue or pull request should block deployment
    on Oct 5, 2026
  11. added and removed
    ReviewingHas a PR in review
    on Oct 5, 2026
  12. changed the title [-]App crashes when reloading offline[/-] [+][Due for payment 2026-10-12] App crashes when reloading offline[/+] on Oct 5, 2026
  13. melvin-bot commented on Oct 5, 2026

    @melvin-bot

    @daledah

    The solution for this issue has been 🚀 deployed to production 🚀 in version 9.5.2-4 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue:

    If no regressions arise, payment will be issued on 2026-10-12. 🎊

    The following checklist (instructions) will need to be completed before the issue can be closed. Please copy/paste the Contributor+ Checklist from here into a new comment on this GH and complete it. If you have the K2 extension, you can simply click: [this button]. If no checklist is needed for this issue, you can click: [no checklist button]

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

Metadata

Metadata

Labels

BugSomething is broken. Auto assigns a BugZero manager.DailyKSv2Engineering

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions