From 9e47633049130869c1fe392479c1eaadf8e93fda Mon Sep 17 00:00:00 2001 From: Kriys94 Date: Wed, 22 Jul 2026 11:28:39 +0200 Subject: [PATCH 1/2] fix(assets-controller): increase stale and g time for accounts api request --- packages/assets-controller/CHANGELOG.md | 1 + .../src/data-sources/AccountsApiDataSource.test.ts | 4 ++-- .../src/data-sources/AccountsApiDataSource.ts | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/assets-controller/CHANGELOG.md b/packages/assets-controller/CHANGELOG.md index d1175291c6a..fc208221814 100644 --- a/packages/assets-controller/CHANGELOG.md +++ b/packages/assets-controller/CHANGELOG.md @@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed +- `AccountsApiDataSource` `forceUpdate` balance fetches now use `staleTime`/`gcTime` of `100`ms (previously `0`/`0`) so bursts of near-simultaneous forced refreshes are de-duplicated by TanStack Query into a single Accounts API request instead of one request per trigger ([#9591](https://github.com/MetaMask/core/pull/9591)) - `TokenDataSource` balance-only metadata heals no longer apply EVM occurrence / non-EVM Blockaid spam filtering (or delete those holdings from `assetsBalance`); filtering still applies to newly `detectedAssets`. Fixes missing `assetsInfo` for already-tracked balances after [#9547](https://github.com/MetaMask/core/pull/9547) ([#9584](https://github.com/MetaMask/core/pull/9584)) ## [11.1.0] diff --git a/packages/assets-controller/src/data-sources/AccountsApiDataSource.test.ts b/packages/assets-controller/src/data-sources/AccountsApiDataSource.test.ts index f01829bf159..120b29a9100 100644 --- a/packages/assets-controller/src/data-sources/AccountsApiDataSource.test.ts +++ b/packages/assets-controller/src/data-sources/AccountsApiDataSource.test.ts @@ -377,7 +377,7 @@ describe('AccountsApiDataSource', () => { controller.destroy(); }); - it('fetch bypasses TanStack cache when forceUpdate is true', async () => { + it('uses a short-lived TanStack cache window when forceUpdate is true', async () => { const { controller, apiClient } = await setupController(); await controller.fetch(createDataRequest({ forceUpdate: true })); @@ -385,7 +385,7 @@ describe('AccountsApiDataSource', () => { expect(apiClient.accounts.fetchV5MultiAccountBalances).toHaveBeenCalledWith( [`eip155:1:${MOCK_ADDRESS}`], undefined, - { staleTime: 0, gcTime: 0 }, + { staleTime: 100, gcTime: 100 }, ); controller.destroy(); diff --git a/packages/assets-controller/src/data-sources/AccountsApiDataSource.ts b/packages/assets-controller/src/data-sources/AccountsApiDataSource.ts index 6ac6167b0e4..9ed297f39f6 100644 --- a/packages/assets-controller/src/data-sources/AccountsApiDataSource.ts +++ b/packages/assets-controller/src/data-sources/AccountsApiDataSource.ts @@ -376,7 +376,7 @@ export class AccountsApiDataSource extends AbstractDataSource< } const fetchOptions = request.forceUpdate - ? { staleTime: 0, gcTime: 0 } + ? { staleTime: 100, gcTime: 100 } : undefined; // Feature-flagged: v6 endpoint with a fallback to legacy v5. The flag is From 16592967deb28eaf68954fb68b866e3b3b80e5af Mon Sep 17 00:00:00 2001 From: Kriys94 Date: Thu, 23 Jul 2026 10:40:51 +0200 Subject: [PATCH 2/2] update changelog --- packages/assets-controller/CHANGELOG.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/assets-controller/CHANGELOG.md b/packages/assets-controller/CHANGELOG.md index fc208221814..8244f1a007a 100644 --- a/packages/assets-controller/CHANGELOG.md +++ b/packages/assets-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed + +- `AccountsApiDataSource` `forceUpdate` balance fetches now use `staleTime`/`gcTime` of `100`ms (previously `0`/`0`) so bursts of near-simultaneous forced refreshes are de-duplicated by TanStack Query into a single Accounts API request instead of one request per trigger ([#9591](https://github.com/MetaMask/core/pull/9591)) + ## [11.1.1] ### Changed @@ -17,7 +21,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed -- `AccountsApiDataSource` `forceUpdate` balance fetches now use `staleTime`/`gcTime` of `100`ms (previously `0`/`0`) so bursts of near-simultaneous forced refreshes are de-duplicated by TanStack Query into a single Accounts API request instead of one request per trigger ([#9591](https://github.com/MetaMask/core/pull/9591)) - `TokenDataSource` balance-only metadata heals no longer apply EVM occurrence / non-EVM Blockaid spam filtering (or delete those holdings from `assetsBalance`); filtering still applies to newly `detectedAssets`. Fixes missing `assetsInfo` for already-tracked balances after [#9547](https://github.com/MetaMask/core/pull/9547) ([#9584](https://github.com/MetaMask/core/pull/9584)) ## [11.1.0]