Skip to content

[Payment due @mkhutornyi] Add Vendors slot to Workspace > More features - #96890

Merged
deetergp merged 10 commits into
mainfrom
beaman-vendors-more-features
Jul 27, 2026
Merged

deetergp merged 10 commits into
mainfrom
beaman-vendors-more-features

Conversation

@Beamanator

@Beamanator Beamanator commented Jul 23, 2026 •

Copy link
Copy Markdown
Contributor

Explanation of Change

Adds a Vendors row to the Workspace > More features page, at the end of the Organize section (after Categories, Tags, Taxes). The row is gated behind the vendorMatching beta and navigates to the existing Vendors workspace page on press.

Ships a new Briefcase icon + illustration for the Vendors feature and swaps the workspace nav row + Vendors page header from the previous Suitcase / Luggage assets to the new Briefcase ones. Files added:

  • assets/images/briefcase.svg (line icon, registered in expensify-icons.chunk.ts as Briefcase).
  • assets/images/simple-illustrations/simple-illustration__briefcase.svg (illustration, registered in illustrations.chunk.ts as Briefcase).

The workspace has no server-side areVendorsEnabled NVP today — hasVendorFeature (beta + QBO CC/DC export, or Sage Intacct CC Charge, or Xero connected) is the canonical gate everywhere. This PR reflects that state in the toggle: the switch is locked (with the lock icon shown when active) because there is no EnablePolicyVendors backend command yet. A follow-up PR will unlock the switch and wire the real enable/disable flow once that backend command lands.

usePolicyConnectionsPrefetch is called (gated on the beta) so policy.connections is hydrated when the More features page is opened directly on a non-active workspace — otherwise hasVendorFeature would incorrectly return false. This mirrors the same prefetch used by the Vendors nav row in WorkspaceInitialPage.

Adds workspace.moreFeatures.vendors.{title,subtitle} copy to all 10 language files (English + 9 target locales via Polyglot Parrot).

Fixed Issues

$ https://github.com/Expensify/Expensify/issues/638608
PROPOSAL:

Tests

  1. On a workspace with the vendorMatching beta enabled, QBO connected, and a CC/DC non-reimbursable export destination, open Workspace settings > More features.
  2. Confirm the new Vendors row appears at the end of the Organize section (below Categories, Tags, Taxes).
  3. Confirm the Briefcase illustration is shown to the left of the Vendors title.
  4. Confirm the toggle is rendered in the "on" state with the lock icon (because hasVendorFeature returns true and the switch is locked in this PR).
  5. Tap the row body (not the switch); confirm the app navigates to the existing Workspace Vendors page and its header shows the Briefcase illustration.
  6. Confirm the Vendors row in the workspace sidebar nav also uses the Briefcase icon.
  7. On a workspace with the beta enabled but no vendor-matching accounting integration (or with a wrong export mode, e.g. QBO exporting non-reimbursables as Journal Entry), confirm the Vendors row still appears in Organize but the toggle is rendered in the "off" state (no lock icon).
  8. On a workspace WITHOUT the beta enabled, confirm the Vendors row is not rendered at all.
  9. Verify no errors appear in the JS console.
  • Verify that no errors appear in the JS console

Offline tests

  1. Enable airplane mode.
  2. Open Workspace settings > More features.
  3. Confirm the Vendors row still appears in Organize with the Briefcase illustration and reflects the last-known hasVendorFeature value.
  4. Tap the row; confirm navigation to the Vendors page still works and the page renders the cached vendor list.

QA Steps

Ping me & @heyjennahay to test!

  1. On staging, on a workspace with the vendorMatching beta enabled + QBO + CC/DC export configured, open Workspace settings > More features.
  2. Confirm the new Vendors row appears at the end of the Organize section with the Briefcase illustration and the "Vendors" title.
  3. Confirm the toggle is rendered in the "on" state with the lock icon.
  4. Tap the row body; confirm the app navigates to the Workspace Vendors page.
  5. On a workspace without the beta enabled, confirm the Vendors row does not render.
  • Verify that no errors appear in the JS console

PR Author Checklist

  • I linked the correct issue in the ### Fixed Issues section above
  • I wrote clear testing steps that cover the changes made in this PR
    • I added steps for local testing in the Tests section
    • I added steps for the expected offline behavior in the Offline steps section
    • I added steps for Staging and/or Production testing in the QA steps section
    • I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
    • I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
    • I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).
  • I included screenshots or videos for tests on all platforms
  • I ran the tests on all platforms & verified they passed on:
    • Android: Native
    • Android: mWeb Chrome
    • iOS: Native
    • iOS: mWeb Safari
    • MacOS: Chrome / Safari
  • I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
  • I followed proper code patterns (see Reviewing the code)
    • I verified that comments were added to code that is not self explanatory
    • I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
    • I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
  • If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
  • I followed the guidelines as stated in the Review Guidelines
  • I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
  • If a new CSS style is added I verified that:
    • A similar style doesn't already exist
    • The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))
  • If new assets were added or existing ones were modified, I verified that:
    • The assets are optimized and compressed (for SVG files, run npm run compress-svg)
    • The assets load correctly across all supported platforms.
  • If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
  • If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
  • If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
  • If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
  • If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:
    • I verified that all the inputs inside a form are aligned with each other.
    • I added Design label and/or tagged @Expensify/design so the design team can review the changes.
  • I added unit tests for any new feature or bug fix in this PR to help automatically prevent regressions in this user flow.
  • If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari

Wires a new Vendors toggle that reflects hasVendorFeature and navigates to the
existing Vendors workspace page. Server-side enable/disable is not yet backed
by an areVendorsEnabled NVP, so the toggle itself is a no-op today and will be
hooked up in a follow-up PR alongside the EnablePolicyVendors backend work.
@Beamanator
Beamanator requested review from a team as code owners July 23, 2026 15:15
@melvin-bot
melvin-bot Bot requested review from ChavdaSachin and removed request for a team July 23, 2026 15:15
@melvin-bot

melvin-bot Bot commented Jul 23, 2026

Copy link
Copy Markdown

@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]

@melvin-bot
melvin-bot Bot requested review from joekaufmanexpensify and removed request for a team July 23, 2026 15:15
@OSBotify

This comment has been minimized.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 648760dbc3

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/pages/workspace/WorkspaceMoreFeaturesPage/index.tsx Outdated
@codecov

codecov Bot commented Jul 23, 2026 •

Copy link
Copy Markdown

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.

Files with missing lines Coverage Δ
...rc/components/Icon/chunks/expensify-icons.chunk.ts 0.00% <ø> (ø)
src/components/Icon/chunks/illustrations.chunk.ts 0.00% <ø> (ø)
src/pages/workspace/WorkspaceInitialPage.tsx 0.00% <ø> (ø)
...ce/WorkspaceMoreFeaturesPage/MoreFeatureToggle.tsx 100.00% <ø> (ø)
...ages/workspace/WorkspaceMoreFeaturesPage/index.tsx 69.25% <50.00%> (-0.24%) ⬇️
...c/pages/workspace/vendors/WorkspaceVendorsPage.tsx 0.00% <0.00%> (ø)
... and 10 files with indirect coverage changes

@Beamanator

Copy link
Copy Markdown
Contributor Author

@MelvinBot fix typescript checks

Co-authored-by: Alex Beaman <Beamanator@users.noreply.github.com>
@MelvinBot

Copy link
Copy Markdown
Contributor

Fixed the failing typecheck. The PR added a vendors entry under workspace.moreFeatures in en.ts (and it was already present in es.ts), but the other 8 language files were missing it — so TranslationDeepObject flagged Property 'vendors' is missing in each.

Added the vendors block to de, fr, it, ja, nl, pl, pt-BR, and zh-hans in commit 9c9bdc0. npm run typecheck now passes locally.

Note on translations

I added straightforward translations (e.g. Fournisseurs, Fornitori, Lieferanten, 供应商). Please double-check the wording is on-brand for each locale before merging — happy to adjust any of them.

