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-22] [$175] Allow changing the workspace on the confirmation page when scanning from the camera button #102764
On mobile, the camera button in the bottom tab bar starts a scan against the active workspace's chat. On the Confirm details page, the workspace row under the header is then locked. Users who belong to more than one workspace can't pick a different one. To choose, they have to go back and use FAB → Create expense → Scan.
Users often don't know about this difference. They expect the camera button to work like the FAB, and they report it as a bug when they can't change the workspace.
useResetIOUType.ts sets isFromGlobalCreate = !report?.reportID, so this flag is false.
In MoneyRequestConfirmationList.tsx, canEditParticipant requires isFromGlobalCreate, so the row has no caret and no press handler.
This was intentional when the button shipped in #72030 / #72714 (see #72638). The goal was a fast path to the default workspace.
Proposal
Keep the camera button as a fast path that pre-fills the default workspace. Also make the workspace row on the confirmation page tappable, so users can switch to any workspace where they have a workspace chat, the same way they can from the FAB flow.
Domain restrictions must still apply: if isRestrictedToPreferredPolicy is true, the row stays locked.
Expected result
Tap the camera button on mobile and take or upload a receipt.
On Confirm details, the workspace row shows the default workspace.
Tap the row, pick another workspace, and submit. The expense goes to the chosen workspace.
changed the title [-]Allow changing the workspace on the confirmation page when scanning from the camera button[/-][+][$175] Allow changing the workspace on the confirmation page when scanning from the camera button[/+]on Oct 1, 2026
What changed: The camera button now opens the scan with the draft marked as a global-create expense, set in navigateGlobalCreate after the receipt is captured. The default workspace is still pre-filled, but you can now tap the workspace row and change it, as in the FAB scan flow. Workspaces restricted by isRestrictedToPreferredPolicy stay locked. FAB Quick Actions are not affected.
Checks: New unit tests, related scan and confirmation tests, lint, typecheck, React Compiler check, and spell check all pass.
Not done: I couldn't test it in the browser because the test session loaded a blank page. A person needs to test it manually on a mobile device before review.
[Contributor] The offending PR and associated issue have been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake.
Link to the comment on the PR: N/A — behavior change; the previous lock was intentional (#72714).
Link to the comment on the Issue: N/A — no offending regression.
[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: N/A — not a critical regression.
[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.
Regression Test Proposal
Precondition:
Member of workspaces A and B, with expense chats and A as the default. Use a setup that shows Confirm details after scanning. Also have an account restricted to its preferred workspace.
Test:
Scan a receipt using the camera button (desktop: floating receipt button). Verify Confirm details shows A and the workspace row is editable.
Choose B and create the expense. Verify it appears in B, not A.
Start another scan. On Confirm details, go offline, choose B, then reconnect. Verify B remains selected.
Repeat steps 1–2 using + > Create expense > Scan. Verify workspace switching still works.
With the restricted account, scan a receipt. Verify the preferred workspace remains selected and its row cannot be changed.
Activity
garrettmknight commentedon Oct 1, 2026
@MelvinBot implement this
melvin-bot commentedon Oct 1, 2026
Triggered auto assignment to Contributor-plus team member for initial proposal review - @nyomanjyotisa (
External)[-]Allow changing the workspace on the confirmation page when scanning from the camera button[/-][+][$175] Allow changing the workspace on the confirmation page when scanning from the camera button[/+]melvin-bot commentedon Oct 1, 2026
Job added to Upwork: https://www.upwork.com/jobs/~022105639979962546281
MelvinBot commentedon Oct 1, 2026
🤖 Draft PR created: Allow changing the workspace on the confirmation page when scanning from the camera button
Please mark it as "Ready for review" when it is ready for review.
What changed: The camera button now opens the scan with the draft marked as a global-create expense, set in
navigateGlobalCreateafter the receipt is captured. The default workspace is still pre-filled, but you can now tap the workspace row and change it, as in the FAB scan flow. Workspaces restricted byisRestrictedToPreferredPolicystay locked. FAB Quick Actions are not affected.Checks: New unit tests, related scan and confirmation tests, lint, typecheck, React Compiler check, and spell check all pass.
Not done: I couldn't test it in the browser because the test session loaded a blank page. A person needs to test it manually on a mobile device before review.
view run · no recording available
garrettmknight commentedon Oct 1, 2026
@nyomanjyotisa can you take it from here?
MelvinBot commentedon Oct 1, 2026
🤖 This is already implemented in the open draft PR Allow changing the workspace on the confirmation page when scanning from the camera button, so I didn't create another one.
It still needs a manual test on a mobile device before review.
nyomanjyotisacan take it from there.view run
nyomanjyotisa commentedon Oct 5, 2026
@garrettmknight I saw #102768 was closed. Should we still proceed with this change?
garrettmknight commentedon Oct 5, 2026
Yeah, closed the PR so you could open one with Melv and run it.
nyomanjyotisa commentedon Oct 6, 2026
@MelvinBot please open a replacement for #102768, as Garrett confirmed.
13 remaining items
nyomanjyotisa commentedon Oct 18, 2026
Contributor+ Checklist:
[Contributor] The offending PR and associated issue have been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake.
Link to the comment on the PR: N/A — behavior change; the previous lock was intentional (#72714).
Link to the comment on the Issue: N/A — no offending regression.
[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: N/A — not a critical regression.
[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.
Regression Test Proposal
Precondition:
Test:
Do we agree 👍 or 👎
melvin-bot commentedon Oct 21, 2026
Triggered auto assignment to @mallenexpensify (
Awaiting Payment)melvin-bot commentedon Oct 21, 2026
Payment Summary
Resolving PRs:
Allow changing the workspace on the confirmation page when scanning from the camera button #103130
Reviewer: @nyomanjyotisa owed $175 via NewDot
BugZero Checklist (@mallenexpensify)
mallenexpensify commentedon Oct 24, 2026
Payment Summary
Contributor+: @nyomanjyotisa due $175 via NewDot