Skip to content

[Due for payment 2026-07-17] fix: recover stuck isLoadingApp that blocks Inbox and Workspaces #95571

Description

@mountiny

Problem

IS_LOADING_APP can get permanently stranded at true, which blocks Inbox and Workspaces behind loading skeletons forever while Search keeps working (it is a separate request). Refreshing never heals it; only switching browsers does.

Root cause: openApp() writes IS_LOADING_APP=true optimistically to storage immediately, but the clearing finallyData of WRITE commands is queued in memory (QueuedOnyxUpdates) until the SequentialQueue flushes. If the page reloads or the tab closes in that window, the clearing update is lost while true stays on disk. On the next boot HAS_LOADED_APP=true makes the app run ReconnectApp only (never OpenApp), and ReconnectApp did not touch the flag, so nothing ever clears it. The existing recovery in DelegateAccessHandler only handles isLoadingApp === undefined, not a stuck true.

Solution

Two complementary changes:

  1. getOnyxDataForOpenOrReconnect now clears IS_LOADING_APP in finallyData for every command in the OpenApp/ReconnectApp family, not just OpenApp, so the next successful reconnect self-heals a stranded flag within minutes.
  2. DelegateAccessHandler gets a second recovery effect: if isLoadingApp stays true for 10s while the app is loaded, online, and there is no OpenApp/ReconnectApp pending in the ongoing slot or persisted queue, it re-fires openApp(). The pending-request guard prevents duplicate OpenApp calls during a legitimate in-flight load.

PR

#95569

Issue OwnerCurrent Issue Owner: @ZhenjaHorbach

Metadata

Metadata

Labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions