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-10-27] [$175] Onboarding - #admins room opens in RHP after joining a workspace with the Join my company workspace intent #104093
Reproducible in staging?: Yes Reproducible in production?: N/A - new feature Related:#103652
Action Performed:
Sign up with a private-domain email that has a joinable workspace.
Skip validation.
Select Join my company workspace.
Validate the account.
Select a workspace to join.
Expected Result:
The #admins room does not open in the RHP after you join the workspace.
Actual Result:
The #admins room opens in the RHP.
Why:
The person joins an existing workspace. Its setup tasks may already be done and its settings already changed. The #admins room is the wrong place for them to start, so we should not open it.
When you tap Join now on a workspace that has auto-join turned on and uses the Submit plan, finishOnboarding takes the old Employer/Submit exit path. It checks only the workspace and never checks your onboarding intent (BaseOnboardingWorkspaces.tsx:146-147, L181-L184).
With that variant, the side panel shows the active workspace's #admins room (SidePanelContextProvider.tsx:88-95). It does this only when canEditWorkspaceSettings passes, and on a Submit workspace an editor passes that check.
What changes do you think we should make in order to solve the problem?
In finishOnboarding, turn off the Submit flow when you are joining with the Join my company workspace intent. To do that, add !isJoiningCompanyWorkspace to shouldUseSubmitFlow. The intent then falls through to navigateAfterOnboardingWithMicrotaskQueue, which lands on Home and keeps the side panel closed.
Next to the existing Employer test in tests/ui/WorkspaceOnboarding.tsx, add a UI test. It should check that joining an auto-join Submit workspace with the Join intent does not set RHP_ADMINS_ROOM and does not navigate to Expenses. The Employer test must keep passing.
What alternative solutions did you explore? (Optional)
You could limit the Submit flow to the Employer intent only. That would also change the existing flow with no intent (LOOKING_AROUND), so it needs a product decision first.
Investigation details
The skip-validation step doesn't cause this. The validated path also ends in finishOnboarding, and the branch depends only on automaticJoiningEnabled && policyType === SUBMIT. The PR's Test 1 probably didn't show #admins because its test workspace wasn't an auto-join Submit workspace. I haven't confirmed this.
The backend doesn't supply the variant. The App sets it on the client in navigateToSubmitWorkspaceAfterOnboarding. The backend decides only your role and active workspace after you join.
Edge case: if the server already stored an RHP variant for a micro-size company, handleRHPVariantNavigation could still open the side panel. That's unlikely here because the join flow doesn't set company size.
I didn't reproduce this in a browser, because it needs a private-domain account with a joinable auto-join Submit workspace.
Next Steps for Contributor+ team: To accept:@MelvinBot implement [this](https://github.com/Expensify/App/issues/104093) to create a draft PR. To refine:@MelvinBot <your feedback> To reject: Explain why you are rejecting Melvin's proposal.
changed the title [-]Onboarding - #admins room opens in RHP after joining a workspace with the Join my company workspace intent[/-][+][$175] Onboarding - #admins room opens in RHP after joining a workspace with the Join my company workspace intent[/+]on Oct 15, 2026
Please re-state the problem that we are trying to solve in this issue.
When a user signs up and joins an existing workspace using the Join my company workspace onboarding intent (CONST.ONBOARDING_CHOICES.JOIN_WORKSPACE), if the workspace has automatic joining enabled and uses the Submit plan, the app unexpectedly navigates to Expenses and opens the workspace's #admins room in the Right Hand Panel (RHP / Concierge Anywhere). Since the user is joining an already established company workspace, opening the #admins room in the RHP is irrelevant and disruptive.
What is the root cause of that problem?
In src/pages/OnboardingWorkspaces/BaseOnboardingWorkspaces.tsx (lines 146–147, 181–184):
shouldUseSubmitFlow only checks whether policy.automaticJoiningEnabled and policy.policyType === CONST.POLICY.TYPE.SUBMIT are truthy. It fails to check onboardingIntent or isJoiningCompanyWorkspace (onboardingIntent === CONST.ONBOARDING_CHOICES.JOIN_WORKSPACE).
When a user joins an existing Submit workspace via the join intent, shouldUseSubmitFlow evaluates to true and invokes navigateToSubmitWorkspaceAfterOnboardingWithMicrotaskQueue.
In src/libs/navigateAfterOnboarding.ts (lines 171–173), navigateToSubmitWorkspaceAfterOnboarding unconditionally sets setOnboardingRHPVariant(CONST.ONBOARDING_RHP_VARIANT.RHP_ADMINS_ROOM) and calls SidePanelActions.openSidePanel(!shouldUseNarrowLayout), forcing the #admins room to open.
Passing isJoiningCompanyWorkspace as shouldPreventOpenAdminRoom guarantees that the #admins room is never resolved as the target report across screen layouts, landing the member on Home with the side panel closed.
What alternative solutions did you explore? (Optional)
Suppressing the RHP variant inside SidePanelContextProvider.tsx: Rejected because treating the symptom inside the side panel provider leaves improper navigation calls firing in the onboarding lifecycle.
What specific scenarios should we cover in automated tests?
In tests/unit/pages/OnboardingWorkspacesTest.tsx (or tests/unit/libs/navigateAfterOnboarding.test.ts):
User joins an auto-join Submit workspace with intent JOIN_WORKSPACE: Verify navigateToSubmitWorkspaceAfterOnboardingWithMicrotaskQueue is not called, setOnboardingRHPVariant(CONST.ONBOARDING_RHP_VARIANT.RHP_ADMINS_ROOM) is not invoked, and the side panel remains closed.
User creates/joins a Submit workspace with intent EMPLOYER: Verify navigateToSubmitWorkspaceAfterOnboardingWithMicrotaskQueue continues to execute normally.
changed the title [-][$175] Onboarding - #admins room opens in RHP after joining a workspace with the Join my company workspace intent[/-][+][Due for payment 2026-10-27] [$175] Onboarding - #admins room opens in RHP after joining a workspace with the Join my company workspace intent[/+]on Oct 20, 2026
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.5.14-3 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-10-27. 🎊
The following checklist (instructions) will need to be completed before the issue can be closed. Please copy/paste the Contributor+ 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]. If no checklist is needed for this issue, you can click: [no checklist button]
Activity
MelvinBot commentedon Oct 15, 2026
Proposal
What is the root cause of that problem?
When you tap Join now on a workspace that has auto-join turned on and uses the Submit plan,
finishOnboardingtakes the old Employer/Submit exit path. It checks only the workspace and never checks your onboarding intent (BaseOnboardingWorkspaces.tsx:146-147,L181-L184).That path does three things (
navigateAfterOnboarding.ts:171-173):RHP_ADMINS_ROOMWith that variant, the side panel shows the active workspace's #admins room (
SidePanelContextProvider.tsx:88-95). It does this only whencanEditWorkspaceSettingspasses, and on a Submit workspace an editor passes that check.[Payment due @abzokhattab] Add the join-workspace onboarding intent and Concierge follow up tasks added the Join my company workspace intent. It did not exclude that intent from this branch.
What changes do you think we should make in order to solve the problem?
In
finishOnboarding, turn off the Submit flow when you are joining with the Join my company workspace intent. To do that, add!isJoiningCompanyWorkspacetoshouldUseSubmitFlow. The intent then falls through tonavigateAfterOnboardingWithMicrotaskQueue, which lands on Home and keeps the side panel closed.Next to the existing Employer test in
tests/ui/WorkspaceOnboarding.tsx, add a UI test. It should check that joining an auto-join Submit workspace with the Join intent does not setRHP_ADMINS_ROOMand does not navigate to Expenses. The Employer test must keep passing.What alternative solutions did you explore? (Optional)
You could limit the Submit flow to the Employer intent only. That would also change the existing flow with no intent (
LOOKING_AROUND), so it needs a product decision first.Investigation details
finishOnboarding, and the branch depends only onautomaticJoiningEnabled && policyType === SUBMIT. The PR's Test 1 probably didn't show #admins because its test workspace wasn't an auto-join Submit workspace. I haven't confirmed this.navigateToSubmitWorkspaceAfterOnboarding. The backend decides only your role and active workspace after you join.handleRHPVariantNavigationcould still open the side panel. That's unlikely here because the join flow doesn't set company size.Possibly related: [HOLD UX discussion][$175] Close the side panel after onboarding for non-manage-team intents changes the same Employer/Submit exit path.
Next Steps for Contributor+ team:
To accept:
@MelvinBot implement [this](https://github.com/Expensify/App/issues/104093)to create a draft PR.To refine:
@MelvinBot <your feedback>To reject: Explain why you are rejecting Melvin's proposal.
j3ffffff commentedon Oct 15, 2026
melvin-bot commentedon Oct 15, 2026
Triggered auto assignment to Contributor-plus team member for initial proposal review - @gijoe0295 (
External)[-]Onboarding - #admins room opens in RHP after joining a workspace with the Join my company workspace intent[/-][+][$175] Onboarding - #admins room opens in RHP after joining a workspace with the Join my company workspace intent[/+]melvin-bot commentedon Oct 15, 2026
Job added to Upwork: https://www.upwork.com/jobs/~022110747210238018431
abzokhattab commentedon Oct 15, 2026
Reassigning as it's a part of the Bottom-Up Submit Plan project
camesenin commentedon Oct 15, 2026
Proposal
Please re-state the problem that we are trying to solve in this issue.
When a user signs up and joins an existing workspace using the Join my company workspace onboarding intent (
CONST.ONBOARDING_CHOICES.JOIN_WORKSPACE), if the workspace has automatic joining enabled and uses the Submit plan, the app unexpectedly navigates to Expenses and opens the workspace's#adminsroom in the Right Hand Panel (RHP / Concierge Anywhere). Since the user is joining an already established company workspace, opening the#adminsroom in the RHP is irrelevant and disruptive.What is the root cause of that problem?
In
src/pages/OnboardingWorkspaces/BaseOnboardingWorkspaces.tsx(lines 146–147, 181–184):shouldUseSubmitFlowonly checks whetherpolicy.automaticJoiningEnabledandpolicy.policyType === CONST.POLICY.TYPE.SUBMITare truthy. It fails to checkonboardingIntentorisJoiningCompanyWorkspace(onboardingIntent === CONST.ONBOARDING_CHOICES.JOIN_WORKSPACE).shouldUseSubmitFlowevaluates totrueand invokesnavigateToSubmitWorkspaceAfterOnboardingWithMicrotaskQueue.src/libs/navigateAfterOnboarding.ts(lines 171–173),navigateToSubmitWorkspaceAfterOnboardingunconditionally setssetOnboardingRHPVariant(CONST.ONBOARDING_RHP_VARIANT.RHP_ADMINS_ROOM)and callsSidePanelActions.openSidePanel(!shouldUseNarrowLayout), forcing the#adminsroom to open.JOIN_WORKSPACEintent, it did not exclude it fromshouldUseSubmitFlow.What changes do you think we should make in order to solve the problem?
src/pages/OnboardingWorkspaces/BaseOnboardingWorkspaces.tsx:Gate
shouldUseSubmitFlowso that it never applies when joining a company workspace:isJoiningCompanyWorkspaceistrue,shouldUseSubmitFlowisfalse, falling through cleanly tonavigateAfterOnboardingWithMicrotaskQueue:navigateAfterOnboardingWithMicrotaskQueue( isSmallScreenWidth, isBetaEnabled(CONST.BETAS.DEFAULT_ROOMS), conciergeReportID, reportNameValuePairs, policy.automaticJoiningEnabled ? policy.policyID : undefined, undefined, - false, + isJoiningCompanyWorkspace, );Passing
isJoiningCompanyWorkspaceasshouldPreventOpenAdminRoomguarantees that the#adminsroom is never resolved as the target report across screen layouts, landing the member on Home with the side panel closed.What alternative solutions did you explore? (Optional)
shouldUseSubmitFlowstrictly toonboardingIntent === CONST.ONBOARDING_CHOICES.EMPLOYER: Rejected to prevent unintended side effects on legacy flows (LOOKING_AROUND). Explicitly checking!isJoiningCompanyWorkspaceis surgical and directly addresses the regression from PR [Payment due @abzokhattab] Add the join-workspace onboarding intent and Concierge follow up tasks #103652.SidePanelContextProvider.tsx: Rejected because treating the symptom inside the side panel provider leaves improper navigation calls firing in the onboarding lifecycle.What specific scenarios should we cover in automated tests?
In
tests/unit/pages/OnboardingWorkspacesTest.tsx(ortests/unit/libs/navigateAfterOnboarding.test.ts):JOIN_WORKSPACE: VerifynavigateToSubmitWorkspaceAfterOnboardingWithMicrotaskQueueis not called,setOnboardingRHPVariant(CONST.ONBOARDING_RHP_VARIANT.RHP_ADMINS_ROOM)is not invoked, and the side panel remains closed.EMPLOYER: VerifynavigateToSubmitWorkspaceAfterOnboardingWithMicrotaskQueuecontinues to execute normally.Contributor details
Your Expensify account email: [email protected]
Upwork Profile Link: https://www.upwork.com/freelancers/~0170d6b02e9440e604
melvin-bot commentedon Oct 15, 2026
✅ Contributor details stored successfully. Thank you for contributing to Expensify!
7 remaining items
[-][$175] Onboarding - #admins room opens in RHP after joining a workspace with the Join my company workspace intent[/-][+][Due for payment 2026-10-27] [$175] Onboarding - #admins room opens in RHP after joining a workspace with the Join my company workspace intent[/+]melvin-bot commentedon Oct 20, 2026
@abzokhattab
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.5.14-3 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-10-27. 🎊
The following checklist (instructions) will need to be completed before the issue can be closed. Please copy/paste the Contributor+ 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]. If no checklist is needed for this issue, you can click: [no checklist button]
melvin-bot commentedon Oct 23, 2026
@abzokhattab Uh oh! This issue is overdue by 2 days. Don't forget to update your issues!
abzokhattab commentedon Oct 24, 2026
Should this be closed or kept open for payment? I'm not sure how our project payments work. @hungvu193 @carlosmiceli @garrettmknight
garrettmknight commentedon Oct 26, 2026
We'll handle this with the Submit project payment.