fix: Fix on LHN while no error in chat when paid offline the deleted IOU then turn online#96258
Conversation
…IOU then turn online
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2cfe6511c1
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| if (isDeletedAction(parentReportAction)) { | ||
| continue; |
There was a problem hiding this comment.
Guard missing parent actions before skipping propagation
For child reports whose parentReportActionID is absent or whose parent action has not been loaded, parentReportAction is undefined; ReportActionsUtils.isDeletedAction(undefined) returns true because it treats the missing message as the legacy empty deleted shape. In those cases this continue suppresses error propagation even though there is no deleted preview action, so an errored IOU/expense child can stop marking the parent chat with the Fix indicator.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
I think it's not a real case. When a report is loaded, the parent report is also loaded as well. Besides, if we still propagation error when the parent report is not available, if we open the parent report we can see the fix label without the action to fix in offline.
joekaufmanexpensify
left a comment
There was a problem hiding this comment.
Fine for product.
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppScreen.Recording.2026-07-21.at.19.17.19.movAndroid: mWeb ChromeScreen.Recording.2026-07-21.at.19.20.49.moviOS: HybridAppScreen.Recording.2026-07-21.at.19.23.31.moviOS: mWeb SafariScreen.Recording.2026-07-21.at.19.25.05.movMacOS: Chrome / SafariScreen.Recording.2026-07-21.at.19.10.40.mov |
|
@nkdengineer Please review the Codex comment and merge main to fix the conflict |
|
🚧 Beamanator 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! 🧪🧪
|
|
🚀 Deployed to staging by https://github.com/Beamanator in version: 9.4.42-0 🚀
|
|
🤖 Help site review: no changes required. This PR is an internal bug fix to the report-attributes derived-value logic. It stops a stale Fix (red brick road) indicator from showing on a DM row in the LHN when the underlying IOU's parent action was deleted (e.g. another user deleted the request while an optimistic pay was queued offline). It corrects erroneous UI behavior — it does not add or change any user-facing feature, setting, tab, button, or workflow that Expensify's help site ( Because there are no documentable behavior changes, I did not create a draft help site PR. If you believe this behavior is (or should be) documented somewhere I missed, reply with the article and I'll open a docs PR. |
|
Hi @nkdengineer. QA team failed this PR with an original issue cc @Beamanator @joekaufmanexpensify 1784712579893.93934_-_WEB.mp4 |
fix: Fix on LHN while no error in chat when paid offline the deleted IOU then turn online
|
@IuliiaHerets Could you test this PR on version 9.4.42-0? |
|
@huult, we used the 9.4.42-0 build, the same on Native apps 1784725041409.Sbpd2261_1_.mp4 |
Screen.Recording.2026-07-22.at.20.30.58.mov@IuliiaHerets I can't reproduce this issue on version 9.4.42-0 |
|
@huult I'll ask team to retest |
|
@huult, QA team could still see one additional User B chat with the Fix label in the LHN Screen.Recording.2026-07-22.at.8.39.47.PM.mov |
|
@huult I think this is the transaction thread report which is failed to create in offline when we open the expense report with only one transaction. So it's intentional as the failureData add this error not our bug. The label on main chat doesn't display which mean it's fixed |
Explanation of Change
fix: Fix on LHN while no error in chat when paid offline the deleted IOU then turn online
Fixed Issues
$ #93934
PROPOSAL: #93934 (comment)
Tests
Offline tests
QA Steps
Same as test
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
Screen.Recording.2026-07-16.at.14.45.56.mov
Android: mWeb Chrome
Screen.Recording.2026-07-16.at.14.38.41.mov
iOS: Native
Screen.Recording.2026-07-16.at.14.43.06.mov
iOS: mWeb Safari
Screen.Recording.2026-07-16.at.14.39.54.mov
MacOS: Chrome / Safari
Screen.Recording.2026-07-16.at.14.34.35.mov