From a7eccf3cf463b69c8a1d1fb44895ea8960a2db68 Mon Sep 17 00:00:00 2001 From: Wonsuk Choi Date: Thu, 28 May 2026 11:11:50 +0900 Subject: [PATCH] fix(query-devtools/utils): make 'last updated' sort return 0 for queries with equal 'dataUpdatedAt' to follow the standard comparator contract --- .changeset/devtools-date-sort-equal-timestamps.md | 5 +++++ packages/query-devtools/src/__tests__/utils.test.ts | 7 +++++++ packages/query-devtools/src/utils.tsx | 6 ++++-- 3 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 .changeset/devtools-date-sort-equal-timestamps.md diff --git a/.changeset/devtools-date-sort-equal-timestamps.md b/.changeset/devtools-date-sort-equal-timestamps.md new file mode 100644 index 0000000000..226fbbc7bc --- /dev/null +++ b/.changeset/devtools-date-sort-equal-timestamps.md @@ -0,0 +1,5 @@ +--- +'@tanstack/query-devtools': patch +--- + +fix(query-devtools/utils): make 'last updated' sort return 0 for queries with equal 'dataUpdatedAt' to follow the standard comparator contract diff --git a/packages/query-devtools/src/__tests__/utils.test.ts b/packages/query-devtools/src/__tests__/utils.test.ts index 511553e2bb..688a87654e 100644 --- a/packages/query-devtools/src/__tests__/utils.test.ts +++ b/packages/query-devtools/src/__tests__/utils.test.ts @@ -1076,6 +1076,13 @@ describe('Utils tests', () => { expect(dateSort(older, newer)).toBe(1) expect(dateSort(newer, older)).toBe(-1) }) + + it('should return 0 when both queries share the same "dataUpdatedAt"', () => { + const a = buildQuery(['a'], { dataUpdatedAt: 100 }) + const b = buildQuery(['b'], { dataUpdatedAt: 100 }) + + expect(dateSort(a, b)).toBe(0) + }) }) describe("'query hash'", () => { diff --git a/packages/query-devtools/src/utils.tsx b/packages/query-devtools/src/utils.tsx index 5306f2cf5f..4a23b15757 100644 --- a/packages/query-devtools/src/utils.tsx +++ b/packages/query-devtools/src/utils.tsx @@ -101,8 +101,10 @@ const getStatusRank = (q: Query) => const queryHashSort: SortFn = (a, b) => a.queryHash.localeCompare(b.queryHash) -const dateSort: SortFn = (a, b) => - a.state.dataUpdatedAt < b.state.dataUpdatedAt ? 1 : -1 +const dateSort: SortFn = (a, b) => { + const diff = b.state.dataUpdatedAt - a.state.dataUpdatedAt + return diff < 0 ? -1 : diff > 0 ? 1 : 0 +} const statusAndDateSort: SortFn = (a, b) => { if (getStatusRank(a) === getStatusRank(b)) {