Skip to content

[Due for payment 2026-08-11] [$250] Refactor sibling-of-header page loaders to ActivityIndicator #96094

Closed

Description

@Julesssss

Problem

Refactor these FullScreenLoadingIndicator usages to ActivityIndicator, in preparation for making the error/loading page recoverable (enabling the Go Back button by default). They currently render on top of a visible header/back button, which violates UI-1.

Solution

Refactor the following sibling-of-header pages from FullScreenLoadingIndicator to ActivityIndicator:

Note: TroubleshootPage and CardAuthenticationModal are not plain swaps — keep the underlying component mounted and use a scoped overlay, otherwise unmounting the loading branch swallows the error modal / deadlocks the spinner.

Parent: #69850

Issue OwnerCurrent Issue Owner: @mallenexpensify
Upwork Automation - Do Not Edit

Activity

  1. situchan commented on Jul 23, 2026

    @situchan
    Contributor

    @MelvinBot implement this. Create separate PRs per each occurrence

  2. MelvinBot commented on Jul 23, 2026

    @MelvinBot
    Contributor

    🤖 Done — one draft PR per occurrence, each branched off main:

    Page PR Type
    TroubleshootPage #96821 Scoped overlay (kept ImportOnyxState mounted)
    CardAuthenticationModal #96822 Scoped overlay (kept iframe mounted)
    WorkspaceWorkflowsApprovalsEditPage #96826 Plain swap
    AuthorizeTransactionPage #96828 Plain swap

    Approach

    • Plain swaps (WorkspaceWorkflowsApprovalsEditPage, AuthorizeTransactionPage): the HeaderWithBackButton renders in the same tree as the loader, so FullScreenLoadingIndicator is replaced with a centered ActivityIndicator rendered below the header.
    • Scoped overlays (TroubleshootPage, CardAuthenticationModal): as noted in the issue, these can't be plain swaps. The underlying component stays mounted and the spinner renders as an overlay (StyleSheet.absoluteFill + styles.fullScreenLoading) scoped to the content area below the header — so TroubleshootPage's ImportOnyxState (which drives isLoading and owns the import error modal) is never unmounted, and CardAuthenticationModal's iframe keeps loading so its onLoad still clears the spinner (no deadlock).

    Each PR passed lint, typecheck, oxfmt, and the React Compiler compliance check locally. Please mark them "Ready for review" once you've verified them — the Tests/QA sections are left for the human co-author to fill in.

  3. Julesssss commented on Jul 28, 2026

    @Julesssss
    ContributorAuthor

    Hi @situchan, could we get these into review soon please

  4. 15 remaining items

  5. changed the title [-][$250] Refactor sibling-of-header page loaders to ActivityIndicator[/-] [+][Due for payment 2026-08-11] [$250] Refactor sibling-of-header page loaders to ActivityIndicator[/+] on Aug 4, 2026
  6. melvin-bot commented on Aug 7, 2026

    @melvin-bot

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

  7. melvin-bot commented on Aug 10, 2026

    @melvin-bot

    Triggered auto assignment to @mallenexpensify (Awaiting Payment)

  8. melvin-bot commented on Aug 10, 2026

    @melvin-bot

    Payment Summary

    Resolving PRs:

    BugZero Checklist (@mallenexpensify)

    • I have confirmed assignees, roles, and Upwork contracts look correct
    • I have paid out Upwork contracts / manual NewDot requests
  9. mallenexpensify commented on Aug 13, 2026

    @mallenexpensify
    Contributor

    @situchan @Julesssss this due $250, en total, for all?

  10. situchan commented on Aug 13, 2026

    @situchan
    Contributor

    $500 total, $125 for each

  11. mallenexpensify commented on Aug 13, 2026

    @mallenexpensify
    Contributor

    Payment Summary

    Contributor+: @situchan due $500 via NewDot

  12. laurenreidexpensify commented on Aug 24, 2026

    @laurenreidexpensify
    Contributor

    $500 approved @situchan New Expensify

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 productionDailyKSv2EngineeringImprovementItem broken or needs improvement.

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions