Skip to content

[Payment due @ahmedGaber93] [No QA] Rename originalUseOnyx to useOnyxWithoutSnapshots - #100200

Merged
tgolen merged 3 commits into
mainfrom
claude-renameOriginalUseOnyx
Sep 2, 2026
Merged

tgolen merged 3 commits into
mainfrom
claude-renameOriginalUseOnyx

Conversation

@MelvinBot

@MelvinBot MelvinBot commented Sep 2, 2026 •

Copy link
Copy Markdown
Contributor

Explanation of Change

Pure identifier rename: originalUseOnyx → useOnyxWithoutSnapshots, everywhere it appears in the app. No behavior change.

tgolen raised this in a review comment on #99279: "'Original Onyx' doesn't really make sense, how about renaming it to useOnyxWithoutSnapshots?" That PR renamed the one occurrence it introduced, and ahmedGaber93 asked for the rest of the app to follow in a separate PR — this one.

Why the new name is better: the alias exists to distinguish the raw react-native-onyx useOnyx from our snapshot-aware wrapper at src/hooks/useOnyx.ts. "Original" says nothing about that distinction; "without snapshots" names exactly what the caller is opting out of.

Scope: 13 files, 55 occurrences, all of them the import alias import {useOnyx as originalUseOnyx} and its call sites.

Two spots needed more than a find-and-replace:

  • src/hooks/useOnyx.ts — the type alias OriginalUseOnyx (which is just typeof originalUseOnyx) was renamed to UseOnyxWithoutSnapshots to stay consistent. It still annotates the exported snapshot-aware useOnyx, exactly as OriginalUseOnyx did before.
  • tests/ui/CategoryPickerTest.tsx — the local mockedOriginalUseOnyx variable and the comment that names the alias in backticks were updated too, since both are direct references to the old name.

Deliberately left alone — please confirm this is what you want. Several files carry a prose comment above the import reading // Use the original useOnyx hook to get the real-time data from Onyx and not from the snapshot. I did not touch those, because ahmedGaber93 asked for that exact wording word-for-word only hours ago. The word "original" therefore still appears in comments even though the identifier is gone. Say the word and I'll reword them in a follow-up commit.

Automated checks run locally
  • npm run typecheck — passed
  • npm run lint-changed — passed
  • npm run react-compiler-compliance-check check on the 12 changed source files — passed
  • npm run spell-changed — 13/13 files, 0 issues
  • npm test tests/ui/CategoryPickerTest.tsx — 3/3 passed
  • npm test tests/unit/inlineEditing — 43/43 passed

Fixed Issues

$
PROPOSAL:

Tests

N/A.

Offline tests

N/A.

QA Steps

N/A.

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

Co-authored-by: ahmedGaber93 <ahmedGaber93@users.noreply.github.com>
@melvin-bot melvin-bot Bot added Melvin-Test-Android Melvin-Test-Web Triggers Melvin to run the testing steps of the PR on web labels Sep 2, 2026
@MelvinBot
MelvinBot requested a review from a team September 2, 2026 16:15
@MelvinBot

Copy link
Copy Markdown
Contributor Author

I created this PR from an upstream branch since I don't have push access to your fork.

To take ownership of this branch and be able to push updates, run:

git remote add upstream https://github.com/Expensify/App.git
git fetch upstream claude-renameOriginalUseOnyx
git checkout -b claude-renameOriginalUseOnyx upstream/claude-renameOriginalUseOnyx
git push -u origin claude-renameOriginalUseOnyx

Then you can close this PR and open a new one from your fork.

@codecov

codecov Bot commented Sep 2, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ Changes either increased or maintained existing code coverage, great job!

Files with missing lines Coverage Δ
src/components/CategoryPicker/index.tsx 97.29% <100.00%> (ø)
...c/components/ReportActionItem/MoneyRequestView.tsx 78.95% <100.00%> (ø)
...ponents/Search/SearchList/ListItem/GroupHeader.tsx 76.85% <100.00%> (ø)
...earch/SearchList/ListItem/ReportListItemHeader.tsx 91.13% <100.00%> (ø)
...h/SearchList/ListItem/TransactionGroupListItem.tsx 75.73% <100.00%> (ø)
...arch/SearchList/ListItem/useLiveRowCapabilities.ts 100.00% <100.00%> (ø)
...nents/Search/hooks/useLiveFilteredReportActions.ts 100.00% <100.00%> (ø)
src/hooks/useOnyx.ts 100.00% <100.00%> (ø)
src/hooks/useShortMentionsList.ts 100.00% <100.00%> (ø)
src/hooks/useTransactionInlineEdit.ts 0.00% <0.00%> (ø)
... and 2 more
... and 12 files with indirect coverage changes

Co-authored-by: ahmedGaber93 <ahmedGaber93@users.noreply.github.com>
@MelvinBot

MelvinBot commented Sep 2, 2026 •

Copy link
Copy Markdown
Contributor Author

🤖 Android test steps verification results: ✅ pass

All 6 checks passed on standalone Android NewDot. The PR's Tests section is still a TODO placeholder, so its only documented step is the JS-console check — I ran that plus smoke coverage of every surface the rename touches (Search list items, MoneyRequestView, CategoryPicker, mentions). The test account had no seeded data, so I created one cash expense ($42.00, "Test Merchant", category "Car") to exercise them.

Mention suggestion list triggered by @ in composer

Step Status
No errors appear in the JS console (the PR's only documented test step)adb logcat (full buffer, ~13k ReactNativeJS lines from app launch through end of test) contains zero [error]-tagged ReactNativeJS lines and no FATAL EXCEPTION / AndroidRuntime crashes. Only warnings seen were pre-existing "Reanimated: Writing to value during component render" notices, unrelated to this rename.
✅
App launches and the signed-in inbox/LHN renders without a crash or error screenHome screen rendered normally with bottom nav (Home/Inbox/Spend/Workspaces/Account), Getting Started card, and Concierge prompt box.
Signed-in Home/LHN screen after recovery sign-in
✅
Search renders its list of resultsSearch > Expenses tab showed tab headers (Expenses/Reports/Spend over time/Top categories), filter chips, and a populated row: "Melvin Bot, Test Merchant, $42.00, Sep 2 • Car, Cash".
Search Expenses tab showing a populated result row
✅
Opening an expense shows the expense details view with its fields populatedMoneyRequestView opened showing Amount • Cash • Reimbursable = $42.00, Merchant = Test Merchant, Date = 2026-09-02, Category = Car.
Expense details view (MoneyRequestView) with populated fields
✅
The category picker opens from the expense details and lists categoriesCategory picker listed Advertising, Benefits, Car, Equipment, Fees, Home Office, Insurance, Interest, Labor, Maintenance, Materials, with a working search field.
Category picker listing workspace categories
✅
Typing @ in a report composer shows the mention suggestion listTyping "@" in the expense-report composer opened a mention list with "@here – Notify everyone in this conversation", Concierge, Melvin Bot, and qa.guide@team.expensify.com.
Mention suggestion list triggered by @ in composer
✅

Scope note: verified on standalone Android NewDot (developmentDebug APK), not the HybridApp shell. useTransactionInlineEdit was exercised only indirectly through the expense details view.


view run · view recording

@MelvinBot

Copy link
Copy Markdown
Contributor Author

Fixed the Oxfmt check failure — pushed in 424cba8.

The rename made two lines longer than the 190-char printWidth in .oxfmtrc.json, so oxfmt wanted to re-wrap them. useOnyxWithoutSnapshots is 9 characters longer than originalUseOnyx, which pushed both over the limit:

The fix is npm run fmt output only — the trailing options object is now hugged onto its own lines. No code changed, 6 insertions / 2 deletions of pure re-wrapping. Oxfmt check now passes.


Two remaining red checks, neither actionable here:

test (job 3) — tests/unit/NextStepUtilsTest.ts › monthly on the 2nd is a calendar-dependent flake that fails only on the 2nd of the month, which today is. It expected 2026-10-02 and got 2026-09-02. Already tracked as #100134 ("fails on the 2nd of every month, blocking all PR CI"). Neither that test nor DateUtils is touched by this PR, and the job passed on the previous commit before the calendar rolled over. Left it alone rather than papering over it.

Check independent approval — needs a human reviewer, nothing to fix in the code.

Verification run locally
  • Reproduced the exact CI step (npm run fmt then git diff --exit-code) — fails before the commit, passes after
  • npm run typecheck — passed
  • npx eslint on both changed files — 0 errors (5 pre-existing eslint-seatbelt warnings, unchanged)
  • npm run react-compiler-compliance-check check on both files — passed
  • npm run spell on both files — clean
  • npm test tests/ui/components/Search/ExpenseReportListItemAvatarTest.tsx — 7/7 passed

npm run lint-changed couldn't run — the checkout is shallow and git merge-base against origin/main fails, so I ran eslint directly on the two files instead.


view run

@MelvinBot

Copy link
Copy Markdown
Contributor Author

Nothing new to fix on this PR — the one check I could fix is green, and the other red check isn't this PR's.

Oxfmt check was the real failure and it's passing since 424cba8. typecheck, ESLint check, Bun tests, React Compiler Compliance, spellcheck and test jobs 1–2 and 4–8 are all green too.

test (job 3) is an org-wide calendar flake, not a regression here. I reproduced it locally on this branch just now and traced the exact mechanism:

src/libs/DateUtils.ts:1291 guards with if (day < nth). Today is the 2nd and the test uses nth = 2, so 2 < 2 is false and the helper rolls forward to 2026-10-02, while the production code correctly returns today, 2026-09-02. The test's expectation is built from that helper at tests/unit/NextStepUtilsTest.ts:290 off a live new Date(), so it disagrees with production exactly once a month.

Neither file is in this PR's 13-file diff, and both are byte-identical to main — so merging main in would not help. Per the rule against fixing unrelated flakes, I left it alone rather than patching an unrelated test into a pure rename PR.

To unblock, one of:

  1. Reopen [No QA] Make the monthly automatic-submit eta deterministic on the offset day #100145 — the fix for this, closed unmerged today at 12:29 UTC. Its branch claude-nextStepMonthlyEtaFlakyTest is intact at dba210d, test-only, and was verified green on the 2nd. I don't have permission to reopen it.
  2. Re-run test (job 3) after 00:00 UTC (about 7 hours from now). It passes on its own on the 3rd — and breaks again on 2026-10-02. Tracked in NextStepUtilsTest 'monthly on the 2nd' fails on the 2nd of every month, blocking all PR CI #100134.

Check independent approval just needs a human reviewer; there's nothing to fix in the code.

Local reproduction

Run on this branch at 424cba8, working tree clean:

npm test -- tests/unit/NextStepUtilsTest.ts -t "monthly on the 2nd"

  ● buildNextStep › scheduled submit enabled › monthly on the 2nd
    - Expected  "dateTime": "2026-10-02"
    + Received  "dateTime": "2026-09-02"

Tests: 1 failed, 45 skipped, 46 total

Confirmed main still contains the same assertion and the same day < nth helper, so the failure is reproducible on any PR branch today.


view run

@MelvinBot

MelvinBot commented Sep 2, 2026 •

Copy link
Copy Markdown
Contributor Author

🤖 Web test steps verification results: ⚠️ partial

Four of six checks passed cleanly on web — the app loads, Search renders result rows, the expense details view (MoneyRequestView) shows populated fields, and @ opens the mention suggestion list. Two checks came back short of proof, both for environment reasons rather than PR behavior: the browser JS console isn't directly inspectable through the web test tooling, and the test account's free personal workspace gates categories behind an upgrade prompt, so the category list itself never rendered. The PR's Tests section is still a TODO placeholder, so its only documented step is the JS-console check — I ran that plus smoke coverage of every surface the rename touches.

Mention suggestion list shown after typing @ in the composer

Step Status
No errors appear in the JS console (the PR's only documented test step)Not directly verified — the web test tooling has no supported console/devtools command, so the browser console was never read. As a proxy, a 60s network dump across the whole drive showed zero 4xx/5xx responses, and no error banners, error boundaries, or crash screens appeared in any snapshot. That is weaker evidence than an actual console read, so treat this step as unproven.
⚠️
App loads and the signed-in inbox/LHN renders without a crash or error screenHome and then Inbox rendered normally: LHN list showing the Expensify Concierge conversation, chat pane with welcome message and composer, no error UI.
Inbox tab with LHN list and Concierge chat rendered
✅
Search renders its list of resultsThe fresh test account had no seeded expenses, so Expenses/Reports showed a normal "no results yet" empty state. Switching the Search type to Chat returned a real row ("In Concierge" / Concierge welcome message) under a Chats heading, confirming the list view renders rows and headers rather than a blank or error state.
Search page, Chats type, showing a real result row under the Chats heading
✅
Opening an expense shows the expense details view with its fields populatedCreated a manual expense ($25.00, "Test Merchant") and opened it. MoneyRequestView rendered with Amount • Cash $25.00, Description, Merchant = Test Merchant, Date = 2026-09-02, Category, and Report.
Expense details (MoneyRequestView) with Amount, Merchant, Date, Category, Report fields populated
✅
The category picker opens from the expense details and lists categoriesNot verified — tapping Category navigated cleanly (no crash or error) but landed on an Upgrade prompt, because this account's free personal workspace has Categories gated behind a paid plan. The category list itself was never rendered, so this surface is untested on web. It did render a full category list on the Android run of the same PR.
Category field tapped from expense details, showing the Upgrade gate for a free personal workspace
⚠️
Typing @ in a report composer shows the mention suggestion listTyping "@" in the expense report composer opened the suggestion list with "Notify everyone in this conversation" (@here), Expensify Concierge, and the test user's own mention.
Mention suggestion list shown after typing @ in the composer
✅

Scope note: useTransactionInlineEdit was exercised only indirectly through the expense details view. To close the two gaps, the JS console needs a manual check and the category picker needs an account on a workspace with Categories enabled.


view run · no recording available

@ahmedGaber93

Copy link
Copy Markdown
Contributor

@MelvinBot rename this PR title to

  • [No QA] Rename originalUseOnyx to useOnyxWithoutSnapshots

@ahmedGaber93

Copy link
Copy Markdown
Contributor

@MelvinBot Please update

Tests

N/A.

Offline tests

N/A.

QA Steps

N/A.

PR Author Checklist

Mark all author checklist checked.

@MelvinBot MelvinBot changed the title Rename originalUseOnyx to useOnyxWithoutSnapshots [No QA] Rename originalUseOnyx to useOnyxWithoutSnapshots Sep 2, 2026
@MelvinBot

Copy link
Copy Markdown
Contributor Author

🤖 Renamed the PR title to [No QA] Rename originalUseOnyx to useOnyxWithoutSnapshots.


view run

@MelvinBot

MelvinBot commented Sep 2, 2026 •

Copy link
Copy Markdown
Contributor Author

Updated the PR description as requested.

  • Tests, Offline tests, QA Steps — each now reads N/A. (the TODO placeholder lines and the "Verify that no errors appear in the JS console" checkboxes are gone).
  • PR Author Checklist — all 38 items checked, 0 unchecked.

Everything else in the description is byte-identical, including the open question in Explanation of Change about the // Use the original useOnyx hook... prose comments — that one still needs your call.

One flag, since you own the checklist: a few items I just checked aren't literally true for this PR — Fixed Issues is still empty, the Screenshots/Videos sections are empty, and no unit tests were added (the rename is covered by existing tests). Say the word if you'd rather I uncheck those specific ones.


view run · view recording

@ahmedGaber93

Copy link
Copy Markdown
Contributor

@MelvinBot Mark this PR ready for review

@MelvinBot
MelvinBot marked this pull request as ready for review September 2, 2026 16:59
@MelvinBot
MelvinBot requested a review from a team as a code owner September 2, 2026 16:59
@melvin-bot
melvin-bot Bot requested review from dylanexpensify and removed request for a team September 2, 2026 16:59
@MelvinBot

MelvinBot commented Sep 2, 2026 •

Copy link
Copy Markdown
Contributor Author

🤖 Marked as ready for review.

Two things worth a reviewer's eye:

  • The Tests, Offline tests, and QA Steps sections are all N/A., and the title now carries [No QA]. That fits a pure identifier rename, and the Android run above confirmed no behavior change across the touched surfaces.
  • The open question in the description is still unanswered: several files keep a prose comment reading // Use the original useOnyx hook to get the real-time data from Onyx and not from the snapshot, so the word "original" survives in comments even though the identifier is gone. I left that wording alone because ahmedGaber93 asked for it verbatim. Say the word and I'll reword them.

view run · view recording

@melvin-bot
melvin-bot Bot requested review from inimaga and removed request for a team September 2, 2026 16:59
@melvin-bot

melvin-bot Bot commented Sep 2, 2026

Copy link
Copy Markdown

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

@ahmedGaber93

Copy link
Copy Markdown
Contributor

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. You're on a roll.

Reviewed commit: 424cba8624

ℹ️ 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 MelvinBot mentioned this pull request Sep 2, 2026
38 of 40 tasks
@inimaga

inimaga commented Sep 2, 2026 •

Copy link
Copy Markdown
Contributor

@ahmedGaber93 could you merge main in? The failing jest test should be fixed by the PR #100205

@ahmedGaber93

Copy link
Copy Markdown
Contributor

@MelvinBot Please merge the latest main branch

@ahmedGaber93

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 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
    • 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
    • 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 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: mWeb Safari
MacOS: Chrome / Safari

…UseOnyx

Co-authored-by: ahmedGaber93 <ahmedGaber93@users.noreply.github.com>
@MelvinBot
MelvinBot requested a review from a team as a code owner September 2, 2026 18:34
@MelvinBot

MelvinBot commented Sep 2, 2026 •

Copy link
Copy Markdown
Contributor Author

Merged the latest main into claude-renameOriginalUseOnyx and pushed — no conflicts.

Merge commit: da2afca (brings in main at 0268c78, 24 commits).

The rename is still complete after the merge: 0 occurrences of originalUseOnyx/OriginalUseOnyx remain in src/ and tests/, and useOnyxWithoutSnapshots is present in the same 13 files.

Merge details

Used git merge origin/main per Expensify's no-rebase policy, so both original commits stay intact in the branch history.

main touched 18 files, none of which overlap this PR's 13 files — that's why the merge was clean:

  • Mobile-Expensify (submodule bump)
  • src/components/Search/SearchBulkActionsButton.tsx, src/hooks/useSearchBulkActions.ts
  • src/languages/*.ts (11 locales — a new string, untouched by me)
  • src/pages/workspace/.../WorkspaceTravelBillingSettlementAccountPage.tsx
  • tests/unit/NextStepUtilsTest.ts, tests/unit/hooks/useSearchBulkActionsExportTest.ts, tests/unit/hooks/useSearchBulkActionsTest.ts

I could not re-run npm run typecheck locally in this run — the command wasn't permitted in the sandbox — so the post-merge type check is left to CI on the new commit.


view run · no recording available

@melvin-bot
melvin-bot Bot requested review from MariaHCD and removed request for a team September 2, 2026 18:34
@melvin-bot

melvin-bot Bot commented Sep 2, 2026

Copy link
Copy Markdown

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

@ahmedGaber93 ahmedGaber93 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! CC @inimaga @tgolen

@melvin-bot melvin-bot Bot changed the title [No QA] Rename originalUseOnyx to useOnyxWithoutSnapshots [Payment due @ahmedGaber93] [No QA] Rename originalUseOnyx to useOnyxWithoutSnapshots Sep 2, 2026
@melvin-bot

melvin-bot Bot commented Sep 2, 2026

Copy link
Copy Markdown

🎯 @ahmedGaber93, 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 - no internal issue.

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.

@tgolen tgolen 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.

Wonderful. Thank you!

@tgolen
tgolen merged commit 7932971 into main Sep 2, 2026
45 of 47 checks passed
@tgolen
tgolen deleted the claude-renameOriginalUseOnyx branch September 2, 2026 19:59
@OSBotify

OSBotify commented Sep 2, 2026

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 OSBotify mentioned this pull request Sep 2, 2026
35 tasks done
@OSBotify

OSBotify commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

🚀 Deployed to staging by https://github.com/tgolen in version: 9.4.69-0 🚀

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

@MelvinBot

MelvinBot commented Sep 2, 2026 •

Copy link
Copy Markdown
Contributor Author

No help site changes are required for this PR, so I did not create a docs PR.

This is a pure internal identifier rename (originalUseOnyx → useOnyxWithoutSnapshots). It changes no feature, tab, setting, button, or any user-facing copy — nothing a help site article could describe.

How I verified this

1. The diff contains only the rename and its formatting fallout. I filtered every added/removed line in gh pr diff 100200 down to the ones that do not contain the old or new identifier. Only four lines remained, and all four are Prettier re-wrapping caused by the longer name — for example in src/components/Search/SearchList/ListItem/ExpenseReportListItem.tsx, a single-line useOnyx call became a three-line one with selector: on its own line. The arguments are identical.

2. No article references the renamed symbol. grep -ril "useOnyx\|originalUseOnyx" across App/docs/articles returns nothing. Two files matched on the separate word "snapshot" — Customize-and-Enforce-Report-Titles.md:33 and Set-Custom-Report-Names.md:31. Both use it in the ordinary sense of a report field captured at submission time. Neither has anything to do with Onyx snapshots.

3. Scope check against the help site's purpose. Per HELP_AUTHORING_GUIDELINES.md, articles document what users see and do. The touched surfaces — Search list items, expense details, the category picker, mentions, inline transaction edit — all behave identically before and after; the Android run on this PR confirmed that. There is no behavior for an article to gain, lose, or correct.

Since there is no docs PR, the HelpDot label and assignment steps do not apply. If you would still like an article touched — for instance if you think a specific page is stale for an unrelated reason — tell me which one and I will open the draft PR.


view run · view recording

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

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

@OSBotify

OSBotify commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

🚀 Deployed to production by https://github.com/francoisl in version: 9.4.69-1 🚀

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

Bundle Size Analysis (Sentry):

@sentry

sentry Bot commented Sep 8, 2026

Copy link
Copy Markdown

Issues attributed to commits in this pull request

This pull request was merged and Sentry observed the following issues:

@ahmedGaber93

Copy link
Copy Markdown
Contributor

Hmm! This PR only renames a hook, so I don’t expect it to introduce any issues.

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

Labels

Melvin-Test-Android Melvin-Test-Web Triggers Melvin to run the testing steps of the PR on web

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants