Skip to content

[Due for payment 2026-08-17] [$250] Company cards - Unassigned "cards" is shown when one card is selected #97393

Description

@applause-bot

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: #94678
Email or phone of affected tester (no customers): applausetester+ssndjois2jd1@applause.expensifail.com
Issue reported by: Applause Internal Team
Bug source: Exploratory - Significant User Experience Deterioration
Device used: Mac 26.5 / Chrome
App Component: Workspace Settings

Action Performed:

Precondition:

  • Workspace has direct feed with cards.
  1. Go to staging.new.expensify.com
  2. Go to workspace settings > Company cards.
  3. Select a card via checkbox.
  4. Click 1 selected dropdown.

Expected Result:

Unassigned "card" will be shown because one card is selected.

Actual Result:

Unassigned "cards" is shown when one card is selected.

Workaround:

Unknown

Platforms:

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

Screenshots/Videos

Bug7221273_1785359498323.2.mp4

View all open jobs on GitHub

Applause Internal Information
Exported by: Svetlana Lazutkina
Bug ID: 7221273

Upwork Automation - Do Not Edit
Issue OwnerCurrent Issue Owner: @mallenexpensify

Activity

  1. added
    DeployBlockerCashThis issue or pull request should block deployment
    BugSomething is broken. Auto assigns a BugZero manager.
    on Jul 29, 2026
  2. applause-bot commented on Jul 29, 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/3ee0abe565fd08d182e97afdec2254c11bea673f95ba26fcb37450bfa460587c

  3. melvin-bot commented on Jul 29, 2026

    @melvin-bot

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

  4. melvin-bot commented on Jul 29, 2026

    @melvin-bot

    @JS00001 @ChavdaSachin you have been assigned to this deploy blocker because you reviewed the offending PR: #94678

  5. melvin-bot commented on Jul 29, 2026

    @melvin-bot

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

  6. github-actions commented on Jul 29, 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.
  7. MelvinBot commented on Jul 29, 2026

    @MelvinBot
    Contributor

    🔍 Investigation Summary

    Classification: Frontend bug
    Causing PR: #94678 - "Add bulk actions for company cards" by @KJ21-ENG (High confidence)
    Related Issues: #93334, #96047 (features implemented by the PR)

    Recommendation: ROLL FORWARD

    This is a trivial, cosmetic pluralization miss in a brand-new feature (not in production). A one-line fix to select the singular translation key when a single card is selected is far safer and simpler than reverting the entire bulk-actions feature.

    Assigned: @KJ21-ENG (PR author), @JS00001 and @ChavdaSachin (approving reviewers) from the causing PR.
    Labels: No changes. DeployBlockerCash is kept (App deploy blocked, fix is in Expensify/App). No DeployBlocker label was present.

    📋 Detailed Analysis

    Evidence

    • PR [Payment due @ChavdaSachin] Add bulk actions for company cards #94678 (merged 2026-07-29 13:14 UTC, ~8h before this blocker was filed) adds the multi-select bulk-action dropdown to the company cards table, including the "Unassign card(s)" menu item and the unassign confirmation modal — exactly the surface described in the bug.
    • The GitHub file list for the PR confirms it added src/components/Tables/WorkspaceCompanyCardsTable/WorkspaceCompanyCardsTableControls.tsx and modified src/languages/en.ts.
    • Reproducible on staging only; the feature does not exist in production, consistent with the PR being new to this release.

    Verification

    • Affected file: src/components/Tables/WorkspaceCompanyCardsTable/WorkspaceCompanyCardsTableControls.tsx
    • The bulk-action dropdown builds its options in getBulkActionOptions(). The unassign menu item hardcodes the plural key:
      WorkspaceCompanyCardsTableControls.tsx#L146-L151 — text: translate('workspace.moreFeatures.companyCards.unassignCards').
    • The same plural-only issue exists in the confirmation modal:
      WorkspaceCompanyCardsTableControls.tsx#L111-L112 — title unassignCards and prompt unassignCardsDescription.
    • Both singular and plural translation strings already exist, so no new copy is needed:
      en.ts#L6294-L6298
      • unassignCard: 'Unassign card' / unassignCards: 'Unassign cards'
      • unassignCardDescription / unassignCardsDescription

    Root Cause

    The unassign action label and confirmation copy are wired to the plural translation keys unconditionally, with no branching on the selection count. Because unassignCards ("Unassign cards") is always used regardless of how many cards are selected, selecting exactly one card still renders the plural form.

    Recommended Fix

    In WorkspaceCompanyCardsTableControls.tsx, pick the key based on the number of selected assigned cards (selectedAssignedCards.length), e.g.:

    • Dropdown item text (L148):
      translate(selectedAssignedCards.length === 1 ? 'workspace.moreFeatures.companyCards.unassignCard' : 'workspace.moreFeatures.companyCards.unassignCards')
    • Confirm modal title (L111): same singular/plural selection.
    • Confirm modal prompt (L112):
      translate(selectedAssignedCards.length === 1 ? 'workspace.moreFeatures.companyCards.unassignCardDescription' : 'workspace.moreFeatures.companyCards.unassignCardsDescription')

    The singular keys already exist in en.ts (and should be verified present in other locale files); no new copy strings are required.

  8. ChavdaSachin commented on Jul 29, 2026

    @ChavdaSachin
    Contributor

    @MelvinBot for company cards bulk actions, the text copy for "unassign cards" does not have the singular string; please raise a PR

  9. ChavdaSachin commented on Jul 29, 2026

    @ChavdaSachin
    Contributor

    NAB, just a small copy change.
    @JS00001

  10. 14 remaining items

  11. changed the title [-][$250] Company cards - Unassigned "cards" is shown when one card is selected[/-] [+][Due for payment 2026-08-17] [$250] Company cards - Unassigned "cards" is shown when one card is selected[/+] on Aug 10, 2026
  12. melvin-bot commented on Aug 10, 2026

    @melvin-bot

    @ChavdaSachin

    The solution for this issue has been 🚀 deployed to production 🚀 in version 9.4.51-1 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-17. 🎊

    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]

  13. melvin-bot commented on Aug 10, 2026

    @melvin-bot

    @ChavdaSachin 10 days overdue. I'm getting more depressed than Marvin.

  14. melvin-bot commented on Aug 12, 2026

    @melvin-bot

    @ChavdaSachin 12 days overdue. Walking. Toward. The. Light...

  15. melvin-bot commented on Aug 16, 2026

    @melvin-bot

    Triggered auto assignment to @mallenexpensify (Awaiting Payment)

  16. melvin-bot commented on Aug 16, 2026

    @melvin-bot

    Payment Summary

    Resolving PRs:

    BugZero Checklist (@mallenexpensify)

    • I have confirmed assignees, roles, and Upwork contracts look correct
    • I have paid out Upwork contracts / manual NewDot requests
  17. mallenexpensify commented on Aug 18, 2026

    @mallenexpensify
    Contributor

    @ChavdaSachin is this due payment? If so, looks like $75 or $125 cuz it's a copy change?

  18. ChavdaSachin commented on Aug 18, 2026

    @ChavdaSachin
    Contributor

    No payment here.
    It's good to close.

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 productionBugSomething 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