Skip to content

[Due for Payment 2026-05-26][$250] No checkmark displayed for selected recipient in choose recipient page #72129

Description

@m-natarajan

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.2.27-4
Reproducible in staging?: Y
Reproducible in production?: Y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: @JS00001
Slack conversation (hyperlinked to channel name): #Expensify Bugs

Action Performed:

  1. Click the global plus > Create expense
  2. Choose "Manual" , Click Next after entering an amount
  3. In Confirm details page, click "To" field
  4. Choose any recipient
  5. Click the back arrow
  6. Observe the "Choose recipient" page

Expected Result:

Checkmark displayed for the recipient selected in step 4

Actual Result:

No checkmark displayed for the selected recipient

Workaround:

Unknown

Platforms:

Select the officially supported platforms where the issue was reproduced:

  • Android: App
  • Android: mWeb Chrome
  • iOS: App
  • iOS: mWeb Safari
  • iOS: mWeb Chrome
  • Windows: Chrome
  • MacOS: Chrome / Safari
  • MacOS: Desktop
Platforms Tested: On which of our officially supported platforms was this issue tested:
  • Android: App
  • Android: mWeb Chrome
  • iOS: App
  • iOS: mWeb Safari
  • iOS: mWeb Chrome
  • Windows: Chrome
  • MacOS: Chrome / Safari
  • MacOS: Desktop

Screenshots/Videos

Add any screenshot/video evidence
Screen.Recording.2025-10-08.at.11.46.44.AM.mov
Recording.1743.mp4

View all open jobs on GitHub

Upwork Automation - Do Not Edit
  • Upwork Job URL: https://www.upwork.com/jobs/~021977700485105674551
  • Upwork Job ID: 1977700485105674551
  • Last Price Increase: 2025-11-03
  • Automatic offers:
    • truph01 | Contributor | 109192200
Issue OwnerCurrent Issue Owner: @
Issue OwnerCurrent Issue Owner: @mallenexpensify

Activity

  1. added
    BugSomething is broken. Auto assigns a BugZero manager.
    on Oct 8, 2025
  2. melvin-bot commented on Oct 8, 2025

    @melvin-bot

    Triggered auto assignment to @RachCHopkins (Bug), see https://stackoverflow.com/c/expensify/questions/14418 for more details. Please add this bug to a GH project, as outlined in the SO.

  3. nyomanjyotisa commented on Oct 8, 2025

    @nyomanjyotisa
    Member

    🚨 Edited by proposal-police: This proposal was edited at 2025-10-15 09:21:08 UTC.

    Proposal

    Please re-state the problem that we are trying to solve in this issue.

    No checkmark displayed for selected recipient in choose recipient page

    What is the root cause of that problem?

    We passed an empty array for participants when its not a split request

    participants={isSplitRequest ? participants : getEmptyArray()}

    Additionally, when a self DM is selected, it calls trackExpense which calls setMoneyRequestParticipantsFromReport

    if (firstParticipant?.isSelfDM) {
    trackExpense();
    return;
    }

    It then call getMoneyRequestParticipantsFromReport which create a minimal participant object for self DM reports with accountID: 0, and missing login , text , isSelfDM field, making the self DM to displayed as "Hidden"

    App/src/libs/actions/IOU.ts

    Lines 11382 to 11383 in 5c27729

    if (isPolicyExpenseChatReportUtil(chatReport) || shouldAddAsReport) {
    participants = [{accountID: 0, reportID: chatReport?.reportID, isPolicyExpenseChat: isPolicyExpenseChatReportUtil(chatReport), selected: true}];

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

    Change the participants prop to always include the participants data, not just for split requests

    participants={participants}

    participants={isSplitRequest ? participants : getEmptyArray()}

    We also need to filter out selected workspace participants and self DM from the workspace section to prevent duplication

            const availableWorkspaceChats = (chatOptions.workspaceChats ?? []).filter((workspaceChat) => {
                const isWorkspaceChatSelected = participants.some(
                    (participant) => participant.reportID === workspaceChat.reportID || (participant.accountID && participant.accountID === workspaceChat.accountID),
                );
                return !isWorkspaceChatSelected;
            });
    
           newSections.push({
                title: translate('workspace.common.workspace'),
                data: availableWorkspaceChats,
                shouldShow: availableWorkspaceChats.length > 0,
            });

    newSections.push({
    title: translate('workspace.common.workspace'),
    data: chatOptions.workspaceChats ?? [],
    shouldShow: (chatOptions.workspaceChats ?? []).length > 0,
    });

            const isSelfDMSelected = participants.some((participant) => participant.reportID === chatOptions.selfDMChat?.reportID);
    
            newSections.push({
                title: translate('workspace.invoices.paymentMethods.personal'),
                data: chatOptions.selfDMChat && !isSelfDMSelected ? [chatOptions.selfDMChat] : [],
                shouldShow: !!chatOptions.selfDMChat && !isSelfDMSelected,
            });

    newSections.push({
    title: translate('workspace.invoices.paymentMethods.personal'),
    data: chatOptions.selfDMChat ? [chatOptions.selfDMChat] : [],
    shouldShow: !!chatOptions.selfDMChat,
    });

    We should update the trackExpense function as well to add essential field for self DM. Instead of calling setMoneyRequestParticipantsFromReport , we can directly create the correct self DM participant object and call setMoneyRequestParticipants

        const currentUserPersonalDetails = useCurrentUserPersonalDetails();
        ...
            transactions.forEach((transaction) => {
                setCustomUnitRateID(transaction.transactionID, rateID);
                // For self DM, set the correct participant data with current user's details
                const displayNameWithSuffix = getDisplayNameOrDefault(currentUserPersonalDetails, '', true, true);
                const selfDMParticipant: Participant = {
                    accountID: currentUserPersonalDetails.accountID,
                    reportID: selfDMReportID,
                    isPolicyExpenseChat: false,
                    isSelfDM: true,
                    login: currentUserPersonalDetails.login,
                    text: displayNameWithSuffix,
                    displayName: displayNameWithSuffix,
                    policyID: selfDMReport?.policyID,
                    selected: true
                };
                setMoneyRequestParticipants(transaction.transactionID, [selfDMParticipant]);
                setTransactionReport(transaction.transactionID, {reportID: selfDMReportID}, true);
            });

    transactions.forEach((transaction) => {
    setCustomUnitRateID(transaction.transactionID, rateID);
    const shouldSetParticipantAutoAssignment = iouType === CONST.IOU.TYPE.CREATE;
    setMoneyRequestParticipantsFromReport(transaction.transactionID, selfDMReport, shouldSetParticipantAutoAssignment ? isActivePolicyRequest : false);
    setTransactionReport(transaction.transactionID, {reportID: selfDMReportID}, true);
    });

    What alternative solutions did you explore? (Optional)

    None

  4. self-assigned this
    on Oct 9, 2025
  5. added
    ExternalAdded to denote the issue can be worked on by a contributor
    Help WantedApply this label when an issue is open to proposals by contributors
    and removed on Oct 13, 2025
  6. changed the title [-]No checkmark displayed for selected recipient in choose recipient page[/-] [+][$250] No checkmark displayed for selected recipient in choose recipient page[/+] on Oct 13, 2025
  7. melvin-bot commented on Oct 13, 2025

    @melvin-bot
  8. 132 remaining items

  9. mallenexpensify commented on May 27, 2026

    @mallenexpensify
    Contributor

    Payment Summary

    Contributor: @dmkt9 paid $250 via Upwork
    Contributor+: @truph01 due $250 via NewDot (I canceled the Upwork contract)

    @dmkt9 can you please accept the job below? Please reply here and tag me once you have.
    https://www.upwork.com/jobs/~022059435814641907058

  10. removed
    BugSomething is broken. Auto assigns a BugZero manager.
    on May 27, 2026
  11. changed the title [-][$250] No checkmark displayed for selected recipient in choose recipient page[/-] [+][Due for Payment 2026-05-26][$250] No checkmark displayed for selected recipient in choose recipient page[/+] on May 27, 2026
  12. melvin-bot commented on May 27, 2026

    @melvin-bot

    Current assignee @mallenexpensify is eligible for the Awaiting Payment assigner, not assigning anyone new.

  13. dmkt9 commented on May 27, 2026

    @dmkt9
    Contributor

    @mallenexpensify Thanks. I've accepted the offer.

  14. mallenexpensify commented on May 28, 2026

    @mallenexpensify
    Contributor

    @dmkt9 paid, summary updated above. Thx.

  15. garrettmknight commented on Jul 30, 2026

    @garrettmknight
    Contributor

    $250 approved for @truph01

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

Metadata

Metadata

Labels

Awaiting PaymentAuto-added when associated PR is deployed to productionDailyKSv2ExternalAdded to denote the issue can be worked on by a contributor

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions