Skip to content

Sort top categories/merchants insights by groupTotal desc#84424

Merged
puneetlath merged 24 commits intomainfrom
claude-fixTopInsightSearchSortOrder
Mar 23, 2026
Merged

Sort top categories/merchants insights by groupTotal desc#84424
puneetlath merged 24 commits intomainfrom
claude-fixTopInsightSearchSortOrder

Conversation

@MelvinBot
Copy link
Copy Markdown
Contributor

@MelvinBot MelvinBot commented Mar 6, 2026

Explanation of Change

This PR fixes the default sorting for "Top Categories" and "Top Merchants" insight searches to sort by groupTotal desc (highest spend first) instead of alphabetically.

Key Changes

  1. Fixed Top Categories/Merchants sorting - Now correctly sort by total spend descending instead of alphabetically by name

  2. Smart sort reset logic for time-based groupBys (month/week/year/quarter):

    • Line view: Always resets sort to chronological (asc) for left-to-right readability
    • Table view: Always resets sort to desc (most recent first)
    • Bar/Pie views: Preserves user's sort preference (can show top spending periods first)
  3. Menu item deselection - When a user manually changes sortBy or sortOrder on a predefined search like "Top Categories", the menu item is deselected since the query no longer matches the original definition

Behavior Matrix for Time-Based GroupBy

View Transition Sort Behavior
Any → Line Reset to asc
Any → Table Reset to desc
Any → Bar/Pie Preserve current sort

For non-time groupBys (category, merchant), sort is preserved across all view switches.

Fixed Issues

$ #84420

Tests

Top categories and merchants ordering

  1. Create some expenses with different amounts, merchants, and categories, all dated to last month
  2. Navigate to the Search page
  3. Click on "Top categories" in the suggested searches
  4. Switch to view:table
  5. Verify categories are sorted from highest to lowest total spend (not alphabetically)
  6. Go back and click on "Top merchants"
  7. Switch to view:table
  8. Verify merchants are sorted from highest to lowest total spend (not alphabetically)
  9. Go to the base expenses search
  10. Open the filters
  11. Set group by to category
  12. Verify the results are sorted by category ascending
  13. Set the group by to merchant
  14. Verify the results are sorted by merchant ascending
2026-03-20_07-53-34.mp4

Verify proper sort order default for group by month

  1. Go to the reports page
  2. Select expenses
  3. Open filters and group by month
  4. Switch the view to "Line"
  5. Verify the months increase from left to right and the sort order in the URL is asc

Insight search item is de-selected when sort order or group by is manually changed

  1. Go to the reports page
  2. Select Top categories
  3. Change the sort order in the url to asc
  4. Verify the "Top categories" left hand menu item is no longer selected
  5. Verify the chart does not display the top categories title
  6. Verify the "Expenses" menu item is now selected
  7. Change the sort order again
  8. Verify the "Top categories" left hand menu item is selected
  9. Verify the chart title displays "Top categories"
  10. Change the group by to another field
  11. Verify the "Top categories" left hand menu item is not selected and the "Expenses" menu item is now selected
  12. Change the group by back to Category
  13. Notice that the "Expenses" menu item is still selected and not top categories, because the sort order is now asc, because it is the default sort order for the previous group by with a table view. I think this is OK.

Video for sort order change

2026-03-18_07-54-25.mp4

Video for group by change

2026-03-18_07-59-10.mp4

Sort order resets correctly when switching views with time-based groupBy

  1. Go to the Search page and select Expenses
  2. Open filters and set group by to Month
  3. Verify the URL shows sortOrder:desc (table default)
  4. Switch the view to Line
  5. Verify the URL shows sortOrder:asc (line default - chronological)
  6. Switch to Bar view
  7. Verify the URL still shows sortOrder:asc
  8. Switch back to Table view
  9. Verify the URL shows sortOrder:desc again (reset to table default, not stuck on asc)
2026-03-20_08-28-08.mp4

Sort order is preserved when switching views with non-time groupBy

  1. Click on "Top categories" in the suggested searches
  2. Verify URL shows sortBy:groupTotal sortOrder:desc
  3. Switch to Table view
  4. Verify sort is preserved: sortBy:groupTotal sortOrder:desc
  5. Switch back to Bar view
  6. Verify sort is still preserved: sortBy:groupTotal sortOrder:desc
