Repository navigation
Error shows up when saving unreported splits after upgrading workspace and changing rate #97395
Description
Activity
- addedDeployBlockerCashThis issue or pull request should block deploymentThis issue or pull request should block deploymentBugSomething is broken. Auto assigns a BugZero manager.Something is broken. Auto assigns a BugZero manager.
on Jul 29, 2026 While Applause doesn't embed attachments for this bug, here are the links for quick view:
https://platform.applause.com/services/links/v1/external/e60a81abd81309f744007b48078d368d951146aeb7c3f0f3e700733ac8e89650You have been assigned to this deploy blocker because you recently merged this PR: #92055
@ZhenjaHorbach you have been assigned to this deploy blocker because you authored the offending PR: #92055
💬 A slack conversation has been started in #expensify-open-source
github-actions commented
on Jul 29, 2026 on Jul 29, 2026 – with GitHub ActionsContributorMore actions👋 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:
- Identify the pull request that introduced this issue and revert it.
- Find someone who can quickly fix the issue.
- Fix the issue yourself.
🔍 Investigation Summary
Classification: Frontend bug
Causing PR: #92055 - "Fix bugs for selfDM splits feature" byZhenjaHorbach(High confidence)
Related Issues: N/ARecommendation: ROLL FORWARD
PR #92055 is confirmed as the cause, but it is itself a bug-fix PR that resolves 8 other selfDM-split issues (#91874, #91876, #91879, #91907, #91913, #91917, #91920, #91918). Reverting it would reintroduce those bugs, so a targeted forward-fix by the PR author is safer than a revert. The feature is not in production (staging-only), so this only blocks the App staging deploy.
Assigned:
ZhenjaHorbach(PR author),lakchoteanddmkt9(approving reviewers) — already assigned to this issue.
Labels: No changes.DeployBlockerCashis kept (App PR caused the issue → App deploy is blocked).DeployBlockerwas not present, so nothing to remove.📋 Detailed Analysis
Evidence
- The reproduction path — self-DM split → Amount → Rate → Upgrade workspace → enter/select rate → edit other split → Save — is exactly the flow reworked by PR #92055. The PR's title is literally "Fix bugs for selfDM splits feature."
- The version reported (9.4.46-0) is staging-only and N/A in production because this is a brand-new feature. PR #92055 is listed in the current StagingDeployCash checklist (item 76) and merged 2026-07-29 09:35Z, ~12h before the bug was filed (2026-07-29 21:54Z).
- The PR touches every file on the affected code path:
SplitExpensePage.tsx,SplitExpenseEditPage.tsx,IOURequestStepDistanceRate.tsx,IOURequestStepUpgrade.tsx,SplitTransactionUpdate.ts,Split.ts,SplitExpenseItems.ts,DistanceRequestUtils.ts, andTransactionUtils/index.ts.
Verification
Affected area = saving self-DM distance splits after a workspace upgrade + rate change. PR #92055 modifies the exact save/rate-resolution logic for that flow:
src/pages/iou/SplitExpensePage.tsx:211-279— the save handler and the per-split "out of policy" rate validation loop were rewritten, including the newextraIOUActionsparam passed intoupdateSplitTransactions.src/libs/DistanceRequestUtils.ts:599-614— newgetEnabledRateByCustomUnitRateIDFromAnyPolicyhelper that resolves a rate across all of the user's policies (used specifically because a self-DM split on the personal/P2P rate has noeffectivePolicy).src/libs/TransactionUtils/index.ts:742-761—getUpdatedTransactionnow takes apoliciescollection and falls back to the cross-policy rate lookup, then re-runs the distance-unit/quantity conversion against the fallback rate's unit.src/libs/actions/IOU/SplitTransactionUpdate.ts— theisReverseSplitOperation/isCreationOfSplitsdetection was changed to count all child transactions (previously it excludedUNREPORTED_REPORT_IDchildren), and new group-amount rescaling (findSnapshotGroupSourceTransaction/rescaleSnapshotGroupAmount) was added.
Root Cause
When the just-upgraded workspace becomes the rate owner, the newly-added cross-policy rate resolution and the reworked reverse/creation split detection govern how the unreported splits are re-priced and written on save. The most likely trigger for the on-save error is a rate/policy mismatch in this new logic: for a self-DM split,
effectivePolicycan be undefined and the code relies ongetEnabledRateByCustomUnitRateIDFromAnyPolicyplus theisReverseSplitOperationchange (nowallChildTransactions.length > 0without the previousUNREPORTED_REPORT_IDfilter) to decide which fields are cleared and re-sent. If the selected rate can't be resolved for the freshly-created workspace at save time, the split is flagged out-of-policy / the update params are built inconsistently, surfacing the error. Pinning the exact failing line requires runtime logs / the API error code, hence the recommendation to have the author reproduce and forward-fix (High confidence on the causing PR, medium on the precise line).2 remaining items
- addedDailyKSv2KSv2ReviewingHas a PR in reviewHas a PR in reviewand removedHourlyKSv2KSv2
on Jul 30, 2026 @lakchote, @ZhenjaHorbach, @dmkt9 Whoops! This issue is 2 days overdue. Let's get this updated quick!
@lakchote, @ZhenjaHorbach, @dmkt9 Still overdue 6 days?! Let's take care of this!
@lakchote, @ZhenjaHorbach, @dmkt9 8 days overdue is a lot. Should this be a Weekly issue? If so, feel free to change it!
@lakchote, @ZhenjaHorbach, @dmkt9 10 days overdue. Is anyone even seeing these? Hello?
This issue has not been updated in over 14 days. @lakchote, @ZhenjaHorbach, @dmkt9 eroding to Weekly issue.
This has been fixed. Closing.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsDone
If you haven’t already, check out our contributing guidelines for onboarding. To join our Slack channel, fill out this form.
Version Number: 9.4.46-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: #92055
Email or phone of affected tester (no customers): iosjdnojsdoijdisojiso@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:
Expected Result:
The splits will be saved without issue.
Actual Result:
Error shows up when saving unreported splits after upgrading workspace and changing rate.
Workaround:
Unknown
Platforms:
Screenshots/Videos
Bug7221270_1785359494910.4.mp4
View all open jobs on GitHub