[Payment due @nyomanjyotisa] Fix personal card reconnection for error 434 - #101045
Conversation
|
@nyomanjyotisa 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] |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Codecov Report❌ Looks like you've decreased code coverage for some files. Please write tests to increase, or at least maintain, the existing level of code coverage. See our documentation here for how to interpret this table.
|
Reviewer Checklist
Screenshots/VideosLocal testing with a Mock Bank card and seeded scrape result Android: HybridAppAndroid-pr101045-redo.mp4Android: mWeb ChromeAndroid-mWeb-pr101045-reconnect.mp4iOS: HybridAppios-pr101045.mp4iOS: mWeb Safariios-mWeb-pr101045.mp4MacOS: Chrome / SafariChrome-pr101045-user.mp4 |
joekaufmanexpensify
left a comment
There was a problem hiding this comment.
Good for product.
|
@nyomanjyotisa this is ready to review. |
|
@carlosmiceli Could you add the local and QA test steps? |
|
@joekaufmanexpensify @carlosmiceli I noticed a pre-existing offline inconsistency for the same personal card: Wallet’s Fix button opens the offline screen, while Fix card in card details is disabled. Should both be disabled offline, or open the offline screen? If this qualifies under the C+ small-fix process, I can handle it in a separate PR. ios-pr101045-offline-inconsistency.mp4 |
|
I would vote to do nothing. One could argue it is a minor UX inconsistency, however the end result is the same, and it may just be we standardized on a different pattern on wallet vs card details. Thanks for raising though! |
|
@KJ21-ENG I will do the QA because it's easier to test having internal access, the steps are like in the video (but you need a card with a 434 error): Wallet -> See card with error and Fix button -> Open card and also see the Fix button displayed. |
|
🎯 @nyomanjyotisa, thanks for reviewing and testing this PR! 🎉 A payment issue will be created for your review once this PR is deployed to production. If payment is not needed (e.g., regression PR review fix etc), react with 👎 to this comment to prevent the payment issue from being created. |
amyevans
left a comment
There was a problem hiding this comment.
Looks great, thanks @carlosmiceli!
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚧 amyevans has triggered a test Expensify/App build. You can view the workflow run here. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
🚀 Deployed to staging by https://github.com/amyevans in version: 9.4.82-0 🚀
|
|
Yes — one help site article needed an update, and I opened a draft PR for it: Docs updates for E/A#101045 Add changed card number as broken connection cause Why: this PR makes the "account not found" scrape result actionable for personal cards, so such a card now shows the broken connection error plus Fix card on the Card details page instead of quietly stopping imports. What the docs PR changes (one file,
The wording matches how What I checked and what I left alone
@carlosmiceli, please review the linked help site PR and confirm it reflects the current behavior. Then mark the linked help site PR |
|
🚀 Deployed to staging by https://github.com/amyevans in version: 9.4.86-0 🚀
|
|
🚀 Deployed to staging by https://github.com/amyevans in version: 9.4.89-0 🚀
|
|
🚀 Deployed to production by https://github.com/luacmartins in version: 9.4.89-0 🚀
Bundle Size Analysis (Sentry): |
|
🤖 Payment issue created: #101624 |

Explanation of Change
434(account not found) is ignored when evaluating company card feed health, but the same shared predicate hid a personal card's existing broken-connection message andFix cardaction. Treat434as actionable for personal cards while preserving the company-feed behavior.Fixed Issues
$ https://github.com/Expensify/Expensify/issues/678013
PROPOSAL: https://github.com/Expensify/Expensify/issues/678013#issuecomment-5656167702
Tests
Screen.Recording.2026-09-14.at.1.11.19.PM.mov
Offline tests
N/A. This changes locally derived card state only. The existing
Fix cardbutton remains disabled offline.QA Steps
Same as in the video above, you need a card with a 434 error (I will QA it, but logged in as the user by pointing dev to prod and looks correct):
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionDesignlabel 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
N/A - shared state change
Android: mWeb Chrome
N/A - shared state change
iOS: Native
N/A - shared state change
iOS: mWeb Safari
N/A - shared state change
MacOS: Chrome / Safari
Verified locally with the seeded personal Mock Bank card with scrape result
434.