Move multi-level tag Required from the Tags table to Rules - #98414
Conversation
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
|
@MelvinBot review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 62ceef335c
ℹ️ 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".
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
|
Reviewed the changes. The overall approach is clean — gating the old Required column/switches/bulk-actions behind 🐛 Per-level toggles render stale (all-off) after a delayed tag loadThis is exactly testing step 10 (fresh login / hard refresh → go straight to Rules → General → Require fields). The sync effect is one-shot per
Suggested fix: sync ❓ "Can't make all tag lists optional" guard is dropped for independent multi-level tagsOn the old Tags table, toggling off the last required list is hard-blocked with the Nothing else blocking from my read. Happy to implement either fix — reply with |
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
…s section Signed-off-by: krishna2323 <belivethatkg@gmail.com>
|
🚧 JmillsExpensify has triggered a test Expensify/App build. You can view the workflow run here. |
This comment has been minimized.
This comment has been minimized.
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
@JmillsExpensify could you please share the steps you followed? Did you use the |
|
Not sure on the steps, but it's a workspace connected to NetSuite I added him to owned by
I guess I'm not really following this screen, why would making a tag level required or not be locked? I understand the category one because we force you to minimally categorise expenses.
|
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
@MelvinBot review and also check if there are any behavioral changes. |
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
Fixed |
Same reproducible on staging also: Monosnap.screencast.2026-08-18.01-22-43.mp4 |
ok, looks like there's no way to set |
|
There's still bug in optimistic violation but I reproduced this in production as well. So I think we can fix this separately, not blocking Rules feature.
Screen.Recording.2026-08-17.at.9.14.49.PM.mov |
ReviewOverall this is a well-structured change — the hard part (recomputing violations once from the combined end state, and splitting a mixed require/optional save into one request per direction so the last write can't clobber the others) is handled carefully and the comments explain the "why" well. I traced the new action ( 🐛 A required level whose tags are all disabled can't be turned off
isActive={getLevelRequired(tagList) && areLevelTagsEnabled}For a level that is already Required but currently has all of its tags disabled (
This directly contradicts testing step 9 ("If Region is already required, verify its toggle remains interactive so it can be turned off") — it's interactive but not actually turn-off-able. The isActive={getLevelRequired(tagList)}Truth table after the suggested change
Minor / non-blocking
I focused on a static code review (didn't set up a live Control workspace with |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ccfea93255
ℹ️ 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".
Beta on/off regression analysisBeta OFF matches production ✅ (one ungated exception, noted below). I traced every one of the 12 changed files and confirmed each behavioral change is either rendered only inside revamp-only pages/components or guarded by an explicit Beta ON has one real regression — the required-level toggle bug I flagged in the earlier review is still the main one. Beta-OFF gating — how each change is neutralized
|
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
|
|
|
🚧 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.56-0 🚀
|
Help site review — no docs changes requiredI reviewed the changes in this PR against the help site files under What the PR does: It moves the multi-level tag Required setting out of the Tags table and into Rules → General → Require fields for all expenses (per-tag-list toggles), and removes the Required column/actions from the Tags table — all only when the Why no docs change: The only help article that touches this area is I verified this against the current web UI:
Live UI verification
Screenshots posted above. Recommendation: When @Krishna2323, since no help site changes are required at this time, I did not create a docs PR. If you'd like the doc pre-staged for the beta's GA release, reply and I'll open one. |
|
Deploy Blocker #98932 was identified to be related to this PR. |
|
Hi @Krishna2323. Could you please let us know how we can enable or disable |
|
@IuliiaHerets by that I meant you need to be on an account with Updated the testing steps, sorry for the confusion. |
|
@Krishna2323 is applause.expensifail.com domain accounts are "Rulesrevamp" enabled? |
|
🚀 Deployed to production by https://github.com/Beamanator in version: 9.4.56-3 🚀
Bundle Size Analysis (Sentry): |


Explanation of Change
Fixed Issues
$ #95764
PROPOSAL:
Tests
Testing steps
Per-level Required — independent multi-level tags
rulesRevampbeta access account, create two independent tag lists (e.g. State, Region), each with enabled tags.Single/dependent tags
Disabled tag levels
Tags load without visiting Tags
Required removed from Tags table (beta on)
Beta off
rulesRevampbeta accessOffline tests
QA Steps
Same as tests
Verify that no errors appear in the JS console
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectioncanBeMissingparam foruseOnyxtoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, 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.ScrollViewcomponent to make it scrollable when more elements are added to the page.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_hybrid.mp4
Android: mWeb Chrome
android_mWeb.mp4
iOS: Native
ios_hybrid.mp4
iOS: mWeb Safari
ios_mWeb.mp4
MacOS: Chrome / Safari
web_chrome.mp4