Enable the Go Back button by default on FullScreenLoadingIndicator - #99786
Enable the Go Back button by default on FullScreenLoadingIndicator#99786MelvinBot wants to merge 1 commit into
Conversation
Co-authored-by: Situ Chandra Shil <situchan@users.noreply.github.com>
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
Web test results: partial — 0/3 verified liveI could not reproduce any of the three test steps on web. Every route to them needed either a fresh page load / deep link (the harness must not reopen or reload the session) or a magic-code "Validate your account" screen, which I can't solve. So this is a blocked run, not a passing one — treat the web platform as still needing manual coverage. Static code review supports the change on all three points, but that is not a substitute for the visual proof you asked for.
For contrast, the same three steps did pass live on Android — see my earlier comment for those screenshots. No console errors. The session was left clean (Force offline turned back off, Home loading normally). Evidence (3)Troubleshoot page after enabling Force offline (attempted lever for a stuck loader)
Troubleshoot page confirming Force offline restored to off (cleanup)
Home screen loading normally after cleanup, confirming session left in a healthy state
|








Explanation of Change
Final step of the recoverable-loader work: flips
shouldUseGoBackButtonto defaulttrueonFullScreenLoadingIndicatorso every fullscreen loader grows a "This is taking longer than expected" message plus a "Go Back" button afterCONST.TIMING.ACTIVITY_INDICATOR_TIMEOUT. This delivers the recoverable error page across all remaining trapped-user loaders in one change instead of ~66 one-line PRs.Three parts:
src/components/FullscreenLoadingIndicator.tsx— default changed fromfalsetotrue, and the prop doc updated to say what passingfalseis for.shouldUseGoBackButtonprops from the call sites that were already opting in. Behavior is unchanged at these sites; the prop is just noise now.shouldUseGoBackButton={false}to 6 auth/transition screens, each with a comment explaining why:ValidateLoginPage/index.tsx,ValidateLoginPage/index.web.tsx,UnlinkLoginPage,LogInWithShortLivedAuthTokenPage,DelegatorConnectGate— these are cold deep-link entry points, so there is usually no history to pop and "Go Back" would be dead.LogOutPreviousUserPage— actively harmful, not just dead. Going back can pop/transitioninto the outgoing user's session midOnyx.clear()/sign-out.This flip was blocked on the bullet-1 refactors (#96093, #96094, #96095, #96096), which converted sibling-of-header loaders to
ActivityIndicator. All four are now closed and the last PRs (#96835, #96819) are merged, so the flip no longer draws a stray "Go Back" button on top of headers that already have one.AI tests run locally by MelvinBot
eslinton all 20 changed fileseslint-seatbeltwarnings, untouched)npm run typecheckoxfmt(npm run fmt)npm run spell-changednpm run react-compiler-compliance-check checkDelegatorConnectGate.tsx,withReportOrNotFound.tsx,IOURequestStepConfirmation.tsx) — verified byte-for-byte identical failures onorigin/main, so pre-existing and not caused by this PRnpm test --findRelatedTests(118 suites, 1353 tests)tests/unit/pages/HomePage.test.tsxfails — the identical failure reproduces onorigin/mainwith the same batch, and the suite passes in isolation on both branches, so it is a pre-existing test-isolation flaketests/ui/ValidateLoginPageTest.tsx,tests/ui/WorkspacePageWithSectionsTest.tsx(the two suites that reference this component)Browser verification could not be completed. The
agent-deviceweb session rendered a permanently blank page (0 DOM nodes) for the whole run, despite the rsbuild dev server compiling cleanly with no errors. This is an environment/session-handoff failure, not a signal about this change — but it means the loader timeout and "Go Back" click were not exercised in a real browser. Please cover that in theTestssection below.Evidence (1)
Blank white page in the web test session - agent-device session never rendered app UI
Fixed Issues
$ #96098
PROPOSAL:
Tests
// TODO: The human co-author must fill out the tests they ran before marking this PR as "ready for review".
// Suggested coverage, since MelvinBot's browser run was blocked by an environment failure:
// 1. Reach any slow fullscreen loader (e.g. a report deeplink that stays loading) and verify "This is taking longer than expected" + "Go Back" appear after the timeout, and that "Go Back" actually navigates away.
// 2. Verify no stray "Go Back" button is drawn on top of a header that already has one.
// 3. Cold deep-link each of the 6 opted-out screens (magic-link validate, unlink login, short-lived auth token, delegator connect, log out previous user) and verify NO "Go Back" button appears.
Offline tests
// TODO: The human co-author must fill this out. Offline is the most likely way to reach a long-lived loader, so it is worth exercising here.
QA Steps
// TODO: The human co-author must fill these out, or the issue title must include "[No QA]."
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari