feat: remove isNewManualExpenseFlowEnabled beta flag#94134
Conversation
|
@codex review |
|
Codex Review: Didn't find any major issues. Hooray! Reviewed commit: ℹ️ About Codex in GitHubCodex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
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". |
|
@ikevin127 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: 51c3bcacbc
ℹ️ 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".
Reviewer Checklist
Screenshots/VideosScreen.Recording.2026-06-21.at.18.17.32.mov |
|
@thelullabyy
Screen.Recording.2026-06-21.at.18.30.07.movThis is a pre-existing bug on main. The PR only removes the isNewManualExpenseFlowEnabled beta flag and does not touch category validation logic at all. Root CauseThe
// src/components/MoneyRequestConfirmationList.tsx:344
const isCategoryRequired = !!policy?.requiresCategory && !isTypeInvoice;
// Max length
if (iouCategory.length > CONST.API_TRANSACTION_CATEGORY_MAX_LENGTH) {
return {errorKey: 'iou.error.invalidCategoryLength'};
}
// Out of policy / disabled category
if (iouCategory && policyCategories && !policyCategories[iouCategory]?.enabled && !isCategoryBeingCreated) {
return {errorKey: 'violations.categoryOutOfPolicy'};
}There is NO check for:
Why you see "Required" but can still create: The "Required" label is purely cosmetic. The validation hook doesn't know about isCategoryRequired. The merchant field does have this wired correctly in useConfirmationValidation.ts (lines 197-203): if (isMerchantRequired) {
if (!isEditingSplitBill && !isMerchantFieldValid) {
return {errorKey: 'iou.error.invalidMerchant'};
}
}But category never had an equivalent check. Where a Fix Would Go (outside this PR): You'd need to add something like this in useConfirmationValidation.ts, around line 219 (after the existing category checks): if (requiresCategory && !iouCategory) {
return {errorKey: 'common.error.fieldRequired'};
}And pass |
ikevin127
left a comment
There was a problem hiding this comment.
🟢 LGTM
The PR is well-structured and the changes are correct and the removal of the isNewManualExpenseFlowEnabled beta flag is clean and thorough.
Note
For Author, CME, QA please note this comment.
Explanation of Change
Fixed Issues
$ #93854
PROPOSAL:
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
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari
Screen.Recording.2026-06-21.at.15.43.27.mov