Repository navigation
[Payment due @ChavdaSachin] Add bulk actions for company cards - #94678
Conversation
|
Hey, I noticed you changed If you want to automatically generate translations for other locales, an Expensify employee will have to:
Alternatively, if you are an external contributor, you can run the translation script locally with your own OpenAI API key. To learn more, try running: npx ts-node ./scripts/generateTranslations.ts --helpTypically, you'd want to translate only what you changed by running |
Codecov Report❌ Looks like you've decreased code coverage for some files. Please write tests to increase, or at least maintain, the existing level of code coverage. See our documentation here for how to interpret this table.
|
|
@ChavdaSachin Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
|
FYI :- Failing TypeScript Checks are unrelated to thi PR |
|
Adding @joekaufmanexpensify to this one. |
…-actions-company-cards # Conflicts: # src/components/Tables/WorkspaceCompanyCardsTable/WorkspaceCompanyCardsTableHeaderButtons.tsx # src/components/Tables/WorkspaceCompanyCardsTable/index.tsx
|
@ChavdaSachin @joekaufmanexpensify |
|
I was OOO. Back today and will review 👍 |
|
Fixed in d099912 cc: @JS00001 @ChavdaSachin @shawnborton @dannymcclain
|
|
Looks good 👍 |
|
🚧 JS00001 has triggered a test Expensify/App build. You can view the workflow run here. |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
🚀 Deployed to staging by https://github.com/JS00001 in version: 9.4.46-0 🚀
|
|
🤖 Help site review — changes required Yes, this PR introduces net-new, user-facing company-card management capabilities that aren't documented anywhere in Draft PR: #97387 — Docs updates for E/A#94678 Add bulk actions company cards help article (labeled What's now documented (new article
All feature names, button labels, and CSV column headers were verified against the exact strings in Why a new article rather than editing an existing oneThe bulk-management workflow is distinct from the existing single-card assignment flow in The
@KJ21-ENG, please review the linked help site PR and confirm it reflects the current behavior. Then mark the linked help site PR |
|
Deploy Blocker #97393 was identified to be related to this PR. |
|
Deploy Blocker #97394 was identified to be related to this PR. |
|
Deploy Blocker #97406 was identified to be related to this PR. |
|
Deploy Blocker #97411 was identified to be related to this PR. |
|
Deploy Blocker #97412 was identified to be related to this PR. |
|
Deploy Blocker #97494 was identified to be related to this PR. |
|
🚀 Deployed to production by https://github.com/marcaaron in version: 9.4.46-10 🚀
Bundle Size Analysis (Sentry): |

Explanation of Change
Adds multi-select bulk actions to the BYOC company cards table. The table now uses stable card keys for selection, disables pending-delete rows from selection, and derives a selected-row action menu for unassigning assigned cards, viewing selected card transactions, and exporting selected rows as CSV.
This also updates the BYOC header to match the settled layout: feed selector plus standalone Settings, search with "Find company card", and a selected-count dropdown when rows are selected.
As part of this (tracked in #96047), a shared Display > Sort by control (
TableSettingsTrigger) is now rendered automatically byTable.FilterBaron every table with sortable columns (members, categories, tags, rooms, etc.). On narrow layouts it renders as a gear icon button and is hidden for tables that lock their sorting vianarrowLayoutSortColumn, since user sorting is ignored there. Additionally, table selection is now cleared when the search string changes (previously only when filters changed) — this applies to every selectable table, not just company cards.Fixed Issues
$ #93334
$ #96047
PROPOSAL: #93334 (comment)
Tests
Offline tests
QA Steps
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)Avatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
Record_2026-06-27-17-53-44_40d2c9e2d8fb5b5aba3904834590021e.mp4
Android: mWeb Chrome
Record_2026-06-27-17-31-10.mp4
iOS: Native
Simulator.Screen.Recording.-.iPhone.17.-.2026-06-27.at.18.03.10.mov
iOS: mWeb Safari
Simulator.Screen.Recording.-.iPhone.17.-.2026-06-27.at.17.33.42.mov
MacOS: Chrome / Safari
ezyZip.60.mp4