2026-03-18_08-11-09.mp4

Custom sort by reset for time based group on line view, but not bar or pie

  1. Navigate to the Reports page
  2. Select "Expenses"
  3. Open filters and set Group by to "Month"
  4. Verify the URL shows sortBy:groupmonth sortOrder:desc (table default)
  5. Click on the "Total" column header in the table to sort by total spend
  6. Verify the URL now shows sortBy:groupTotal sortOrder:desc
  7. Switch the view to "Line"
  8. URL should show sortBy:groupmonth sortOrder:asc (chronological)
  9. Verify the chart displays months chronologically from left to right (earliest to latest)
  10. Switch back to table view
  11. manually set the sort by to group total by clicking on the total column
  12. Switch to bar view
  13. Verify the bar chart display months with descending totals from left to right
  14. Switch to pie view and back to bar
  15. verify the ordering remains the same as before
2026-03-20_07-51-08.mp4
  • Verify that no errors appear in the JS console

Offline tests

N/A - This change only affects the default search query string construction. Sorting is handled server-side.

QA Steps

Same as tests

  • 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 it to be fixed)
  • I followed proper code patterns (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 shown in the product is localized by adding it to src/languages/* files and using the translation method
      • If any non-english text was added/modified, I used JaimeGPT to get English > Spanish translation. I then posted it in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:
    • I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
    • 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)
    • I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
    • I verified the JSDocs style guidelines (in STYLE.md) were followed
  • 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)
  • I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
  • I verified any variables that can be defined as constants (ie. in CONST.ts or at the top of the file that uses the constant) are defined as such
  • I verified that if a function's arguments changed that all usages have also been updated correctly
  • 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 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.
  • If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
  • 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

The changes are platform independent, so I only tested on Mac Chrome.

Android: Native

N/A - No UI changes, only default search query parameter change

Android: mWeb Chrome

N/A - No UI changes, only default search query parameter change

iOS: Native

N/A - No UI changes, only default search query parameter change

iOS: mWeb Safari

N/A - No UI changes, only default search query parameter change

MacOS: Chrome / Safari
SearchOrder2026-03-06_13-07-08.mp4

@neil-marcellini
Copy link
Copy Markdown
Contributor

@MelvinBot please test this add add screenshots for Chrome to the PR description

@MelvinBot
Copy link
Copy Markdown
Contributor Author

I tested this PR in Chrome and updated the PR description with screenshots in the MacOS: Chrome / Safari section. Here's what was verified:

Test results — all passing:

  1. Top categories (bar view): URL correctly contains sortBy:groupTotal sortOrder:desc — no longer using alphabetical sort
  2. Top categories (table view): After switching to table view, the sortBy:groupTotal sortOrder:desc parameters are preserved
  3. Top merchants (pie view): URL correctly contains sortBy:groupTotal sortOrder:desc
  4. Top merchants (table view): After switching to table view, the sortBy:groupTotal sortOrder:desc parameters are preserved

The createTopSearchMenuItem function now uses CONST.SEARCH.TABLE_COLUMNS.GROUP_TOTAL and CONST.SEARCH.SORT_ORDER.DESC as defaults, which generates the correct query parameters for both insight types. No console errors related to the change were observed.

@neil-marcellini
Copy link
Copy Markdown
Contributor

@MelvinBot you need to create some example expenses from the last month so that the insights tabs populate and data will be returned. The expenses should be from multiple categories and merchants. Pls re-test.

@MelvinBot
Copy link
Copy Markdown
Contributor Author

I ran out of time before I could finish helping you. This usually means the task was too complex or I got stuck exploring. Please try again with a more specific request or post in the #melvinbot-ai.

Run details: https://github.com/Expensify/Expensify/actions/runs/22773896227

buildFilterQueryWithSortDefaults(
updatedFilterFormValues,
{view: searchAdvancedFiltersForm.view, groupBy: searchAdvancedFiltersForm.groupBy},
{groupBy: searchAdvancedFiltersForm.groupBy},
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.

View is no longer needed in the previous state passed to this function, since it doesn't affect whether the sort order should be changed anymore.

@neil-marcellini neil-marcellini marked this pull request as ready for review March 6, 2026 21:44
@neil-marcellini neil-marcellini requested a review from a team as a code owner March 6, 2026 21:44
@melvin-bot melvin-bot bot requested review from jayeshmangwani and removed request for a team March 6, 2026 21:44
@melvin-bot
Copy link
Copy Markdown

melvin-bot bot commented Mar 6, 2026

@jayeshmangwani 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 JmillsExpensify and removed request for a team March 6, 2026 21:45
Copy link
Copy Markdown

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

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: 1627a2f7d9

ℹ️ 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".

@JmillsExpensify
Copy link
Copy Markdown
Contributor

@trjExpensify did you want to review this one?

@MelvinBot MelvinBot requested a review from a team as a code owner March 10, 2026 17:41
@melvin-bot melvin-bot bot requested review from huult and neil-marcellini and removed request for a team March 10, 2026 17:41
@melvin-bot
Copy link
Copy Markdown

melvin-bot bot commented Mar 10, 2026

@huult @neil-marcellini One of you needs to 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]

@MelvinBot
Copy link
Copy Markdown
Contributor Author

Fixed the sort order reset on view change.

What changed:

shouldResetSort now also triggers when the view changes (e.g. table → bar), not just when groupBy changes. This allows the parser to re-derive the correct default sort order for the new view mode.

When switching from table (which may have sortOrder:desc) to a chart view, the sort is now reset so the parser applies the natural default (ascending for category/merchant groupBys, ascending for time-based groupBys in chart views).

Files changed:

  • src/libs/SearchQueryUtils.tsshouldResetSort and buildFilterQueryWithSortDefaults now handle view changes
  • src/components/Search/SearchPageHeader/useSearchFiltersBar.tsx — passes current view to previousState
  • src/pages/Search/AdvancedSearchFilters.tsx — passes current view to previousState
  • tests/unit/Search/SearchQueryUtilsTest.ts — updated existing tests and added new view-change test cases

All 118 SearchQueryUtils tests and 243 SearchUIUtils tests pass.

@jayeshmangwani
Copy link
Copy Markdown
Contributor

@MelvinBot, the latest change seems to have affected the original issue we were fixing. In Top Categories / Top Merchants, when switching to the table view, the list is now sorted ascending by name instead of descending by total spend, which was the expected behavior.

@MelvinBot
Copy link
Copy Markdown
Contributor Author

Fixed. The previous change was too aggressive — it reset the sort on any view change, including switching TO table view, which caused Top Categories / Top Merchants to lose their groupTotal desc ordering.

What changed:

shouldResetSort now only resets sort when switching away from table view (to bar/line/pie), not when switching to table view. This means:

Transition Sort behavior
table → bar/line/pie Reset — parser derives correct ascending default for charts
bar/line/pie → table Preserve — keeps current sort (e.g., groupTotal desc for Top Categories)
Same view Preserve

All 118 SearchQueryUtils + 243 SearchUIUtils tests pass.

@jayeshmangwani
Copy link
Copy Markdown
Contributor

@MelvinBot PR still has an issue in some cases. When switching the "Top merchants" view from TableBarTable, the order appears incorrect on the second switch.

changing-view.mov

@MelvinBot
Copy link
Copy Markdown
Contributor Author

Pushed a fix for the Table → Bar → Table sort issue.

Root cause: When switching views (e.g. Table → Bar), buildFilterQueryWithSortDefaults was doing a full parser reset — dropping both sortBy and sortOrder. For "Top X" insights that use sortBy:groupTotal, this meant the parser re-derived sortBy to the groupBy's default (e.g. groupMerchant), permanently losing the custom sort column. When switching back to Table, the preserved sort was the wrong one.

Fix: View changes now only flip sortOrder (asc for charts, desc for tables) while preserving sortBy. Full parser reset is reserved for groupBy changes only where both sortBy and sortOrder need re-derivation.

The flow now works correctly:

  1. Table: sortBy:groupTotal sortOrder:desc
  2. → Bar: sortBy:groupTotal sortOrder:asc ✅ (sortBy preserved, sortOrder flipped)
  3. → Table: sortBy:groupTotal sortOrder:desc ✅ (sortBy preserved, sortOrder flipped back)

shouldResetSort was simplified to only check groupBy changes, since view-change handling is now a separate code path with different behavior (adjust sortOrder only vs. full reset).

@MelvinBot
Copy link
Copy Markdown
Contributor Author

Fixed the failing Prettier check: ran Prettier on src/libs/SearchQueryUtils.ts to collapse the shouldResetSort function signature onto a single line, matching Prettier's formatting expectations.

@jayeshmangwani
Copy link
Copy Markdown
Contributor

@codex review

Copy link
Copy Markdown

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

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: b96cc0c860

ℹ️ 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".

// target view. Charts display ascending (e.g. chronological / smallest
// first), tables display descending (e.g. most recent / largest first).
if (viewChanged) {
const sortOrder = effectiveNewView === CONST.SEARCH.VIEW.TABLE ? CONST.SEARCH.SORT_ORDER.DESC : CONST.SEARCH.SORT_ORDER.ASC;
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Avoid forcing sort order on every view switch

The new view-change branch hard-codes sortOrder to desc for table and asc for charts, which overrides the group-specific ordering rules and reorders results when users only change presentation. In GROUP_BY_DEFAULT_SORT_ORDER (src/libs/SearchParser/searchParser.peggy), several grouped searches have non-view-based defaults (e.g., category/merchant are asc, withdrawal-id is desc), but this line now flips them on view toggles (for example, groupBy:category becomes reverse alphabetical after bar → table, and groupBy:withdrawal-id becomes ascending after table → bar).

Useful? React with 👍 / 👎.

neil-marcellini and others added 5 commits March 20, 2026 08:43
Line charts need chronological (ascending) order to be readable
left-to-right. Bar and pie charts can display data in any order,
so users can keep their preferred sort (e.g., top spending months
first) when switching to those views.

Sort is now only reset when:
- Switching TO line view with time-based groupBy
- Switching FROM line view to table with time-based groupBy

Made-with: Cursor
Merged related tests to reduce redundancy:
- Combined non-time groupBy view switch tests (bar↔table, pie→table)
- Combined line view tests (default and custom sortBy scenarios)
- Combined bar view tests (default and custom sortBy scenarios)
- Consolidated shouldResetSortForViewChange tests by grouping line vs bar/pie

Reduced from 146 to 140 tests while maintaining full coverage.

Made-with: Cursor
For time-based groupBys (month/week/year/quarter), sort now resets when
switching to either line OR table view:
- Line needs chronological asc order
- Table needs its default desc order (most recent first)

This fixes the issue where Table → Line → Bar → Table would leave
the table stuck on asc instead of returning to desc.

Sort is only preserved when switching TO bar/pie views, which can
display data in any order.

Made-with: Cursor
Co-authored-by: Neil Marcellini <neil-marcellini@users.noreply.github.com>
@neil-marcellini neil-marcellini force-pushed the claude-fixTopInsightSearchSortOrder branch from 589d7a3 to fdc48f3 Compare March 20, 2026 15:43
@MelvinBot
Copy link
Copy Markdown
Contributor Author

The spellcheck failure has been fixed (added groupweek to the cspell dictionary in the previous commit).

The remaining failing checks (build (Debug, true) and build (Expensify Dev, Debug, true)) are unrelated to this PR — they're caused by a patch-package conflict for @react-native/gradle-plugin (patch made for v0.81.4 but v0.83.1 is installed). This same failure is occurring on main branch builds as well.

All other checks (ESLint, typecheck, tests, perf-tests, spellcheck, Prettier, Storybook) are passing.

@MelvinBot
Copy link
Copy Markdown
Contributor Author

The failing build checks (build (Debug, true) and build (Expensify Dev, Debug, true)) are unrelated to this PR.

Analysis: The failure is caused by a patch-package conflict for @react-native/gradle-plugin — the patch was made for version 0.81.4 but the installed version is 0.83.1. This is a pre-existing infrastructure issue.

Evidence:

  • This PR only changes search/sorting logic files (SearchQueryUtils.ts, SearchUIUtils.ts, useSearchTypeMenu.tsx, etc.) — no dependency or patch changes
  • The same Build and deploy apps for testing workflow is also failing on main (runs 23349522712 and 23349187430 both failed recently)

@MelvinBot
Copy link
Copy Markdown
Contributor Author

I have failed to help you. I let you down and for that I am sorry. Please try again later. This may be due to a Claude outage (check here).

Failure details: https://github.com/Expensify/Expensify/actions/runs/23351617821

@MelvinBot
Copy link
Copy Markdown
Contributor Author

The two failing checks are unrelated to this PR's code changes — they are CI infrastructure failures:

  1. build (Debug, true): Android build failed because the CMake process couldn't start (/usr/local/lib/android/sdk/cmake/3.30.5/bin/cmake). This is a CI runner toolchain issue, not a code issue.

  2. test (job 2): Failed during job setup — GitHub Actions timed out downloading action dependencies (actions/github-script). The tests never ran.

Evidence: This PR only modifies TypeScript files related to search sorting logic. Neither failure is in code paths touched by this PR.

Recommendation: Re-run the failed checks — these should pass on retry.

@MelvinBot
Copy link
Copy Markdown
Contributor Author

The two failing checks are unrelated to this PR's changes:

  1. build (Debug, true) — Android build failed on buildHermesC task with: A problem occurred starting process 'command '/usr/local/lib/android/sdk/cmake/3.30.5/bin/cmake'. This is a CI infrastructure/build environment issue (cmake not starting), not related to the search sorting logic in this PR.

  2. test (job 2) — Failed during job setup because GitHub Actions (actions/github-script and codecov/codecov-action) couldn't be downloaded due to network timeouts (HttpClient.Timeout of 100 seconds elapsing). No tests actually ran — this is a transient CI network issue.

Recommendation: Re-run these two failed jobs. The failures should resolve on retry since they're caused by transient infrastructure issues.

@MelvinBot
Copy link
Copy Markdown
Contributor Author

I have failed to help you. I let you down and for that I am sorry. Please try again later. This may be due to a Claude outage (check here).

Failure details: https://github.com/Expensify/Expensify/actions/runs/23352663005

Copy link
Copy Markdown
Contributor

@mateuuszzzzz mateuuszzzzz left a comment

Choose a reason for hiding this comment

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

Great work on this one, it's a bit tricky to get everything right 😅

@MelvinBot
Copy link
Copy Markdown
Contributor Author

Fixed the failing spellcheck: removed two accidentally committed investigation note files (errorTheory.md and NeilInvestigation.md) that contained words not in the spellcheck dictionary.

Resolve conflict in src/pages/Search/SearchTypeMenu.tsx by keeping
the singleExecution hook from main while preserving the additional
sortBy/sortOrder/type params passed to useSearchTypeMenuSections.

Made-with: Cursor
Addresses reviewer NAB feedback by extracting the repeated
GENERIC_SEARCH_KEYS sort-matching condition into a shared utility
function in SearchUIUtils. Used in useSearchTypeMenuSections,
useSearchTypeMenu, and Search/index.

Made-with: Cursor
@neil-marcellini neil-marcellini force-pushed the claude-fixTopInsightSearchSortOrder branch from 33bcc37 to 6c122ac Compare March 23, 2026 13:59
@MelvinBot
Copy link
Copy Markdown
Contributor Author

The checks are currently all passing or still in progress. The earlier failures were:

  1. Spell check — caused by investigation files (errorTheory.md, NeilInvestigation.md) that have since been removed
  2. Android build — a patch-package failure for @react-native/gradle-plugin (patch was for v0.81.4 but v0.83.1 is installed), which is unrelated to this PR's changes and appears to have been resolved in the latest run

No fix needed from me at this time. The latest check suite (all triggered at 13:59 UTC) shows all completed checks as success, with Jest, TypeScript, and Perf tests still running.

@puneetlath
Copy link
Copy Markdown
Contributor

Looks great to me. Love the comments and the tests. Makes everything very clear.

@puneetlath puneetlath merged commit 52e721b into main Mar 23, 2026
35 checks passed
@puneetlath puneetlath deleted the claude-fixTopInsightSearchSortOrder branch March 23, 2026 17:44
@github-actions
Copy link
Copy Markdown
Contributor

🚧 @puneetlath 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 production by https://github.com/Julesssss in version: 9.3.43-3 🚀

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

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants