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-03-30] [$250] Navigate to non-existing link - Inbox opens upon clicking on "Go back to home page" #85222
Version Number: 9.3.37-0 Reproducible in staging?: Yes Reproducible in production?: Yes If this was caught during regression testing, add the test name, ID and link from BrowserStack:https://test-management.browserstack.com/projects/2241336/folder/13646992/test-cases/41909507 Email or phone of affected tester (no customers): undefined Issue reported by: Applause Internal Team Device used: MacOS Sequoia 15.7.2, Chrome
Please re-state the problem that we are trying to solve in this issue.
When navigating to a non-existing URL (e.g., /anything), the app correctly shows a "Page not found" screen. However, clicking the "Go back to home page" link navigates to the Inbox with a chat opened, instead of the actual Home page (dashboard).
What is the root cause of that problem?
The "Go back to home page" link in FullPageNotFoundView defaults its onLinkPress to Navigation.goBackToHome() (FullPageNotFoundView.tsx:78).
goBackToHome() calls goBack(ROUTES.INBOX) (Navigation.ts:551-564), which navigates to the REPORTS_SPLIT_NAVIGATOR (the chat list + report view). When this navigator mounts, ReportsSplitNavigator automatically opens the last accessed report via findLastAccessedReport() — which is why the user sees the Inbox with a chat open.
The app has two distinct routes: ROUTES.HOME ('home') for the actual Home dashboard (HomePage.tsx with TimeSensitive, ForYou, Discover sections), and ROUTES.INBOX ('inbox') for the chat/report list. These are separate tabs (NAVIGATION_TABS.HOME vs NAVIGATION_TABS.INBOX). The goBackToHome() function navigates to ROUTES.INBOX, not ROUTES.HOME — a naming mismatch likely from before the Home dashboard page existed as a separate screen.
What changes do you think we should make in order to solve the problem?
Override the onLinkPress in the NotFoundPage component to navigate to ROUTES.HOME instead of relying on the default Navigation.goBackToHome() which goes to INBOX. Specifically, pass a custom onLinkPress prop from NotFoundPage to FullPageNotFoundView that navigates to the Home tab (e.g., using Navigation.navigate(ROUTES.HOME)).
This approach is scoped to the NotFound page and avoids changing the goBackToHome() function itself, which may be intentionally used elsewhere to navigate to the Inbox.
What alternative solutions did you explore? (Optional)
Change goBackToHome() globally to navigate to ROUTES.HOME instead of ROUTES.INBOX — this would fix NotFoundPage but could break other callers that intentionally expect Inbox navigation.
Rename goBackToHome() to goBackToInbox() and create a new goBackToHome() that navigates to ROUTES.HOME — more comprehensive refactor but higher risk.
Next Steps for Contributor+ team: Reply with @MelvinBot implement this to create a draft PR, @MelvinBot <your feedback> to refine this analysis, or explain why you are rejecting Melvin's proposal.
changed the title [-]Navigate to non-existing link - Inbox opens upon clicking on "Go back to home page"[/-][+][$250] Navigate to non-existing link - Inbox opens upon clicking on "Go back to home page"[/+]on Mar 13, 2026
* The goBack function doesn't support recursive pop e.g. pop route from root and then from nested navigator.
* There is only one case where recursive pop is needed which is going back to home.
* This function will cover this case.
* We will implement recursive pop if more use cases will appear.
*/
functiongoBackToHome(){
constisNarrowLayout=getIsNarrowLayout();
// This set the right split navigator.
goBack(ROUTES.INBOX);
// We want to keep the report screen in the split navigator on wide layout.
if(!isNarrowLayout){
return;
}
// This set the right route in this split navigator.
goBack(ROUTES.INBOX);
}
But now our main page is HOME, not INBOX.
What changes do you think we should make in order to solve the problem?
I think there need to be a few more changes here to get this logic right, but we can ask the product team about that.
My main idea is to create a new function, similar to goBackToHome, which will redirect not to the Inbox, but to the HOME page. Or, instead of creating a new function, we could add a parameter to the existing one, and depending on the parameter, navigate to the desired page:
functiongoBackToHome(shouldRedirectToHome=true){constisNarrowLayout=getIsNarrowLayout();// This set the right split navigator.goBack(shouldRedirectToHome ? ROUTES.HOME : ROUTES.INBOX);// We want to keep the report screen in the split navigator on wide layout.if(!isNarrowLayout){return;}// This set the right route in this split navigator.goBack(shouldRedirectToHome ? ROUTES.HOME : ROUTES.INBOX);}
We’ll also need to review all pages that use FullPageNotFoundView, and those used on chat-related pages should redirect to the INBOX rather than the HOME page—this is the current logic. For such pages, we can pass a separate parameter (for example, shouldRedirectToHome = false), and then pass this parameter to goBackToHome. As a result, most pages that use FullPageNotFoundView will lead to HOME, while those used on chat pages will lead to INBOX.
What alternative solutions did you explore? (Optional)
Reminder: Please use plain English, be brief and avoid jargon. Feel free to use images, charts or pseudo-code if necessary. Do not post large multi-line diffs or write walls of text. Do not create PRs unless you have been hired for this job.
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.3.41-4 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue:
@truph01 The PR fixing this issue has been merged! The following checklist (instructions) will need to be completed before the issue can be closed. Please copy/paste the BugZero Checklist from here into a new comment on this GH and complete it. If you have the K2 extension, you can simply click: [this button]
[Contributor] The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake.
Link to comment:
[Contributor] If the regression was CRITICAL (e.g. interrupts a core flow) A discussion in #expensify-open-source has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner.
Link to discussion:
[Contributor] If it was decided to create a regression test for the bug, please propose the regression test steps using the template below to ensure the same bug will not reach production again.
[BugZero Assignee] Create a GH issue for creating/updating the regression test once above steps have been agreed upon.
Verify the "Page not found" screen appears with "Go back to home page" link
Click the "Go back to home page" link
Verify you land on the Home dashboard (URL shows /home, page shows "Home" heading with Time sensitive, For you, Discover sections) — NOT the Inbox with a chat open
Activity
MelvinBot commentedon Mar 13, 2026
Proposal
Please re-state the problem that we are trying to solve in this issue.
When navigating to a non-existing URL (e.g.,
/anything), the app correctly shows a "Page not found" screen. However, clicking the "Go back to home page" link navigates to the Inbox with a chat opened, instead of the actual Home page (dashboard).What is the root cause of that problem?
The "Go back to home page" link in
FullPageNotFoundViewdefaults itsonLinkPresstoNavigation.goBackToHome()(FullPageNotFoundView.tsx:78).goBackToHome()callsgoBack(ROUTES.INBOX)(Navigation.ts:551-564), which navigates to theREPORTS_SPLIT_NAVIGATOR(the chat list + report view). When this navigator mounts,ReportsSplitNavigatorautomatically opens the last accessed report viafindLastAccessedReport()— which is why the user sees the Inbox with a chat open.The app has two distinct routes:
ROUTES.HOME('home') for the actual Home dashboard (HomePage.tsxwith TimeSensitive, ForYou, Discover sections), andROUTES.INBOX('inbox') for the chat/report list. These are separate tabs (NAVIGATION_TABS.HOMEvsNAVIGATION_TABS.INBOX). ThegoBackToHome()function navigates toROUTES.INBOX, notROUTES.HOME— a naming mismatch likely from before the Home dashboard page existed as a separate screen.What changes do you think we should make in order to solve the problem?
Override the
onLinkPressin theNotFoundPagecomponent to navigate toROUTES.HOMEinstead of relying on the defaultNavigation.goBackToHome()which goes to INBOX. Specifically, pass a customonLinkPressprop fromNotFoundPagetoFullPageNotFoundViewthat navigates to the Home tab (e.g., usingNavigation.navigate(ROUTES.HOME)).This approach is scoped to the NotFound page and avoids changing the
goBackToHome()function itself, which may be intentionally used elsewhere to navigate to the Inbox.What alternative solutions did you explore? (Optional)
goBackToHome()globally to navigate toROUTES.HOMEinstead ofROUTES.INBOX— this would fix NotFoundPage but could break other callers that intentionally expect Inbox navigation.goBackToHome()togoBackToInbox()and create a newgoBackToHome()that navigates toROUTES.HOME— more comprehensive refactor but higher risk.Next Steps for Contributor+ team: Reply with
@MelvinBot implement thisto create a draft PR,@MelvinBot <your feedback>to refine this analysis, or explain why you are rejecting Melvin's proposal.melvin-bot commentedon Mar 13, 2026
Triggered auto assignment to Contributor-plus team member for initial proposal review - @truph01 (
External)melvin-bot commentedon Mar 13, 2026
Job added to Upwork: https://www.upwork.com/jobs/~022032425186913195348
[-]Navigate to non-existing link - Inbox opens upon clicking on "Go back to home page"[/-][+][$250] Navigate to non-existing link - Inbox opens upon clicking on "Go back to home page"[/+]Eskalifer1 commentedon Mar 13, 2026
Proposal
Please re-state the problem that we are trying to solve in this issue.
Navigate to non-existing link - Inbox opens upon clicking on "Go back to home page"
What is the root cause of that problem?
Right now, we're navigating to the Inbox page here:
App/src/components/BlockingViews/FullPageNotFoundView.tsx
Line 78 in 463f3e6
App/src/libs/Navigation/Navigation.ts
Lines 545 to 564 in 463f3e6
But now our main page is
HOME, notINBOX.What changes do you think we should make in order to solve the problem?
I think there need to be a few more changes here to get this logic right, but we can ask the product team about that.
My main idea is to create a new function, similar to
goBackToHome, which will redirect not to the Inbox, but to the HOME page. Or, instead of creating a new function, we could add a parameter to the existing one, and depending on the parameter, navigate to the desired page:We’ll also need to review all pages that use
FullPageNotFoundView, and those used on chat-related pages should redirect to the INBOX rather than the HOME page—this is the current logic. For such pages, we can pass a separate parameter (for example,shouldRedirectToHome = false), and then pass this parameter togoBackToHome. As a result, most pages that useFullPageNotFoundViewwill lead toHOME, while those used on chat pages will lead toINBOX.What alternative solutions did you explore? (Optional)
Reminder: Please use plain English, be brief and avoid jargon. Feel free to use images, charts or pseudo-code if necessary. Do not post large multi-line diffs or write walls of text. Do not create PRs unless you have been hired for this job.
30 remaining items
melvin-bot commentedon Mar 23, 2026
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.3.41-4 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-03-30. 🎊
For reference, here are some details about the assignees on this issue:
melvin-bot commentedon Mar 23, 2026
@truph01 The PR fixing this issue has been merged! The following checklist (instructions) will need to be completed before the issue can be closed. Please copy/paste the BugZero Checklist from here into a new comment on this GH and complete it. If you have the K2 extension, you can simply click: [this button]
melvin-bot commentedon Mar 23, 2026
Triggered auto assignment to @mallenexpensify (
Awaiting Payment)melvin-bot commentedon Mar 30, 2026
Payment Summary
Upwork Job
BugZero Checklist (@mallenexpensify)
truph01 commentedon Mar 30, 2026
BugZero Checklist:
[Contributor] The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake.
Link to comment:
[Contributor] If the regression was CRITICAL (e.g. interrupts a core flow) A discussion in #expensify-open-source has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner.
Link to discussion:
[Contributor] If it was decided to create a regression test for the bug, please propose the regression test steps using the template below to ensure the same bug will not reach production again.
[BugZero Assignee] Create a GH issue for creating/updating the regression test once above steps have been agreed upon.
Link to issue:
Regression Test Proposal
Precondition:
Test:
Do we agree 👍 or 👎
Zapier Logs
Run ID: 00040eee-7a94-a43a-af3b-a8ae53466c44melvin-bot commentedon Mar 30, 2026
Payment Summary
Upwork Job
BugZero Checklist (@mallenexpensify)
mallenexpensify commentedon Mar 31, 2026
Payment Summary
Contributor+: @truph01 due $250 via NewDot
garrettmknight commentedon May 10, 2026
$250 approved for @truph01