Skip to content

[Due for payment 2026-08-07] Expense - Rate field is disabled when account has only non-default workspaces #91874

Closed

Description

@applause-bot

If you haven’t already, check out our contributing guidelines for onboarding and email contributors@expensify.com to request to join our Slack channel!


Version Number: 9.3.84-0
Reproducible in staging?: Yes
Reproducible in production?: N/A - new feature, doesn't exist in prod
If this was caught during regression testing, add the test name, ID and link from BrowserStack: #84382
Email or phone of affected tester (no customers): soidjnosnjdoijsioj@gmail.com
Issue reported by: Applause Internal Team
Bug source: Exploratory - Significant User Experience Deterioration
Device used: Mac 26.5 / Chrome
App Component: Money Requests

Action Performed:

Precondition:

  • Create two workspaces.
  • Make personal policy as default policy on OD.
  1. Go to staging.new.expensify.com
  2. Go to self DM.
  3. Create a distance expense.
  4. Open the expense.
  5. Click Rate field.
    → Workspace selector opens.
  6. Close the RHP.
  7. Click More > Split.
  8. Click on any split.
  9. Click Rate field.

Expected Result:

Rate field on split details page will open workspace selector.

Actual Result:

Rate field on split details page is disabled when account has only non-default workspaces.

Workaround:

Unknown

Platforms:

  • Android: App
  • Android: mWeb Chrome
  • iOS: App
  • iOS: mWeb Safari
  • iOS: mWeb Chrome
  • Windows: Chrome
  • MacOS: Chrome Safari

Screenshots/Videos

Bug7164516_1779905212468.4.mp4

View all open jobs on GitHub

Applause Internal Information
Exported by: Julia Ponikarchuk
Bug ID: 7164516

Issue OwnerCurrent Issue Owner: @ZhenjaHorbach

