From 96017e3ac38ceec726d459a407d923692685bec1 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Fri, 19 Dec 2025 13:16:40 +0100 Subject: [PATCH 1/3] Replace deprecated error reporting service calls with `Messenger.captureException` --- packages/eth-json-rpc-middleware/package.json | 1 - .../src/GasFeeController.test.ts | 10 ++---- .../multichain-account-service/package.json | 1 - .../src/MultichainAccountGroup.test.ts | 14 ++++----- .../src/MultichainAccountGroup.ts | 5 +-- .../src/MultichainAccountService.test.ts | 12 +++---- .../src/MultichainAccountService.ts | 5 +-- .../src/MultichainAccountWallet.test.ts | 25 +++++++-------- .../src/MultichainAccountWallet.ts | 20 +++--------- .../src/providers/SnapAccountProvider.test.ts | 31 +++++-------------- .../src/providers/SnapAccountProvider.ts | 11 ++----- .../src/tests/messenger.ts | 2 +- .../multichain-account-service/src/types.ts | 4 +-- packages/network-controller/package.json | 1 - .../src/NetworkController.ts | 9 ++---- .../tests/NetworkController.test.ts | 20 ++++-------- packages/network-controller/tests/helpers.ts | 25 +++------------ yarn.lock | 5 +-- 18 files changed, 57 insertions(+), 144 deletions(-) diff --git a/packages/eth-json-rpc-middleware/package.json b/packages/eth-json-rpc-middleware/package.json index 5623ae818f9..a6e5e3d8f65 100644 --- a/packages/eth-json-rpc-middleware/package.json +++ b/packages/eth-json-rpc-middleware/package.json @@ -69,7 +69,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^3.4.4", - "@metamask/error-reporting-service": "^3.0.1", "@metamask/network-controller": "^27.1.0", "@ts-bridge/cli": "^0.6.4", "@types/deep-freeze-strict": "^1.1.0", diff --git a/packages/gas-fee-controller/src/GasFeeController.test.ts b/packages/gas-fee-controller/src/GasFeeController.test.ts index 2ee0746a983..1d4f5e2e2ea 100644 --- a/packages/gas-fee-controller/src/GasFeeController.test.ts +++ b/packages/gas-fee-controller/src/GasFeeController.test.ts @@ -67,10 +67,7 @@ const getRootMessenger = (): RootMessenger => { MessengerActions, MessengerEvents >({ namespace: MOCK_ANY_NAMESPACE }); - rootMessenger.registerActionHandler( - 'ErrorReportingService:captureException', - jest.fn(), - ); + return rootMessenger; }; @@ -93,10 +90,7 @@ const setupNetworkController = async ({ >({ namespace: 'NetworkController', parent: rootMessenger, - }); - rootMessenger.delegate({ - messenger: networkControllerMessenger, - actions: ['ErrorReportingService:captureException'], + captureException: jest.fn(), }); const infuraProjectId = '123'; diff --git a/packages/multichain-account-service/package.json b/packages/multichain-account-service/package.json index a1b61c979bd..2caaff27fcf 100644 --- a/packages/multichain-account-service/package.json +++ b/packages/multichain-account-service/package.json @@ -51,7 +51,6 @@ "@ethereumjs/util": "^9.1.0", "@metamask/accounts-controller": "^35.0.0", "@metamask/base-controller": "^9.0.0", - "@metamask/error-reporting-service": "^3.0.1", "@metamask/eth-snap-keyring": "^18.0.0", "@metamask/key-tree": "^10.1.1", "@metamask/keyring-api": "^21.0.0", diff --git a/packages/multichain-account-service/src/MultichainAccountGroup.test.ts b/packages/multichain-account-service/src/MultichainAccountGroup.test.ts index a41e791b809..4216ef94b34 100644 --- a/packages/multichain-account-service/src/MultichainAccountGroup.test.ts +++ b/packages/multichain-account-service/src/MultichainAccountGroup.test.ts @@ -50,10 +50,6 @@ function setup({ }); const serviceMessenger = getMultichainAccountServiceMessenger(messenger); - messenger.registerActionHandler( - 'ErrorReportingService:captureException', - jest.fn(), - ); const wallet = new MultichainAccountWallet>({ entropySource: MOCK_WALLET_1_ENTROPY_SOURCE, @@ -228,13 +224,15 @@ describe('MultichainAccount', () => { }); const providerError = new Error('Unable to create accounts'); providers[1].createAccounts.mockRejectedValueOnce(providerError); - const callSpy = jest.spyOn(messenger, 'call'); + const captureExceptionSpy = jest.spyOn(messenger, 'captureException'); await group.alignAccounts(); - expect(callSpy).toHaveBeenCalledWith( - 'ErrorReportingService:captureException', + expect(captureExceptionSpy).toHaveBeenCalledWith( new Error('Unable to align accounts with provider "Mocked Provider"'), ); - expect(callSpy.mock.lastCall[1]).toHaveProperty('cause', providerError); + expect(captureExceptionSpy.mock.lastCall[0]).toHaveProperty( + 'cause', + providerError, + ); }); }); }); diff --git a/packages/multichain-account-service/src/MultichainAccountGroup.ts b/packages/multichain-account-service/src/MultichainAccountGroup.ts index 7440c366935..7997dba7da8 100644 --- a/packages/multichain-account-service/src/MultichainAccountGroup.ts +++ b/packages/multichain-account-service/src/MultichainAccountGroup.ts @@ -265,10 +265,7 @@ export class MultichainAccountGroup< provider: provider.getName(), }, ); - this.#messenger.call( - 'ErrorReportingService:captureException', - sentryError, - ); + this.#messenger.captureException?.(sentryError); throw error; } }), diff --git a/packages/multichain-account-service/src/MultichainAccountService.test.ts b/packages/multichain-account-service/src/MultichainAccountService.test.ts index 26b356c1c57..307a2a5922f 100644 --- a/packages/multichain-account-service/src/MultichainAccountService.test.ts +++ b/packages/multichain-account-service/src/MultichainAccountService.test.ts @@ -1041,6 +1041,8 @@ describe('MultichainAccountService', () => { it('does not throw if any providers is throwing', async () => { const rootMessenger = getRootMessenger(); + const captureExceptionSpy = jest.spyOn(rootMessenger, 'captureException'); + const { service, mocks } = await setup({ rootMessenger, accounts: [MOCK_HD_ACCOUNT_1], @@ -1049,19 +1051,13 @@ describe('MultichainAccountService', () => { const providerError = new Error('Unable to resync accounts'); mocks.SolAccountProvider.resyncAccounts.mockRejectedValue(providerError); - const mockCaptureException = jest.fn(); - rootMessenger.registerActionHandler( - 'ErrorReportingService:captureException', - mockCaptureException, - ); - await service.resyncAccounts(); // Should not throw. expect(mocks.EvmAccountProvider.resyncAccounts).toHaveBeenCalled(); expect(mocks.SolAccountProvider.resyncAccounts).toHaveBeenCalled(); - expect(mockCaptureException).toHaveBeenCalled(); - expect(mockCaptureException.mock.lastCall[0]).toHaveProperty( + expect(captureExceptionSpy).toHaveBeenCalled(); + expect(captureExceptionSpy.mock.lastCall[0]).toHaveProperty( 'cause', providerError, ); diff --git a/packages/multichain-account-service/src/MultichainAccountService.ts b/packages/multichain-account-service/src/MultichainAccountService.ts index bf9034fc89b..6b46735ea8f 100644 --- a/packages/multichain-account-service/src/MultichainAccountService.ts +++ b/packages/multichain-account-service/src/MultichainAccountService.ts @@ -254,10 +254,7 @@ export class MultichainAccountService { const sentryError = createSentryError(errorMessage, error as Error, { provider: provider.getName(), }); - this.#messenger.call( - 'ErrorReportingService:captureException', - sentryError, - ); + this.#messenger.captureException?.(sentryError); } }), ); diff --git a/packages/multichain-account-service/src/MultichainAccountWallet.test.ts b/packages/multichain-account-service/src/MultichainAccountWallet.test.ts index 5de15bb1cb3..9d714c54890 100644 --- a/packages/multichain-account-service/src/MultichainAccountWallet.test.ts +++ b/packages/multichain-account-service/src/MultichainAccountWallet.test.ts @@ -62,11 +62,6 @@ function setup({ const serviceMessenger = getMultichainAccountServiceMessenger(messenger); - messenger.registerActionHandler( - 'ErrorReportingService:captureException', - jest.fn(), - ); - const wallet = new MultichainAccountWallet>({ entropySource, providers, @@ -373,17 +368,19 @@ describe('MultichainAccountWallet', () => { const [provider] = providers; const providerError = new Error('Unable to create accounts'); provider.createAccounts.mockRejectedValueOnce(providerError); - const callSpy = jest.spyOn(messenger, 'call'); + const captureExceptionSpy = jest.spyOn(messenger, 'captureException'); await expect( wallet.createMultichainAccountGroup(groupIndex), ).rejects.toThrow( 'Unable to create multichain account group for index: 1', ); - expect(callSpy).toHaveBeenCalledWith( - 'ErrorReportingService:captureException', + expect(captureExceptionSpy).toHaveBeenCalledWith( new Error('Unable to create account with provider "Mocked Provider 0"'), ); - expect(callSpy.mock.lastCall[1]).toHaveProperty('cause', providerError); + expect(captureExceptionSpy.mock.lastCall[0]).toHaveProperty( + 'cause', + providerError, + ); }); it('aggregates non-EVM failures when waiting for all providers', async () => { @@ -732,15 +729,17 @@ describe('MultichainAccountWallet', () => { }); const providerError = new Error('Unable to discover accounts'); providers[0].discoverAccounts.mockRejectedValueOnce(providerError); - const callSpy = jest.spyOn(messenger, 'call'); + const captureExceptionSpy = jest.spyOn(messenger, 'captureException'); // Ensure the other provider stops immediately to finish the Promise.all providers[1].discoverAccounts.mockResolvedValueOnce([]); await wallet.discoverAccounts(); - expect(callSpy).toHaveBeenCalledWith( - 'ErrorReportingService:captureException', + expect(captureExceptionSpy).toHaveBeenCalledWith( new Error('Unable to discover accounts'), ); - expect(callSpy.mock.lastCall[1]).toHaveProperty('cause', providerError); + expect(captureExceptionSpy.mock.lastCall[0]).toHaveProperty( + 'cause', + providerError, + ); }); }); }); diff --git a/packages/multichain-account-service/src/MultichainAccountWallet.ts b/packages/multichain-account-service/src/MultichainAccountWallet.ts index af5a4dffb58..f725166327e 100644 --- a/packages/multichain-account-service/src/MultichainAccountWallet.ts +++ b/packages/multichain-account-service/src/MultichainAccountWallet.ts @@ -259,10 +259,7 @@ export class MultichainAccountWallet< provider: provider.getName(), }, ); - this.#messenger.call( - 'ErrorReportingService:captureException', - sentryError, - ); + this.#messenger.captureException?.(sentryError); throw error; }), ); @@ -301,10 +298,7 @@ export class MultichainAccountWallet< provider: provider.getName(), }, ); - this.#messenger.call( - 'ErrorReportingService:captureException', - sentryError, - ); + this.#messenger.captureException?.(sentryError); }); }); } @@ -448,10 +442,7 @@ export class MultichainAccountWallet< provider: evmProvider.getName(), }, ); - this.#messenger.call( - 'ErrorReportingService:captureException', - sentryError, - ); + this.#messenger.captureException?.(sentryError); throw new Error(errorMessage); } @@ -624,10 +615,7 @@ export class MultichainAccountWallet< groupIndex: targetGroupIndex, }, ); - this.#messenger.call( - 'ErrorReportingService:captureException', - sentryError, - ); + this.#messenger.captureException?.(sentryError); break; } diff --git a/packages/multichain-account-service/src/providers/SnapAccountProvider.test.ts b/packages/multichain-account-service/src/providers/SnapAccountProvider.test.ts index 9ed396b872e..7cf7b5e9d09 100644 --- a/packages/multichain-account-service/src/providers/SnapAccountProvider.test.ts +++ b/packages/multichain-account-service/src/providers/SnapAccountProvider.test.ts @@ -608,23 +608,18 @@ describe('SnapAccountProvider', () => { it('creates new accounts if de-synced', async () => { const { provider, messenger } = setup(); + const captureExceptionSpy = jest.spyOn(messenger, 'captureException'); messenger.registerActionHandler( 'SnapController:handleRequest', jest.fn().mockResolvedValue([mockAccounts[0]].map(asKeyringAccount)), ); - const mockCaptureException = jest.fn(); - messenger.registerActionHandler( - 'ErrorReportingService:captureException', - mockCaptureException, - ); - const createAccountsSpy = jest.spyOn(provider, 'createAccounts'); await provider.resyncAccounts(mockAccounts); - expect(mockCaptureException).toHaveBeenCalledWith( + expect(captureExceptionSpy).toHaveBeenCalledWith( new Error( `Snap "${TEST_SNAP_ID}" has de-synced accounts, we'll attempt to re-sync them...`, ), @@ -639,21 +634,16 @@ describe('SnapAccountProvider', () => { it('reports an error if a Snap has more accounts than MetaMask', async () => { const { provider, messenger } = setup(); + const captureExceptionSpy = jest.spyOn(messenger, 'captureException'); messenger.registerActionHandler( 'SnapController:handleRequest', jest.fn().mockResolvedValue(mockAccounts.map(asKeyringAccount)), ); - const mockCaptureException = jest.fn(); - messenger.registerActionHandler( - 'ErrorReportingService:captureException', - mockCaptureException, - ); - await provider.resyncAccounts([mockAccounts[0]]); // Less accounts than the Snap - expect(mockCaptureException).toHaveBeenCalledWith( + expect(captureExceptionSpy).toHaveBeenCalledWith( new Error( `Snap "${TEST_SNAP_ID}" has de-synced accounts, Snap has more accounts than MetaMask!`, ), @@ -662,18 +652,13 @@ describe('SnapAccountProvider', () => { it('does not throw errors if any provider is not able to re-sync', async () => { const { provider, messenger } = setup(); + const captureExceptionSpy = jest.spyOn(messenger, 'captureException'); messenger.registerActionHandler( 'SnapController:handleRequest', jest.fn().mockResolvedValue([mockAccounts[0]].map(asKeyringAccount)), ); - const mockCaptureException = jest.fn(); - messenger.registerActionHandler( - 'ErrorReportingService:captureException', - mockCaptureException, - ); - const createAccountsSpy = jest.spyOn(provider, 'createAccounts'); const providerError = new Error('Unable to create accounts'); @@ -683,17 +668,17 @@ describe('SnapAccountProvider', () => { expect(createAccountsSpy).toHaveBeenCalled(); - expect(mockCaptureException).toHaveBeenNthCalledWith( + expect(captureExceptionSpy).toHaveBeenNthCalledWith( 1, new Error( `Snap "${TEST_SNAP_ID}" has de-synced accounts, we'll attempt to re-sync them...`, ), ); - expect(mockCaptureException).toHaveBeenNthCalledWith( + expect(captureExceptionSpy).toHaveBeenNthCalledWith( 2, new Error('Unable to re-sync account: 0'), ); - expect(mockCaptureException.mock.lastCall[0]).toHaveProperty( + expect(captureExceptionSpy.mock.lastCall[0]).toHaveProperty( 'cause', providerError, ); diff --git a/packages/multichain-account-service/src/providers/SnapAccountProvider.ts b/packages/multichain-account-service/src/providers/SnapAccountProvider.ts index 8ecc04ca6b6..b8a14343693 100644 --- a/packages/multichain-account-service/src/providers/SnapAccountProvider.ts +++ b/packages/multichain-account-service/src/providers/SnapAccountProvider.ts @@ -147,8 +147,7 @@ export abstract class SnapAccountProvider extends BaseBip44AccountProvider { // NOTE: This should never happen, but we want to report that kind of errors still // in case states are de-sync. if (localSnapAccounts.length < snapAccounts.size) { - this.messenger.call( - 'ErrorReportingService:captureException', + this.messenger.captureException?.( new Error( `Snap "${this.snapId}" has de-synced accounts, Snap has more accounts than MetaMask!`, ), @@ -163,8 +162,7 @@ export abstract class SnapAccountProvider extends BaseBip44AccountProvider { if (localSnapAccounts.length > snapAccounts.size) { // Accounts should never really be de-synced, so we want to log this to see how often this // happens, cause that means that something else is buggy elsewhere... - this.messenger.call( - 'ErrorReportingService:captureException', + this.messenger.captureException?.( new Error( `Snap "${this.snapId}" has de-synced accounts, we'll attempt to re-sync them...`, ), @@ -200,10 +198,7 @@ export abstract class SnapAccountProvider extends BaseBip44AccountProvider { groupIndex, }, ); - this.messenger.call( - 'ErrorReportingService:captureException', - sentryError, - ); + this.messenger.captureException?.(sentryError); } }), ); diff --git a/packages/multichain-account-service/src/tests/messenger.ts b/packages/multichain-account-service/src/tests/messenger.ts index 0999919de6a..64fb6f2abf5 100644 --- a/packages/multichain-account-service/src/tests/messenger.ts +++ b/packages/multichain-account-service/src/tests/messenger.ts @@ -27,6 +27,7 @@ export type RootMessenger = Messenger< export function getRootMessenger(): RootMessenger { return new Messenger({ namespace: MOCK_ANY_NAMESPACE, + captureException: jest.fn(), }); } @@ -54,7 +55,6 @@ export function getMultichainAccountServiceMessenger( 'AccountsController:getAccount', 'AccountsController:getAccountByAddress', 'AccountsController:listMultichainAccounts', - 'ErrorReportingService:captureException', 'SnapController:handleRequest', 'KeyringController:withKeyring', 'KeyringController:getState', diff --git a/packages/multichain-account-service/src/types.ts b/packages/multichain-account-service/src/types.ts index 6c498687fa5..72c97cb841e 100644 --- a/packages/multichain-account-service/src/types.ts +++ b/packages/multichain-account-service/src/types.ts @@ -12,7 +12,6 @@ import type { AccountsControllerListMultichainAccountsAction, } from '@metamask/accounts-controller'; import type { TraceCallback } from '@metamask/controller-utils'; -import type { ErrorReportingServiceCaptureExceptionAction } from '@metamask/error-reporting-service'; import type { KeyringAccount } from '@metamask/keyring-api'; import type { KeyringControllerAddNewKeyringAction, @@ -143,8 +142,7 @@ type AllowedActions = | KeyringControllerGetKeyringsByTypeAction | KeyringControllerAddNewKeyringAction | NetworkControllerGetNetworkClientByIdAction - | NetworkControllerFindNetworkClientIdByChainIdAction - | ErrorReportingServiceCaptureExceptionAction; + | NetworkControllerFindNetworkClientIdByChainIdAction; /** * All events published by other modules that {@link MultichainAccountService} diff --git a/packages/network-controller/package.json b/packages/network-controller/package.json index cf8500da4a9..5af6e55bb6b 100644 --- a/packages/network-controller/package.json +++ b/packages/network-controller/package.json @@ -50,7 +50,6 @@ "dependencies": { "@metamask/base-controller": "^9.0.0", "@metamask/controller-utils": "^11.17.0", - "@metamask/error-reporting-service": "^3.0.1", "@metamask/eth-block-tracker": "^15.0.0", "@metamask/eth-json-rpc-infura": "^10.3.0", "@metamask/eth-json-rpc-middleware": "^22.0.1", diff --git a/packages/network-controller/src/NetworkController.ts b/packages/network-controller/src/NetworkController.ts index f095a4fb65d..1652fa011a1 100644 --- a/packages/network-controller/src/NetworkController.ts +++ b/packages/network-controller/src/NetworkController.ts @@ -16,7 +16,6 @@ import { BUILT_IN_CUSTOM_NETWORKS_RPC, BUILT_IN_NETWORKS, } from '@metamask/controller-utils'; -import type { ErrorReportingServiceCaptureExceptionAction } from '@metamask/error-reporting-service'; import type { PollingBlockTrackerOptions } from '@metamask/eth-block-tracker'; import EthQuery from '@metamask/eth-query'; import type { Messenger } from '@metamask/messenger'; @@ -730,7 +729,7 @@ export type NetworkControllerActions = /** * All actions that {@link NetworkController} calls internally. */ -type AllowedActions = ErrorReportingServiceCaptureExceptionAction; +type AllowedActions = never; export type NetworkControllerMessenger = Messenger< typeof controllerName, @@ -1229,8 +1228,7 @@ function correctInitialState( firstNetworkConfiguration.rpcEndpoints[ firstNetworkConfiguration.defaultRpcEndpointIndex ].networkClientId; - messenger.call( - 'ErrorReportingService:captureException', + messenger.captureException?.( new Error( `\`selectedNetworkClientId\` '${state.selectedNetworkClientId}' does not refer to an RPC endpoint within a network configuration; correcting to '${newSelectedNetworkClientId}'`, ), @@ -1242,8 +1240,7 @@ function correctInitialState( for (const invalidNetworkClientId of invalidNetworkClientIdsWithMetadata) { delete newState.networksMetadata[invalidNetworkClientId]; } - messenger.call( - 'ErrorReportingService:captureException', + messenger.captureException?.( new Error( '`networksMetadata` had invalid network client IDs, which have been removed', ), diff --git a/packages/network-controller/tests/NetworkController.test.ts b/packages/network-controller/tests/NetworkController.test.ts index f585e7a806f..1937cfd9b8b 100644 --- a/packages/network-controller/tests/NetworkController.test.ts +++ b/packages/network-controller/tests/NetworkController.test.ts @@ -367,12 +367,8 @@ describe('NetworkController', () => { }); it('corrects an invalid selectedNetworkClientId to the default RPC endpoint of the first chain, logging this fact', () => { - const captureExceptionMock = jest.fn(); - const messenger = buildRootMessenger({ - actionHandlers: { - 'ErrorReportingService:captureException': captureExceptionMock, - }, - }); + const messenger = buildRootMessenger(); + const captureExceptionSpy = jest.spyOn(messenger, 'captureException'); const controllerMessenger = buildNetworkControllerMessenger(messenger); const controller = new NetworkController({ @@ -409,7 +405,7 @@ describe('NetworkController', () => { expect(controller.state.selectedNetworkClientId).toBe( 'BBBB-BBBB-BBBB-BBBB', ); - expect(captureExceptionMock).toHaveBeenCalledWith( + expect(captureExceptionSpy).toHaveBeenCalledWith( new Error( "`selectedNetworkClientId` 'nonexistent' does not refer to an RPC endpoint within a network configuration; correcting to 'BBBB-BBBB-BBBB-BBBB'", ), @@ -417,12 +413,8 @@ describe('NetworkController', () => { }); it('removes invalid network client IDs from networksMetadata, logging this fact', () => { - const captureExceptionMock = jest.fn(); - const messenger = buildRootMessenger({ - actionHandlers: { - 'ErrorReportingService:captureException': captureExceptionMock, - }, - }); + const messenger = buildRootMessenger(); + const captureExceptionSpy = jest.spyOn(messenger, 'captureException'); const controllerMessenger = buildNetworkControllerMessenger(messenger); const controller = new NetworkController({ @@ -472,7 +464,7 @@ describe('NetworkController', () => { expect(controller.state.networksMetadata).not.toHaveProperty( 'CCCC-CCCC-CCCC-CCCC', ); - expect(captureExceptionMock).toHaveBeenCalledWith( + expect(captureExceptionSpy).toHaveBeenCalledWith( new Error( '`networksMetadata` had invalid network client IDs, which have been removed', ), diff --git a/packages/network-controller/tests/helpers.ts b/packages/network-controller/tests/helpers.ts index 0b37727dd1e..039bc41c759 100644 --- a/packages/network-controller/tests/helpers.ts +++ b/packages/network-controller/tests/helpers.ts @@ -5,7 +5,6 @@ import { NetworksTicker, toHex, } from '@metamask/controller-utils'; -import type { ErrorReportingServiceCaptureExceptionAction } from '@metamask/error-reporting-service'; import type { InternalProvider } from '@metamask/eth-json-rpc-provider'; import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger'; import type { @@ -85,28 +84,15 @@ export const TESTNET = { * Build a root messenger that includes all events used by the network * controller. * - * @param options - Options. - * @param options.actionHandlers - Handlers for actions that are pre-registered - * on the messenger. * @returns The messenger. */ -export function buildRootMessenger({ - actionHandlers = {}, -}: { - actionHandlers?: { - 'ErrorReportingService:captureException'?: ErrorReportingServiceCaptureExceptionAction['handler']; - }; -} = {}): RootMessenger { +export function buildRootMessenger(): RootMessenger { const rootMessenger = new Messenger< MockAnyNamespace, MessengerActions, MessengerEvents - >({ namespace: MOCK_ANY_NAMESPACE }); - rootMessenger.registerActionHandler( - 'ErrorReportingService:captureException', - actionHandlers['ErrorReportingService:captureException'] ?? - ((error): void => console.error(error)), - ); + >({ namespace: MOCK_ANY_NAMESPACE, captureException: jest.fn() }); + return rootMessenger; } @@ -128,10 +114,7 @@ export function buildNetworkControllerMessenger( namespace: 'NetworkController', parent: rootMessenger, }); - rootMessenger.delegate({ - messenger: networkControllerMessenger, - actions: ['ErrorReportingService:captureException'], - }); + return networkControllerMessenger; } diff --git a/yarn.lock b/yarn.lock index b6dc7425ae3..47f5b44160a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3267,7 +3267,7 @@ __metadata: languageName: unknown linkType: soft -"@metamask/error-reporting-service@npm:^3.0.1, @metamask/error-reporting-service@workspace:packages/error-reporting-service": +"@metamask/error-reporting-service@workspace:packages/error-reporting-service": version: 0.0.0-use.local resolution: "@metamask/error-reporting-service@workspace:packages/error-reporting-service" dependencies: @@ -3416,7 +3416,6 @@ __metadata: resolution: "@metamask/eth-json-rpc-middleware@workspace:packages/eth-json-rpc-middleware" dependencies: "@metamask/auto-changelog": "npm:^3.4.4" - "@metamask/error-reporting-service": "npm:^3.0.1" "@metamask/eth-block-tracker": "npm:^15.0.0" "@metamask/eth-json-rpc-provider": "npm:^6.0.0" "@metamask/eth-sig-util": "npm:^8.2.0" @@ -4032,7 +4031,6 @@ __metadata: "@metamask/accounts-controller": "npm:^35.0.0" "@metamask/auto-changelog": "npm:^3.4.4" "@metamask/base-controller": "npm:^9.0.0" - "@metamask/error-reporting-service": "npm:^3.0.1" "@metamask/eth-hd-keyring": "npm:^13.0.0" "@metamask/eth-snap-keyring": "npm:^18.0.0" "@metamask/key-tree": "npm:^10.1.1" @@ -4189,7 +4187,6 @@ __metadata: "@metamask/auto-changelog": "npm:^3.4.4" "@metamask/base-controller": "npm:^9.0.0" "@metamask/controller-utils": "npm:^11.17.0" - "@metamask/error-reporting-service": "npm:^3.0.1" "@metamask/eth-block-tracker": "npm:^15.0.0" "@metamask/eth-json-rpc-infura": "npm:^10.3.0" "@metamask/eth-json-rpc-middleware": "npm:^22.0.1" From eb09bdb7d922960ff4acfcb60f1eff4823a7dedd Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Fri, 19 Dec 2025 13:24:53 +0100 Subject: [PATCH 2/3] Update changelogs --- packages/multichain-account-service/CHANGELOG.md | 5 +++++ packages/network-controller/CHANGELOG.md | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/packages/multichain-account-service/CHANGELOG.md b/packages/multichain-account-service/CHANGELOG.md index c75b0f8c8f2..672b88270cc 100644 --- a/packages/multichain-account-service/CHANGELOG.md +++ b/packages/multichain-account-service/CHANGELOG.md @@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Removed + +- Remove dependency on `@metamask/error-reporting-service` ([#7542](https://github.com/MetaMask/core/pull/7542)) + - The service no longer needs `ErrorReportingService:captureException`. + ## [4.1.0] ### Added diff --git a/packages/network-controller/CHANGELOG.md b/packages/network-controller/CHANGELOG.md index 03cf460542f..1230c1faa4b 100644 --- a/packages/network-controller/CHANGELOG.md +++ b/packages/network-controller/CHANGELOG.md @@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Removed + +- Remove dependency on `@metamask/error-reporting-service` ([#7542](https://github.com/MetaMask/core/pull/7542)) + - The controller no longer needs `ErrorReportingService:captureException`. + ## [27.1.0] ### Added From 42d0b9d464da56334044ba227f35e264c3ac8f34 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Fri, 19 Dec 2025 21:06:49 +0100 Subject: [PATCH 3/3] Change changelog entry to "Changed" --- packages/multichain-account-service/CHANGELOG.md | 2 +- packages/network-controller/CHANGELOG.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/multichain-account-service/CHANGELOG.md b/packages/multichain-account-service/CHANGELOG.md index 672b88270cc..dbf379947c0 100644 --- a/packages/multichain-account-service/CHANGELOG.md +++ b/packages/multichain-account-service/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -### Removed +### Changed - Remove dependency on `@metamask/error-reporting-service` ([#7542](https://github.com/MetaMask/core/pull/7542)) - The service no longer needs `ErrorReportingService:captureException`. diff --git a/packages/network-controller/CHANGELOG.md b/packages/network-controller/CHANGELOG.md index 1230c1faa4b..f53d28e3daa 100644 --- a/packages/network-controller/CHANGELOG.md +++ b/packages/network-controller/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -### Removed +### Changed - Remove dependency on `@metamask/error-reporting-service` ([#7542](https://github.com/MetaMask/core/pull/7542)) - The controller no longer needs `ErrorReportingService:captureException`.