fix: Updated task title isn't reflected in Reports > Chats in Offline and infinite loading when click on the time of the task in Reports > Chats#84290
Conversation
… and infinite loading when click on the time of the task in Reports > Chats
|
@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] |
|
The failing eslint test seems unrelated to the changes made in this PR as |
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.
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 17c4dbe1da
ℹ️ 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".
|
@Uzaifm127 Can you merge main to resolve these ESlint issue? Also can you please provide more context about the RCA so I can review it more carefully? Thanks |
|
Will provide RCA within 3 hours. |
RCA analysisIssue 1 root cause (title not updating in Reports > Chats)In created-task chat rows,
Issue 2 root cause (timestamp click opens infinite-loading RHP offline)In Search chat-row navigation, we always routed with App/src/components/Search/index.tsx Lines 1052 to 1053 in 3bc719c For offline-created task rows, that action can still be optimistic/in-flight ( The bug is specifically in the “anchor-to-action” navigation decision, not in generic report opening. |
|
Soon I'll review this and provide the overview of what this PR changes. |
…ng it for online ones
|
@codex review |
|
Codex Review: Didn't find any major issues. Bravo. ℹ️ About Codex in GitHubCodex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
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". |
|
In this PR, we are:
|
|
Looking good so far! I'm doing some testing |
@hungvu193 Can you tell me what kind of testing you are doing? Just curious to know. |
Nothing special, just general testing, QA steps, offline steps, simulate connection fail... |
|
@Uzaifm127 It doesn't update the task title for me, can you take a look? Screen.Recording.2026-03-11.at.12.36.23.mov |
|
@hungvu193 Checking from my side... |
mac-chrome.mov@hungvu193 Fixed! The issue you pointed out only occuring when we created the task online and then update the online created task offline. Previously (before the fix):
|
|
@Uzaifm127 Can you check this bug?
Screen.Recording.2026-03-12.at.23.40.51.movScreen.Recording.2026-03-12.at.23.43.16.mov |
|
Follup-up from #84290 (comment) There's an inconsistency between Task between Reports > Chats and inside Report Screen. We can't mark task as completed in Reports > Chats after editing offline, but we can do it inside Report Sreen (Check the second video). |
|
@MelvinBot Review this pull request, check the optimisticData that is added, and verify if there's lack of optimistic data |
Optimistic Data Review for PR #84290I reviewed all the optimistic, success, and failure data in this PR. Here's the analysis: 1.
|
| Area | Optimistic | Success | Failure | Verdict |
|---|---|---|---|---|
editTask → parent action childReportName |
✅ Added | — (not needed, follows pattern) | ✅ Added | Complete |
editTask → task report reportName |
✅ Pre-existing | ✅ Pre-existing | ✅ Pre-existing | Complete |
createTaskAndNavigate → parent action childReportName |
✅ Pre-existing (set in builder) | — (server provides value) | ✅ Pre-existing | Complete |
| Search navigation → optimistic action handling | ✅ Correctly skips deep-link | N/A | N/A | Complete |
| TaskPreview → title display priority | ✅ Reads live Onyx first | N/A | N/A | Complete |
I don't see any missing optimistic data. The optimistic/failure data additions for childReportName in editTask follow established patterns, the search components correctly handle optimistic reports via getReportOrDraftReport, and the deep-link skip prevents infinite loading for unresolved action IDs.
… offline and enable the task checkbox in Reports page
|
Fixed the two issues which you shared in the video, i.e. 1. Task status isn't synched, 2. Task status can't be updated from Reports > Chats. I wanna give an overview of what we are solving: There are 5 different issues which we are solving in this PR:
Issue 3, 4 and 5 are already existing issues which wasn't being covered in the scope of this PR. Hans, can Melvin update the PR description to include the additional issues? staging testing 1staging-testing-1.mp4staging testing 2staging-testing-2.mp4after the changessolution-testing.mp4 |
|
Cool. Thanks for your update. I'll verify the changes |
He can if we assign @MelvinBot to this issue 😄 |
It's He. 😄, Jokes apart, I'll update the PR description tomorrow or the day after tomorrow once the PR got approved. |
| const taskReportID = taskReport?.reportID ?? action?.childReportID; | ||
| // Prefer the live task report name so offline title edits are reflected immediately. | ||
| const taskTitle = taskReport?.reportName ?? action?.childReportName ?? ''; | ||
| const taskContextReport = React.useMemo( |
There was a problem hiding this comment.
We can remove useMemo here and let's react-compiler do its job.
There was a problem hiding this comment.
Just a min...
Looking into that.
There was a problem hiding this comment.
Removed the useMemo.
There was a problem hiding this comment.
I'm also getting the wierd issue on latest main.
main-issue.mp4
There was a problem hiding this comment.
yes, it happens randomly, I couldn't reproduce it now.
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppAndroid.movAndroid: mWeb ChromemChrome.moviOS: HybridAppIOS.moviOS: mWeb SafariSafari.movMacOS: Chrome / SafariChrome.mov |
|
@inimaga This is waiting for your final review |
|
🚧 @inimaga 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! 🧪🧪
|
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚀 Deployed to staging by https://github.com/inimaga in version: 9.3.40-0 🚀
|
|
🚀 Deployed to staging by https://github.com/inimaga in version: 9.3.40-0 🚀
|
|
🚀 Deployed to production by https://github.com/cristipaval in version: 9.3.41-4 🚀
|

Explanation of Change
In this PR, we are solving three things:
Fixed Issues
$ #84134
PROPOSAL:
Tests
Offline tests
Same as Test
QA Steps
Same as Test
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
Android: Native
Android-native.mp4
Android: mWeb Chrome
Android-mweb.mp4
iOS: Native
ios-native.mp4
iOS: mWeb Safari
ios-mweb.mp4
MacOS: Chrome / Safari
macOS.mp4