Activity

  1. applause-bot commented on May 27, 2026

    @applause-bot
    Author

    While Applause doesn't embed attachments for this bug, here are the links for quick view:
    https://platform.applause.com/services/links/v1/external/8bf658d89601514a227ff7c47599dbcef9733f9e1cd9cf85c0409fd7f52d062e

  2. added
    DeployBlockerCashThis issue or pull request should block deployment
    BugSomething is broken. Auto assigns a BugZero manager.
    on May 27, 2026
  3. melvin-bot commented on May 27, 2026

    @melvin-bot

    You have been assigned to this deploy blocker because you recently merged this PR: #84382

  4. melvin-bot commented on May 27, 2026

    @melvin-bot

    💬 A slack conversation has been started in #expensify-open-source

  5. github-actions commented on May 27, 2026

    @github-actions
    Contributor

    👋 Friendly reminder that deploy blockers are time-sensitive ⏱ issues! Check out the open `StagingDeployCash` deploy checklist to see the list of PRs included in this release, then work quickly to do one of the following:

    1. Identify the pull request that introduced this issue and revert it.
    2. Find someone who can quickly fix the issue.
    3. Fix the issue yourself.
  6. MelvinBot commented on May 27, 2026

    @MelvinBot
    Contributor

    Proposal

    What is the root cause of that problem?

    After splitting a distance track expense in self-DM, the split child transactions lose their "track expense" status — the parent report action type becomes CREATE instead of TRACK. The Rate field's interactivity is gated by canEditDistanceOrRate:

    isPolicyAccessible(policy) || isTrackExpense || isP2PDistanceRequest
    

    For split children in self-DM: isTrackExpense is false (action type is CREATE, not TRACK), isP2PDistanceRequest is false, and policy resolves to undefined because usePolicyForMovingExpenses returns undefined when the user has multiple workspaces and the active policy is a personal policy (filtered out by activePolicySelector). All three conditions fail → canEditDistanceOrRate = false → Rate field is disabled.

    Additionally, even if the field were interactive, the workspace selector fallback at line 783-796 only triggers for track expenses (if (isTrackExpense)), so split children would not navigate to the workspace selector.

    What changes do you think we should make in order to solve the problem?

    In MoneyRequestView.tsx, extend the canEditDistanceOrRate condition to also allow editing when the expense is unreported (which split children in self-DM are):

    const canEditDistanceOrRate = isPolicyAccessible(policy, currentUserEmailParam) || isTrackExpense || isP2PDistanceRequest || isExpenseUnreported;
    

    Then extend the workspace selector fallback in the Rate field's onPress handler (currently gated by if (isTrackExpense) at line 770) to also apply when the expense is unreported, so the user gets navigated to the workspace selector when no policy is resolved.

    What alternative solutions did you explore? (Optional)

    An alternative would be to mark split children of track expenses as track expenses themselves, but that would have broader implications across the codebase since isTrackExpense is used in many places with specific semantics.


    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.

  7. added and removed
    DeployBlockerCashThis issue or pull request should block deployment
    on May 28, 2026
  8. 29 remaining items

  9. mitarachim commented on Jul 29, 2026

    @mitarachim

    Deploy Blocker #97403 was identified to be related to the PR #92055 that attempted to fix this issue.

  10. melvin-bot commented on Jul 30, 2026

    @melvin-bot

    ⚠️ Looks like this issue was linked to a Deploy Blocker here

    If you are the assigned CME please investigate whether the linked PR caused a regression and leave a comment with the results.

    If a regression has occurred and you are the assigned CM follow the instructions here.

    If this regression could have been avoided please consider also proposing a recommendation to the PR checklist so that we can avoid it in the future.

  11. jponikarchuk commented on Jul 30, 2026

    @jponikarchuk

    Deploy Blocker #97424 was identified to be related to the PR #92055 that attempted to fix this issue.

  12. melvin-bot commented on Jul 30, 2026

    @melvin-bot

    ⚠️ Looks like this issue was linked to a Deploy Blocker here

    If you are the assigned CME please investigate whether the linked PR caused a regression and leave a comment with the results.

    If a regression has occurred and you are the assigned CM follow the instructions here.

    If this regression could have been avoided please consider also proposing a recommendation to the PR checklist so that we can avoid it in the future.

  13. lakchote commented on Jul 30, 2026

    @lakchote
    Contributor
  14. mitarachim commented on Jul 30, 2026

    @mitarachim

    Deploy Blocker #97436 was identified to be related to the PR #92055 that attempted to fix this issue.

  15. melvin-bot commented on Jul 30, 2026

    @melvin-bot

    ⚠️ Looks like this issue was linked to a Deploy Blocker here

    If you are the assigned CME please investigate whether the linked PR caused a regression and leave a comment with the results.

    If a regression has occurred and you are the assigned CM follow the instructions here.

    If this regression could have been avoided please consider also proposing a recommendation to the PR checklist so that we can avoid it in the future.

  16. changed the title [-]Expense - Rate field is disabled when account has only non-default workspaces[/-] [+][Due for payment 2026-08-07] Expense - Rate field is disabled when account has only non-default workspaces[/+] on Jul 31, 2026
  17. melvin-bot commented on Jul 31, 2026

    @melvin-bot

    @ZhenjaHorbach

    The solution for this issue has been 🚀 deployed to production 🚀 in version 9.4.46-10 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-08-07. 🎊

    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]. If no checklist is needed for this issue, you can click: [no checklist button]

  18. melvin-bot commented on Aug 19, 2026

    @melvin-bot

    ⚠️ Looks like this issue was linked to a Deploy Blocker here

    If you are the assigned CME please investigate whether the linked PR caused a regression and leave a comment with the results.

    If a regression has occurred and you are the assigned CM follow the instructions here.

    If this regression could have been avoided please consider also proposing a recommendation to the PR checklist so that we can avoid it in the future.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

BugSomething is broken. Auto assigns a BugZero manager.DailyKSv2Engineering

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions