Draft: Drop the vendorMatching beta gate from QBO vendor surfaces (R1 GA) - #98516
Open
KioCoan wants to merge 6 commits into
Open
Draft: Drop the vendorMatching beta gate from QBO vendor surfaces (R1 GA)#98516KioCoan wants to merge 6 commits into
KioCoan wants to merge 6 commits into
Conversation
melvin-bot
Bot
requested review from
garrettmknight and
neil-marcellini
and removed request for
a team
August 13, 2026 00:48
|
@neil-marcellini 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] |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 764d3ba510
ℹ️ About Codex in GitHub
Your team has set up Codex to 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 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
garrettmknight
removed their request for review
August 13, 2026 15:22
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Explanation of Change
Vendor matching R1 (QuickBooks Online) has shipped and gone GA, so QBO code paths should no longer consult the
vendorMatchingbeta. R2 (Sage Intacct) and R3 (Xero) are still pre-GA, so the beta stays in place and keeps gating those two integrations.The whole change hinges on one idea:
PolicyUtils.hasVendorFeaturenow short-circuits totrueonisQBOVendorMatchingActivebefore the beta is consulted, and only consults it on the Intacct and Xero branches.Because of that, the nine cross-integration call sites (
ViolationsUtils,MoneyRequestView,WorkspaceVendorsPage,WorkspaceInitialPage,WorkspaceMoreFeaturesPage,MerchantRulePageBase,AddVendorPage,IOURequestStepVendor) already route throughhasVendorFeatureand needed no edit. Only the gates that read the beta directly changed:DynamicQuickbooksCompanyCardExpenseAccountPage.tsx— a QBO-only page, so the beta conjunction is dropped outright and the now-unusedusePermissionsimport is removed.WorkspaceMoreFeaturesPage/index.tsx— the whole Vendors toggle was wrapped in{isVendorMatchingEnabled && ...}, which would have hidden the row from non-beta QBO workspaces. It now usesshouldShowVendorsFeature = isVendorMatchingEnabled || hasVendorFeature(policy, isVendorMatchingEnabled), so beta members keep today's behavior (row always visible, active state from the connection) and everyone else sees it once QBO actually scopes the vendor field.usePolicyConnectionsPrefetchcall sites — these passed the beta asenabledbecausepolicy.connectionsisn't loaded yet, so QBO-ness cannot be known at prefetch time. They now passtrue(or justcanReadVendorsonWorkspaceInitialPage). This is safe and has precedent: the hook already self-guards on offline, no accounting connection, and already-fetched, andwithPolicyConnections.tsxhas always passedtrueunconditionally.The two Xero-only pages (
DynamicXeroExportConfigurationPage,DynamicXeroNonReimbursableDefaultContactSelectPage) are deliberately untouched, andCONST.BETAS.VENDOR_MATCHINGstays because Xero and Sage Intacct still consume it.Fixed Issues
https://github.com/Expensify/Expensify/issues/670049
Tests
Offline tests
QA Steps
// TODO: These must be filled out, or the issue title must include "[No QA]."
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionAvatar, 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
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari