Fix : Assign new cards - Assign new cards tab with infinite spinner#85717
Fix : Assign new cards - Assign new cards tab with infinite spinner#85717carlosmiceli merged 2 commits intoExpensify:mainfrom
Conversation
…state for better reactivity
|
@hungvu193 Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppAndroid: mWeb ChromeiOS: HybridAppiOS: mWeb SafariMacOS: Chrome / Safari |
|
@MelvinBot review please. |
Code ReviewOverall: This looks good. The root cause and fix are correct. All CI checks pass. SummaryThe bug was that The fix converts ObservationsThe fix is safe for all callers:
Minor note (non-blocking): The effect at lines 116-122 now appears to be effectively unused:
This was arguably the case before this PR too (since no caller passes both No blocking concerns — LGTM. |
|
🚧 @carlosmiceli has triggered a test Expensify/App build. You can view the workflow run here. |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
Reviewing this PR |
|
@fedirjh I can reproduce the original issue with add new feed flow. Let me try to reproduce it again Screen.Recording.2026-03-19.at.17.02.56.mov |
|
@fedirjh it works well when I select a different bank (I.e my existing feed is "Truist", then if I select "Regions Banks" it works well) Screen.Recording.2026-03-19.at.17.11.32.mov |
|
✅ BrokenCardFeedConnectionPage MacOS: Chrome / SafariScreen.Recording.2026-03-19.at.17.19.51.web.movIOS: NativeScreen.Recording.2026-03-19.at.17.29.30.mov |
|
@fedirjh I can still reproduce the original issue if I have a broken feed in another workspace (which makes Screen.Recording.2026-03-19.at.18.05.37.mov |
|
🚀 Deployed to staging by https://github.com/carlosmiceli in version: 9.3.41-0 🚀
Bundle Size Analysis (Sentry): |
|
Yes, we also reverted this PR #85807 |
|
@hoangzinh, can we check it off the list? |
|
@carlosmiceli should we mark this PR as checked in this checklist #85862? Or we should remove them from the list? |
|
@IuliiaHerets @hoangzinh do we remove them when they've been reverted? Whatever the usual system is in those cases, the feature is gone from staging. |
|
🚀 Deployed to production by https://github.com/cristipaval in version: 9.3.41-4 🚀
|
Explanation of Change
This change fixes the infinite spinner in the Assign new cards refresh flow for direct card feeds.
Previously,
isRefreshCompleteonly becametruewhen the feed transitioned from expired → non-expired. For the common case where the feed is already non-expired, that condition never passed, so the flow stayed on loading forever.I updated
useBankConnectionso refresh completion can also be driven by a localrefreshSuccessHandledstate. In refresh flow, when the feed is confirmed healthy (!isFeedExpired && !isFeedConnectionBroken), we set that state totrue, which allowsisRefreshCompleteto becometrueand render the existing refresh success confirmation screen instead of spinning indefinitely. This keeps the normal expired-feed behavior unchanged while fixing the non-expired path.Fixed Issues
$ #85693
PROPOSAL:
Tests
Precondition: workspace with a direct card feed (e.g. Wells Fargo)
Offline tests
N/A
QA Steps
Same as Tests
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, 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.ScrollViewcomponent to make it scrollable when more elements are added to the page.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
CleanShot.2026-03-18.at.23.59.38.mp4
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari