You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Due for payment 2026-08-28] [$250] Refactor IOU cluster loaders to ActivityIndicator #96096
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/tab bar, which violates UI-1.
Solution
Refactor the following IOU cluster sites from FullScreenLoadingIndicator to ActivityIndicator:
Note: IOURequestStepConfirmation and withFullTransactionOrNotFound serve both an embedded tab (header + tab bar visible) and a standalone RHP route (no chrome, must keep the fullscreen loader), so the swap must be conditional on render context.
Conditional on render context → threads shouldHideHeader into the HOC
All swaps follow the established pattern (ActivityIndicator from @components/ActivityIndicator wrapped in the fullScreenLoading container, reasonAttributes telemetry preserved).
On the "conditional on render context" note in the issue:
For the HOC (Use ActivityIndicator for embedded withFullTransactionOrNotFound loader #96835), the loader only ever fires for the Amount step, which renders both standalone (RHP) and embedded (IOURequestStepAmountWithTransactionOnly on the start page). I threaded the existing shouldHideHeader signal into the HOC as an optional prop and set it on the two embedded start-page usages. This touches a widely-used generic HOC — if you'd prefer a different mechanism or prop name (e.g. an explicit isEmbedded), that PR is the one to weigh in on.
Two things to flag:
⚠️Local AI tests could not run in my environment (the formatter/linter/typecheck/jest tooling isn't runnable here), so CI is the validation of record — please confirm CI is green, especially the typecheck on Use ActivityIndicator for embedded withFullTransactionOrNotFound loader #96835 (it has a small TS surface change to the HOC). Each PR notes this and leaves the Tests/QA sections for you to complete before marking ready for review.
changed the title [-]Refactor IOU cluster loaders to ActivityIndicator[/-][+][$250] Refactor IOU cluster loaders to ActivityIndicator[/+]on Aug 3, 2026
changed the title [-][Due for payment 2026-08-11] [$250] Refactor IOU cluster loaders to ActivityIndicator[/-][+][Due for payment 2026-08-28] [$250] Refactor IOU cluster loaders to ActivityIndicator[/+]on Aug 21, 2026
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.4.57-3 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue:
Activity
situchan commentedon Jul 23, 2026
@MelvinBot implement this. Create separate PRs per each occurrence
MelvinBot commentedon Jul 23, 2026
🤖 Done — I split the refactor into 4 separate draft PRs, one per occurrence, each assigned to
situchanwithExpensify/pullerbearrequested for review:IOURequestStartPage.tsx:249— manual-tab pending-reset loaderActivityIndicator(always embedded; header + tab bar always visible)IOURequestStepConfirmation.tsx:808—isLoadingTransactionearly returnshouldHideHeader→ActivityIndicatorembedded,FullScreenLoadingIndicatorstandalone RHPIOURequestStepConfirmation.tsx:937—isLoading/scan overlayActivityIndicator, preserving the absolute-fill overlay (a header is present in both contexts)withFullTransactionOrNotFound.tsx:109— HOC loadershouldHideHeaderinto the HOCAll swaps follow the established pattern (
ActivityIndicatorfrom@components/ActivityIndicatorwrapped in thefullScreenLoadingcontainer,reasonAttributestelemetry preserved).On the "conditional on render context" note in the issue:
IOURequestStepConfirmationearly return (Use ActivityIndicator for embedded IOURequestStepConfirmation loading-transaction early return #96825) uses the existingshouldHideHeaderprop.IOURequestStepAmountWithTransactionOnlyon the start page). I threaded the existingshouldHideHeadersignal into the HOC as an optional prop and set it on the two embedded start-page usages. This touches a widely-used generic HOC — if you'd prefer a different mechanism or prop name (e.g. an explicitisEmbedded), that PR is the one to weigh in on.Two things to flag:
Tests/QAsections for you to complete before marking ready for review.IOURequestStepConfirmation.tsx(and both add theActivityIndicatorimport); Use ActivityIndicator for IOURequestStartPage manual-tab pending-reset loader #96823 and Use ActivityIndicator for embedded withFullTransactionOrNotFound loader #96835 both editIOURequestStartPage.tsx. The edits are on different lines and merge cleanly, but whichever merges second in each pair may show a trivial conflict to resolve.Mark each PR "Ready for review" once you've filled in the test steps.
[-]Refactor IOU cluster loaders to ActivityIndicator[/-][+][$250] Refactor IOU cluster loaders to ActivityIndicator[/+]melvin-bot commentedon Aug 3, 2026
Job added to Upwork: https://www.upwork.com/jobs/~022084391000062890878
17 remaining items
melvin-bot commentedon Aug 10, 2026
Payment Summary
Resolving PRs:
Use ActivityIndicator for IOURequestStartPage manual-tab pending-reset loader #96823
Reviewer: @situchan owed $250 via NewDot
BugZero Checklist (@mallenexpensify)
mallenexpensify commentedon Aug 13, 2026
Payment Summary
Contributor+: @situchan due $500 via NewDot
[-][Due for payment 2026-08-11] [$250] Refactor IOU cluster loaders to ActivityIndicator[/-][+][Due for payment 2026-08-28] [$250] Refactor IOU cluster loaders to ActivityIndicator[/+]melvin-bot commentedon Aug 21, 2026
@situchan @mallenexpensify
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.4.57-3 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-08-28. 🎊
situchan commentedon Aug 23, 2026
@mallenexpensify the total should be $500 (4 PRs, $125 per each)
mallenexpensify commentedon Aug 29, 2026
Updated payment amount for @situchan to $500, will reopen for a sec in case @Julesssss disagrees
melvin-bot commentedon Sep 1, 2026
@situchan Uh oh! This issue is overdue by 2 days. Don't forget to update your issues!
laurenreidexpensify commentedon Sep 3, 2026
$500 approved @situchan New Expensify