The only other red check is PR Author Checklist / checklist, which is expected for a draft and not something I touch.

@Beamanator

Copy link
Copy Markdown
Contributor Author

@MelvinBot handle the polyglot changes needed and consider the codex review - respond in thread with your analysis and make any changes if needed

@joekaufmanexpensify joekaufmanexpensify left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Core design doc issue

…ns on More features

Replaces the manual vendor translations with the canonical generateTranslations (Polyglot Parrot) output for the 8 non-English locales and es, and prefetches policy.connections on WorkspaceMoreFeaturesPage so the Vendors toggle reflects the correct state on non-active workspaces (Codex review).

Co-authored-by: Alex Beaman <Beamanator@users.noreply.github.com>
@Beamanator

Copy link
Copy Markdown
Contributor Author

@codex review

@Beamanator
Beamanator removed the request for review from ChavdaSachin July 23, 2026 18:48

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 205d5d90c4

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/pages/workspace/WorkspaceMoreFeaturesPage/index.tsx Outdated
@Beamanator

Copy link
Copy Markdown
Contributor Author

@MelvinBot address the codex comment above

Co-authored-by: Alex Beaman <Beamanator@users.noreply.github.com>
@Beamanator

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. What shall we delve into next?

Reviewed commit: 3d3b2d9e4d

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/pages/workspace/WorkspaceMoreFeaturesPage/index.tsx Outdated
Comment thread src/pages/workspace/WorkspaceMoreFeaturesPage/index.tsx Outdated
Comment thread src/languages/ja.ts Outdated
@Beamanator

Copy link
Copy Markdown
Contributor Author

@MelvinBot address the comments above

…, align ja copy

Co-authored-by: Alex Beaman <Beamanator@users.noreply.github.com>
es/fr/pt-BR/pl/zh-hans: minor copy tweaks per Parrot re-run. ja: reverts to Parrot katakana title.
@Beamanator

Copy link
Copy Markdown
Contributor Author

@mkhutornyi ready for you!! Here's screenies from my tests (1 workspace w/ Intacct connected, 1 with nothing connected):

Screenshot 2026-07-24 at 5 29 05 PM Screenshot 2026-07-24 at 5 28 56 PM

@Beamanator

Copy link
Copy Markdown
Contributor Author

Oh wait Vendors needs to go in Organize like this:

Screenshot 2026-07-24 at 5 49 28 PM

@Beamanator

Copy link
Copy Markdown
Contributor Author

Better - ready now @mkhutornyi !

Screenshot 2026-07-24 at 6 18 08 PM

@mkhutornyi

mkhutornyi commented Jul 26, 2026 •

Copy link
Copy Markdown
Contributor

Reviewer Checklist

  • I have verified the author checklist is complete (all boxes are checked off).
  • I verified the correct issue is linked in the ### Fixed Issues section above
  • I verified testing steps are clear and they cover the changes made in this PR
    • I verified the steps for local testing are in the Tests section
    • I verified the steps for Staging and/or Production testing are in the QA steps section
    • I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
    • I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
  • I checked that screenshots or videos are included for tests on all platforms
  • I included screenshots or videos for tests on all platforms
  • I verified that the composer does not automatically focus or open the keyboard on mobile unless explicitly intended. This includes checking that returning the app from the background does not unexpectedly open the keyboard.
  • I verified tests pass on all platforms & I tested again on:
    • Android: HybridApp
    • Android: mWeb Chrome
    • iOS: HybridApp
    • iOS: mWeb Safari
    • MacOS: Chrome / Safari
  • If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
  • I verified proper code patterns were followed (see Reviewing the code)
    • I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
    • I verified that comments were added to code that is not self explanatory
    • I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
    • I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
  • If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
  • I verified that this PR follows the guidelines as stated in the Review Guidelines
  • I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
  • If a new component is created I verified that:
    • A similar component doesn't exist in the codebase
    • All props are defined accurately and each prop has a /** comment above it */
    • The file is named correctly
    • The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
    • The only data being stored in the state is data necessary for rendering and nothing else
    • For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
    • Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
    • All JSX used for rendering exists in the render method
    • The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions
  • If any new file was added I verified that:
    • The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory
  • If a new CSS style is added I verified that:
    • A similar style doesn't already exist
    • The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG)
  • If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
  • If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
  • If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
  • If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
  • If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:
    • I verified that all the inputs inside a form are aligned with each other.
    • I added Design label and/or tagged @Expensify/design so the design team can review the changes.
  • For any bug fix or new feature in this PR, I verified that sufficient unit tests are included to prevent regressions in this flow.
  • If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
  • I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: HybridApp
Android: mWeb Chrome
iOS: HybridApp
ios.mov
iOS: mWeb Safari
MacOS: Chrome / Safari
web.mov

@melvin-bot
melvin-bot Bot requested a review from deetergp July 26, 2026 16:33
@melvin-bot

melvin-bot Bot commented Jul 26, 2026

Copy link
Copy Markdown

@deetergp 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]

@melvin-bot melvin-bot Bot changed the title Add Vendors slot to Workspace > More features [Payment due @mkhutornyi] Add Vendors slot to Workspace > More features Jul 26, 2026
@melvin-bot

melvin-bot Bot commented Jul 26, 2026

Copy link
Copy Markdown

🎯 @mkhutornyi, thanks for reviewing and testing this PR! 🎉

A payment issue will be created for your review once this PR is deployed to production.
E/E issue linked to the PR - https://www.github.com/Expensify/Expensify/issues/638608.

If payment is not needed (e.g., regression PR review fix etc), react with 👎 to this comment to prevent the payment issue from being created.

@mkhutornyi

mkhutornyi commented Jul 26, 2026 •

Copy link
Copy Markdown
Contributor

Section placement now contradicts the PR description

The row moved from the Integrate section to the Organize section.

  • Integrate: Accounting, HR, Receipt partners
  • Organize: Categories, Tags, Taxes, <- Vendors now here

But the PR description still says "placed in the Integrate section alongside Accounting, Receipt partners, and HR."
Please update description to match the new behavior.


  1. Confirm the new Vendors row appears in the Integrate section with the Luggage illustration and the "Vendors" title.

Please update QA step to be in Organize section, not Integrate.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Bravo.

Reviewed commit: e38761a4c7

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

@MelvinBot

Copy link
Copy Markdown
Contributor

Review

Verdict: Code looks correct and is well-commented — no blocking bugs. The main issue is that the PR description / QA steps are stale and will send QA to the wrong place. One design confirmation worth getting before merge.

🟠 PR description doesn't match the code (please fix the body before QA)

  1. Section placement. The description says the row is "placed in the Integrate section alongside Accounting, Receipt partners, and HR" and QA step 2 says "above the HR row." The code actually renders it at the end of the Organize section, after Taxes (WorkspaceMoreFeaturesPage/index.tsx:461-482) — consistent with your latest commit "Move Vendors row to end of Organize section." QA steps 1-2 will look in the wrong section.
  2. Illustration. The description says it "uses the existing Luggage illustration." It doesn't — this PR adds a brand-new Briefcase icon + illustration and switches the LHN menu item (WorkspaceInitialPage.tsx:358) and the Vendors page header from Luggage/Suitcase to Briefcase. Worth calling out since it changes the icon for the already-shipped Vendors surfaces too, not just the new slot.

🟡 Confirm the intentional inert-row behavior

The row renders for any workspace with the vendorMatching beta, but the switch is disabled (lock icon) and row-body navigation only fires when isActive is true. isActive = hasVendorFeature(...) (index.tsx:466), which needs QBO/Intacct/Xero + a CC/DC export destination. So a beta workspace without an eligible integration shows a row that is fully inert for a write-access user (locked switch is a no-op, body isn't tappable). That matches your code comment and the "visual slot" intent — just confirm design is OK showing an inert locked row to those users. disabledAction={withReadOnlyFallback()} is used correctly (read-only users still get the explanatory modal; write users get a no-op).

🟢 Looks good

  • usePolicyConnectionsPrefetch(policy, isVendorMatchingEnabled) (index.tsx:156) correctly solves the "policy.connections is empty on a non-active workspace" problem — without it the toggle would read off/non-navigable on a workspace that actually supports vendors. Gated on the beta, guarded by the has-been-fetched flag, and skipped offline, so it's at most one extra openPolicyAccountingPage per workspace. 👍
  • Making pendingAction optional in MoreFeatureToggle.tsx:29 is backward-compatible with existing callers.
  • Icon vs. illustration namespaces are used correctly — expensifyIcons.Briefcase for the LHN menu row, illustrations.Briefcase for the More Features slot and the Vendors page header.
  • Suitcase was fully removed from WorkspaceInitialPage with no dangling references; language files add the vendors key across all 11 locales with correct sentence-case titles.

Nits

  • No unit test was added (checklist item is unchecked). For a beta-gated visual slot this is low-risk, but a small test asserting the row only renders under VENDOR_MATCHING and stays locked would guard the gating in the follow-up PR that wires up the real toggle.

Reviewed at e38761a. I focused on correctness and consistency; I did not run the app or verify the Briefcase asset visually across platforms — that still needs the screenshots the checklist calls for.

@Beamanator Beamanator added the InternalQA This pull request required internal QA label Jul 27, 2026
@Beamanator

Copy link
Copy Markdown
Contributor Author

description updated! all you @deetergp !

@deetergp deetergp left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@deetergp
deetergp merged commit 5e7be98 into main Jul 27, 2026
47 checks passed
@deetergp
deetergp deleted the beaman-vendors-more-features branch July 27, 2026 19:02
@github-actions

Copy link
Copy Markdown
Contributor

🚧 deetergp has triggered a test Expensify/App build. You can view the workflow run here.

@OSBotify

Copy link
Copy Markdown
Contributor

✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

@OSBotify

Copy link
Copy Markdown
Contributor

🚀 Deployed to staging by https://github.com/deetergp in version: 9.4.46-0 🚀

platform result
🕸 web 🕸 success ✅
🤖 android 🤖 success ✅
🍎 iOS 🍎 success ✅

@MelvinBot

Copy link
Copy Markdown
Contributor

Help site review — no changes required

I reviewed the changes in this PR against the help site files under docs/articles and no help site updates are required.

Why:

  • The new Vendors row is gated behind the vendorMatching beta, so it isn't generally available to customers yet.
  • The toggle is intentionally locked and non-functional in this PR (no EnablePolicyVendors backend command exists yet). Per the PR description, a follow-up PR will unlock the switch and wire the real enable/disable flow — there is no new user-facing behavior to document at this stage.
  • The rest of the diff is UI scaffolding: a new Briefcase icon/illustration, asset registrations, and the workspace.moreFeatures.vendors.{title,subtitle} copy strings. None of this changes documented product behavior.
  • The underlying vendor-matching functionality is already documented in Manage Vendor Matching for QuickBooks Online, and there is no "More features" overview article that enumerates the individual Organize toggles (Categories, Tags, Taxes) that would need a new Vendors entry.

Since no doc changes are needed, I did not create a draft help site PR. I'd recommend revisiting help site documentation with the follow-up PR that unlocks the toggle and ships the real enable/disable flow — that's when the feature becomes actionable for customers and the vendor-matching article (or a new More features article) may need to cover enabling Vendors from Workspace settings > More features.

@Beamanator, if you'd like documentation added now anyway, let me know and I'll draft a help site PR.

@OSBotify

Copy link
Copy Markdown
Contributor

🚀 Deployed to production by https://github.com/marcaaron in version: 9.4.46-10 🚀

platform result
🕸 web 🕸 success ✅
🤖 android 🤖 success ✅
🍎 iOS 🍎 success ✅

Bundle Size Analysis (Sentry):

@melvin-bot

melvin-bot Bot commented Jul 31, 2026

Copy link
Copy Markdown

🤖 Payment issue created: #97531

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

Labels

InternalQA This pull request required internal QA

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants