Repository: MetaMask/metamask-extension
Pull request #32713: feat: adds ability to update remote mode delegations
Author: login: kevinbluer
Labels: name: no-changelog
description: no-changelog Indicates no external facing user changes, therefore no changelog documentation needed
name: team-vault-deprecated
description: MetaMask Vault Team is now Prediction Markets
name: release-12.20.0
description: Issue or pull request that will be included in release 12.20.0
Created: 2025-05-08T20:16:09Z | Merged: 2025-05-22T19:43:25Z

<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once.
-->

## **Description**

- Adds the ability to update either Remote Swaps or Withdrawal Limits (which in turn revokes the existing delegation recreates the new one)
- Removes the now redundant "Update to a smart account" step on both setup flows and the associated `SmartAccountUpdateInformation` component
- Adds minor UI / UX tweaks inline with the designs

[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/32713?quickstart=1)

## **Related issues**

Fixes: https://github.com/MetaMask/metamask-extension/issues/32446

## **Manual testing steps**

1. Create the build (yarn webpack)
2. Go to `#remote`, `#remote/setup-swaps` and `#remote/setup-daily-allowance` to setup swaps and daily allowance. From the main settings screen click "Update" and go through the subsequent update flow
3. [Designs for reference](https://www.figma.com/design/yNlc4iZHrF6Hao8F85AjIE/Remote-Mode?node-id=3040-2998&p=f&t=qy92MFMF3rkNuKdh-0)
- Note to override the vaultRemoteMode feature flag (which will implicitly default to disabled), the configuration steps are available [here](https://github.com/MetaMask/contributor-docs/blob/main/docs/remote-feature-flags.md#a-local-build). Example.manifest-overrides.json:
```json
{
  "_flags": {
    "remoteFeatureFlags": {
      "vaultRemoteMode": true
    }
  }
}
```

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. -->

### **Before**

NA

### **After**

![image](https://github.com/user-attachments/assets/d9b8053d-68c9-451f-b5c6-7d87d1b9fae1)
![image](https://github.com/user-attachments/assets/20f03cc5-7c7f-41a0-b58e-d3c3dd4d7cca)

## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable
- [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.



Diff:
diff --git a/app/scripts/controller-init/delegation/delegation-controller-init.ts b/app/scripts/controller-init/delegation/delegation-controller-init.ts
index c171f035473b..9271ff0b3322 100644
--- a/app/scripts/controller-init/delegation/delegation-controller-init.ts
+++ b/app/scripts/controller-init/delegation/delegation-controller-init.ts
@@ -1,5 +1,6 @@
 import {
   DelegationController,
+  DelegationEntry,
   type DelegationControllerMessenger,
 } from '@metamask/delegation-controller';
 import {
@@ -67,11 +68,16 @@ export const DelegationControllerInit: ControllerInitFunction<
  * @param options
  * @param options.hash - The hash of the delegation entry to delete.
  * @param options.txMeta - The transaction meta of the transaction that confirmed the delegation entry.
+ * @param options.entryToStore - The delegation entry to store.
  */
 export async function awaitDeleteDelegationEntry(
   controller: DelegationController,
   initMessenger: DelegationControllerInitMessenger,
-  { hash, txMeta }: { hash: Hex; txMeta: TransactionMeta },
+  {
+    hash,
+    txMeta,
+    entryToStore,
+  }: { hash: Hex; txMeta: TransactionMeta; entryToStore?: DelegationEntry },
 ) {
   let { id } = txMeta;
   let action: 'continue' | 'unsubscribe' | 'delete' = 'continue';
@@ -125,6 +131,9 @@ export async function awaitDeleteDelegationEntry(
 
     if (action === 'delete') {
       controller.delete(hash);
+      if (entryToStore) {
+        controller.store({ entry: entryToStore });
+      }
     }
 
     if (action === 'unsubscribe' || action === 'delete') {
diff --git a/ui/pages/remote-mode/components/index.ts b/ui/pages/remote-mode/components/index.ts
index 2cf71c5714af..ceaa655d9692 100644
--- a/ui/pages/remote-mode/components/index.ts
+++ b/ui/pages/remote-mode/components/index.ts
@@ -3,7 +3,6 @@ export { default as RemoteModeHardwareWalletConfirm } from './hardware-wallet-co
 export { default as RevokeWithdrawlConfirm } from './revoke-withdrawl-confirm-modal';
 export { default as RemoteModeSwapAllowanceCard } from './swap-allowance-card';
 export { default as StepIndicator } from './step-indicator/step-indicator.component';
-export { default as SmartAccountUpdateInformation } from './smart-account-update-information';
 export { default as RemoteModeTransaction } from './remote-mode-transaction';
 export { default as RemoteModeStatus } from './remote-mode-status';
 export { default as SendAllowanceBanner } from './send-allowance-banner';
diff --git a/ui/pages/remote-mode/components/smart-account-update-information/index.tsx b/ui/pages/remote-mode/components/smart-account-update-information/index.tsx
deleted file mode 100644
index f6025c224bf2..000000000000
--- a/ui/pages/remote-mode/components/smart-account-update-information/index.tsx
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from './smart-account-update-information.component';
diff --git a/ui/pages/remote-mode/components/smart-account-update-information/smart-account-update-information.component.tsx b/ui/pages/remote-mode/components/smart-account-update-information/smart-account-update-information.component.tsx
deleted file mode 100644
index 288406b48272..000000000000
--- a/ui/pages/remote-mode/components/smart-account-update-information/smart-account-update-information.component.tsx
+++ /dev/null
@@ -1,131 +0,0 @@
-import React from 'react';
-
-import { InternalAccount } from '@metamask/keyring-internal-api';
-
-import {
-  AvatarAccount,
-  AvatarAccountSize,
-  AvatarAccountVariant,
-  AvatarToken,
-  AvatarTokenSize,
-  Box,
-  Text,
-  Icon,
-  IconName,
-  IconSize,
-} from '../../../../components/component-library';
-import Tooltip from '../../../../components/ui/tooltip';
-import {
-  AlignItems,
-  TextAlign,
-  BackgroundColor,
-  Display,
-  JustifyContent,
-  TextColor,
-} from '../../../../helpers/constants/design-system';
-import Card from '../../../../components/ui/card';
-
-const SmartAccountUpdateInformation = ({
-  selectedHardwareAccount,
-}: {
-  selectedHardwareAccount: InternalAccount;
-}) => {
-  return (
-    <Card backgroundColor={BackgroundColor.backgroundMuted} marginBottom={4}>
-      <Box
-        display={Display.Flex}
-        gap={2}
-        paddingBottom={2}
-        justifyContent={JustifyContent.spaceBetween}
-      >
-        <Text>Account</Text>
-
-        <Box
-          textAlign={TextAlign.Center}
-          backgroundColor={BackgroundColor.primaryMuted}
-          style={{
-            padding: '4px 8px',
-            borderRadius: '16px',
-          }}
-          display={Display.Flex}
-          alignItems={AlignItems.center}
-          gap={2}
-        >
-          <AvatarAccount
-            variant={AvatarAccountVariant.Jazzicon}
-            address={selectedHardwareAccount.address}
-            size={AvatarAccountSize.Xs}
-            paddingRight={2}
-          />
-          <Text>{selectedHardwareAccount.metadata.name}</Text>
-        </Box>
-      </Box>
-      <Box
-        display={Display.Flex}
-        gap={2}
-        paddingBottom={2}
-        justifyContent={JustifyContent.spaceBetween}
-      >
-        <Box display={Display.Flex} gap={2}>
-          <Text>Now</Text>
-          <Tooltip position="top" title="..." trigger="mouseenter">
-            <Icon name={IconName.Info} size={IconSize.Sm} />
-          </Tooltip>
-        </Box>
-        <Text>Standard account (EOA)</Text>
-      </Box>
-      <Box
-        display={Display.Flex}
-        gap={2}
-        paddingBottom={2}
-        justifyContent={JustifyContent.spaceBetween}
-      >
-        <Box display={Display.Flex} gap={2}>
-          <Text>Updating to</Text>
-          <Tooltip position="top" title="..." trigger="mouseenter">
-            <Icon name={IconName.Info} size={IconSize.Sm} />
-          </Tooltip>
-        </Box>
-        <Text>Smart account</Text>
-      </Box>
-      <Box
-        display={Display.Flex}
-        gap={2}
-        justifyContent={JustifyContent.spaceBetween}
-      >
-        <Box display={Display.Flex} gap={2}>
-          <Text>Interacting with</Text>
-          <Tooltip position="top" title="..." trigger="mouseenter">
-            <Icon name={IconName.Info} size={IconSize.Sm} />
-          </Tooltip>
-        </Box>
-
-        <Box
-          textAlign={TextAlign.Center}
-          color={TextColor.infoDefault}
-          backgroundColor={BackgroundColor.backgroundDefault}
-          style={{
-            padding: '4px 8px',
-            borderRadius: '16px',
-            display: 'inline-block',
-          }}
-          display={Display.Flex}
-          alignItems={AlignItems.center}
-          gap={2}
-        >
-          <Box display={Display.Flex} alignItems={AlignItems.center} gap={2}>
-            <AvatarToken
-              src="/images/logo/metamask-fox.svg"
-              size={AvatarTokenSize.Sm}
-              name="metamask-fox"
-              padding={1}
-            />
-            <Text>Smart contract</Text>
-          </Box>
-        </Box>
-      </Box>
-    </Card>
-  );
-};
-
-export default SmartAccountUpdateInformation;
diff --git a/ui/pages/remote-mode/components/smart-account-update-information/smart-account-update-information.stories.tsx b/ui/pages/remote-mode/components/smart-account-update-information/smart-account-update-information.stories.tsx
deleted file mode 100644
index 48aa1ce3db20..000000000000
--- a/ui/pages/remote-mode/components/smart-account-update-information/smart-account-update-information.stories.tsx
+++ /dev/null
@@ -1,32 +0,0 @@
-import React from 'react';
-import { Provider } from 'react-redux';
-import { MemoryRouter } from 'react-router-dom';
-import configureStore from '../../../../store/store';
-import SmartAccountUpdateInformation from './smart-account-update-information.component';
-import testData from '../../../../../.storybook/test-data';
-
-const store = configureStore(testData);
-
-export default {
-  title: 'Components/Vault/RemoteMode/SmartAccountUpdateInformation',
-  component: SmartAccountUpdateInformation,
-  decorators: [
-    (story) => (
-      <Provider store={store}>
-        <MemoryRouter>{story()}</MemoryRouter>
-      </Provider>
-    ),
-  ],
-};
-
-export const Default = () => (
-  <SmartAccountUpdateInformation
-    selectedHardwareAccount={{
-      ...testData.metamask.internalAccounts.accounts['07c2cfec-36c9-46c4-8115-3836d3ac9047'],
-      metadata: {
-        ...testData.metamask.internalAccounts.accounts['07c2cfec-36c9-46c4-8115-3836d3ac9047'].metadata,
-        importTime: Date.now(),
-      },
-    }}
-  />
-);
diff --git a/ui/pages/remote-mode/components/smart-account-update-information/smart-account-update-information.test.tsx b/ui/pages/remote-mode/components/smart-account-update-information/smart-account-update-information.test.tsx
deleted file mode 100644
index ad87f29d5238..000000000000
--- a/ui/pages/remote-mode/components/smart-account-update-information/smart-account-update-information.test.tsx
+++ /dev/null
@@ -1,35 +0,0 @@
-import React from 'react';
-import configureMockStore from 'redux-mock-store';
-import { renderWithProvider } from '../../../../../test/jest/rendering';
-import mockState from '../../../../../test/data/mock-state.json';
-import SmartAccountUpdateInformation from './smart-account-update-information.component';
-
-const renderComponent = () => {
-  const store = configureMockStore()({
-    ...mockState,
-    metamask: {
-      ...mockState.metamask,
-      isRemoteModeEnabled: true,
-    },
-  });
-  return renderWithProvider(
-    <SmartAccountUpdateInformation
-      selectedHardwareAccount={{
-        ...mockState.metamask.internalAccounts.accounts[
-          '07c2cfec-36c9-46c4-8115-3836d3ac9047'
-        ],
-        type: 'eip155:eoa',
-        scopes: ['eip155:1'],
-      }}
-    />,
-    store,
-  );
-};
-
-describe('RemoteModeSetupSwaps Component', () => {
-  it('should render correctly', () => {
-    expect(() => {
-      renderComponent();
-    }).not.toThrow();
-  });
-});
diff --git a/ui/pages/remote-mode/hooks/useRemoteMode.test.tsx b/ui/pages/remote-mode/hooks/useRemoteMode.test.tsx
index 47762ea233a9..059f2d2dc1c0 100644
--- a/ui/pages/remote-mode/hooks/useRemoteMode.test.tsx
+++ b/ui/pages/remote-mode/hooks/useRemoteMode.test.tsx
@@ -11,9 +11,9 @@ import {
   signDelegation,
   storeDelegationEntry,
   awaitDeleteDelegationEntry,
-  listDelegationEntries,
 } from '../../../store/controller-actions/delegation-controller';
 import { addTransaction } from '../../../store/actions';
+import { getRemoteModeConfig } from '../../../selectors/remote-mode';
 import { useRemoteMode } from './useRemoteMode';
 
 // Minimal mock state for tests
@@ -73,6 +73,14 @@ jest.mock('../../../store/controller-actions/delegation-controller', () => ({
   ),
   signDelegation: jest.fn(() => Promise.resolve('0xSignature')),
   storeDelegationEntry: jest.fn(),
+  getDelegationEntry: jest.fn(() =>
+    Promise.resolve({ hash: '0xHash', data: 'mockData' }),
+  ),
+}));
+
+// Mock the selectors module for getRemoteModeConfig
+jest.mock('../../../selectors/remote-mode', () => ({
+  getRemoteModeConfig: jest.fn(),
 }));
 
 const mockAccount = '0x1';
@@ -103,20 +111,22 @@ const mockUseSelector = (selector: unknown) => {
   if (selector === selectors.getSelectedNetwork) {
     return { configuration: { chainId: '0x1' } };
   }
-  // Handle getRemoteModeConfig usage as an inline function
-  if (
-    typeof selector === 'function' &&
-    selector.toString().includes('getRemoteModeConfig')
-  ) {
-    return { swapAllowance: null, dailyAllowance: null };
-  }
   // Handle getSelectedNetworkClientId
   if (selector === networkSelectors.getSelectedNetworkClientId) {
     return 'networkClientId';
   }
+  // For other selectors, including the one that uses getRemoteModeConfig,
+  // execute it with the relevant part of the mock state.
+  // The selector for getRemoteModeConfig will internally call our mocked version.
+  if (typeof selector === 'function') {
+    return selector(mockState.metamask);
+  }
   return undefined;
 };
 
+// Cast the imported mock (which is getRemoteModeConfig from the mocked module) to jest.Mock
+const mockedGetRemoteModeConfig = getRemoteModeConfig as unknown as jest.Mock;
+
 describe('useRemoteMode', () => {
   beforeEach(() => {
     store = configureMockStore()(mockState);
@@ -125,9 +135,17 @@ describe('useRemoteMode', () => {
     };
     jest.clearAllMocks();
     (useSelector as jest.Mock).mockImplementation(mockUseSelector);
+
+    // Default mock for getRemoteModeConfig for most tests
+    // Initially, no allowances, meaning no delegations are set up.
+    mockedGetRemoteModeConfig.mockReturnValue({
+      swapAllowance: null,
+      dailyAllowance: null,
+    });
   });
 
   it('returns remoteModeConfig from selector', () => {
+    // This test will now use the default mock from beforeEach
     const { result } = renderHook(
       () => useRemoteMode({ account: mockAccount }),
       {
@@ -138,6 +156,7 @@ describe('useRemoteMode', () => {
       swapAllowance: null,
       dailyAllowance: null,
     });
+    expect(mockedGetRemoteModeConfig).toHaveBeenCalled();
   });
 
   it('enableRemoteMode calls upgradeAccount, creates, signs, and stores delegation', async () => {
@@ -172,6 +191,12 @@ describe('useRemoteMode', () => {
   });
 
   it('disableRemoteMode calls addTransaction and awaitDeleteDelegationEntry', async () => {
+    // For this test, ensure a delegation exists for SWAP mode
+    mockedGetRemoteModeConfig.mockReturnValue({
+      swapAllowance: { delegation: { id: 'mockSwapDelegation' } }, // Provide a mock delegation
+      dailyAllowance: null,
+    });
+
     const { result } = renderHook(
       () => useRemoteMode({ account: mockAccount }),
       {
@@ -188,15 +213,24 @@ describe('useRemoteMode', () => {
   });
 
   it('disableRemoteMode throws if no delegation entry found', async () => {
-    (listDelegationEntries as jest.Mock).mockResolvedValueOnce([]);
+    // Ensure getRemoteModeConfig returns null allowances for this test,
+    // which is the default beforeEach setup, but explicit for clarity.
+    mockedGetRemoteModeConfig.mockReturnValue({
+      swapAllowance: null,
+      dailyAllowance: null,
+    });
+
     const { result } = renderHook(
       () => useRemoteMode({ account: mockAccount }),
       {
         wrapper: Wrapper,
       },
     );
-    await expect(
-      result.current.disableRemoteMode({ mode: REMOTE_MODES.SWAP }),
-    ).rejects.toThrow('No delegation entry found');
+    // Wrap the call and assertion in act
+    await act(async () => {
+      await expect(
+        result.current.disableRemoteMode({ mode: REMOTE_MODES.SWAP }),
+      ).rejects.toThrow('No delegation entry found');
+    });
   });
 });
diff --git a/ui/pages/remote-mode/hooks/useRemoteMode.ts b/ui/pages/remote-mode/hooks/useRemoteMode.ts
index 640c3fa22247..17264f1b8492 100644
--- a/ui/pages/remote-mode/hooks/useRemoteMode.ts
+++ b/ui/pages/remote-mode/hooks/useRemoteMode.ts
@@ -1,5 +1,8 @@
 import type { InternalAccount } from '@metamask/keyring-internal-api';
-import { TransactionType } from '@metamask/transaction-controller';
+import {
+  TransactionMeta,
+  TransactionType,
+} from '@metamask/transaction-controller';
 import { type Hex, hexToNumber } from '@metamask/utils';
 import { useCallback, useEffect, useMemo, useState } from 'react';
 import { useSelector } from 'react-redux';
@@ -8,6 +11,7 @@ import {
   getDeleGatorEnvironment,
 } from '../../../../shared/lib/delegation';
 import {
+  Delegation,
   encodeDisableDelegation,
   getDelegationHashOffchain,
 } from '../../../../shared/lib/delegation/delegation';
@@ -17,7 +21,6 @@ import { getRemoteModeConfig } from '../../../selectors/remote-mode';
 import { addTransaction } from '../../../store/actions';
 import {
   awaitDeleteDelegationEntry,
-  listDelegationEntries,
   signDelegation,
   storeDelegationEntry,
 } from '../../../store/controller-actions/delegation-controller';
@@ -66,6 +69,22 @@ export const useRemoteMode = ({ account }: { account: Hex }) => {
     [network7702List, chainId],
   );
 
+  const getRemoteModeDelegation = useCallback(
+    (mode: REMOTE_MODES) => {
+      const allowance =
+        mode === REMOTE_MODES.DAILY_ALLOWANCE
+          ? remoteModeConfig.dailyAllowance
+          : remoteModeConfig.swapAllowance;
+
+      if (!allowance) {
+        return null;
+      }
+
+      return allowance.delegation;
+    },
+    [remoteModeConfig.dailyAllowance, remoteModeConfig.swapAllowance],
+  );
+
   const upgradeAccount = useCallback(async () => {
     // TODO: remove this and use isSupported when it's ready
     if (networkConfig?.isSupported) {
@@ -92,20 +111,14 @@ export const useRemoteMode = ({ account }: { account: Hex }) => {
     upgradeContractAddress,
   ]);
 
-  const enableRemoteMode = useCallback(
+  const generateDelegation = useCallback(
     async ({
       selectedAccount,
       authorizedAccount,
-      mode,
-      meta,
     }: {
       selectedAccount: InternalAccount;
       authorizedAccount: InternalAccount;
-      mode: REMOTE_MODES;
-      meta?: string;
     }) => {
-      await upgradeAccount();
-
       const delegation = createDelegation({
         caveats: [],
         from: selectedAccount.address as `0x${string}`,
@@ -116,30 +129,17 @@ export const useRemoteMode = ({ account }: { account: Hex }) => {
 
       delegation.signature = signature;
 
-      storeDelegationEntry({
-        delegation,
-        tags: [mode],
-        chainId,
-        meta,
-      });
+      return delegation;
     },
-    [chainId, upgradeAccount],
+    [chainId],
   );
 
-  // TODO: check if delegation is already disabled by calling contract directly
-  const disableRemoteMode = useCallback(
-    async ({ mode }: { mode: REMOTE_MODES }): Promise<void> => {
-      const delegationEntries = await listDelegationEntries({
-        from: account,
-        tags: [mode],
-      });
-
-      if (delegationEntries.length === 0) {
-        throw new Error('No delegation entry found');
-      }
-
-      const { delegation } = delegationEntries[0];
-
+  const addDisableDelegationTransaction = useCallback(
+    async ({
+      delegation,
+    }: {
+      delegation: Delegation;
+    }): Promise<TransactionMeta> => {
       const encodedCallData = encodeDisableDelegation({
         delegation,
       });
@@ -159,17 +159,112 @@ export const useRemoteMode = ({ account }: { account: Hex }) => {
 
       setTransactionId(transactionMeta.id);
 
+      return transactionMeta;
+    },
+    [account, delegationManagerAddress, globalNetworkClientId],
+  );
+
+  const enableRemoteMode = useCallback(
+    async ({
+      selectedAccount,
+      authorizedAccount,
+      mode,
+      meta,
+    }: {
+      selectedAccount: InternalAccount;
+      authorizedAccount: InternalAccount;
+      mode: REMOTE_MODES;
+      meta?: string;
+    }) => {
+      await upgradeAccount();
+
+      const delegation = await generateDelegation({
+        selectedAccount,
+        authorizedAccount,
+      });
+
+      storeDelegationEntry({
+        delegation,
+        tags: [mode],
+        chainId,
+        meta,
+      });
+    },
+    [chainId, generateDelegation, upgradeAccount],
+  );
+
+  const disableRemoteMode = useCallback(
+    async ({ mode }: { mode: REMOTE_MODES }): Promise<void> => {
+      const delegation = getRemoteModeDelegation(mode);
+
+      if (!delegation) {
+        throw new Error('No delegation entry found');
+      }
+
+      const transactionMeta = await addDisableDelegationTransaction({
+        delegation,
+      });
+
       await awaitDeleteDelegationEntry({
         hash: getDelegationHashOffchain(delegation),
         txMeta: transactionMeta,
       });
     },
-    [account, delegationManagerAddress, globalNetworkClientId],
+    [addDisableDelegationTransaction, getRemoteModeDelegation],
+  );
+
+  const updateRemoteMode = useCallback(
+    async ({
+      selectedAccount,
+      authorizedAccount,
+      mode,
+      meta,
+    }: {
+      selectedAccount: InternalAccount;
+      authorizedAccount: InternalAccount;
+      mode: REMOTE_MODES;
+      meta?: string;
+    }) => {
+      const previousDelegation = getRemoteModeDelegation(mode);
+
+      const delegation = await generateDelegation({
+        selectedAccount,
+        authorizedAccount,
+      });
+
+      const entryToStore = {
+        delegation,
+        tags: [mode],
+        chainId,
+        meta,
+      };
+
+      if (!previousDelegation) {
+        return await storeDelegationEntry(entryToStore);
+      }
+
+      const transactionMeta = await addDisableDelegationTransaction({
+        delegation: previousDelegation,
+      });
+
+      return await awaitDeleteDelegationEntry({
+        hash: getDelegationHashOffchain(previousDelegation),
+        txMeta: transactionMeta,
+        entryToStore,
+      });
+    },
+    [
+      addDisableDelegationTransaction,
+      chainId,
+      generateDelegation,
+      getRemoteModeDelegation,
+    ],
   );
 
   return {
     enableRemoteMode,
     disableRemoteMode,
+    updateRemoteMode,
     remoteModeConfig,
   };
 };
diff --git a/ui/pages/remote-mode/overview/remote-mode-permissions.component.tsx b/ui/pages/remote-mode/overview/remote-mode-permissions.component.tsx
index 01bfba0c962c..f07e7d0197d3 100644
--- a/ui/pages/remote-mode/overview/remote-mode-permissions.component.tsx
+++ b/ui/pages/remote-mode/overview/remote-mode-permissions.component.tsx
@@ -1,6 +1,7 @@
 import React, { useState } from 'react';
-
+import { useHistory } from 'react-router-dom';
 import { useSelector } from 'react-redux';
+
 import {
   Box,
   Icon,
@@ -12,11 +13,14 @@ import Card from '../../../components/ui/card';
 import {
   AlignItems,
   BackgroundColor,
+  BorderColor,
+  BlockSize,
   Display,
   FlexDirection,
   JustifyContent,
   TextColor,
   TextVariant,
+  FontWeight,
 } from '../../../helpers/constants/design-system';
 
 import {
@@ -29,6 +33,10 @@ import { getSelectedInternalAccount } from '../../../selectors';
 import { RevokeWithdrawlConfirmModalType } from '../components/revoke-withdrawl-confirm-modal';
 import { useRemoteMode } from '../hooks/useRemoteMode';
 import { REMOTE_MODES } from '../remote.types';
+import {
+  REMOTE_ROUTE_SETUP_SWAPS,
+  REMOTE_ROUTE_SETUP_DAILY_ALLOWANCE,
+} from '../../../helpers/constants/routes';
 
 export default function RemoteModePermissions({
   setStartEnableRemoteSwap,
@@ -45,6 +53,8 @@ export default function RemoteModePermissions({
   const [isRevokeSpendAllowanceVisible, setIsRevokeSpendAllowanceVisible] =
     useState(false);
 
+  const history = useHistory();
+
   const selectedAccount = useSelector(getSelectedInternalAccount);
 
   const {
@@ -87,8 +97,7 @@ export default function RemoteModePermissions({
   return (
     <Box>
       <Text variant={TextVariant.bodyMd} color={TextColor.textAlternativeSoft}>
-        Safely access your hardware wallet funds without plugging it in. Revoke
-        permissions anytime.
+        Remote Mode lets you use your hardware wallet without plugging it in.{' '}
       </Text>
       <Box paddingTop={2} paddingBottom={2}>
         <Card backgroundColor={BackgroundColor.backgroundMuted}>
@@ -96,15 +105,19 @@ export default function RemoteModePermissions({
             display={Display.Flex}
             gap={2}
             justifyContent={JustifyContent.spaceBetween}
-            paddingTop={2}
-            paddingBottom={2}
           >
-            <Text>Remote Swaps</Text>
+            <Text fontWeight={FontWeight.Bold}>Remote Swaps</Text>
             {swapAllowance ? (
-              <Box display={Display.Flex} gap={6}>
+              <Box display={Display.Flex} gap={4}>
                 <Text
                   color={TextColor.infoDefault}
                   style={{ cursor: 'pointer' }}
+                  onClick={() => {
+                    history.push({
+                      pathname: REMOTE_ROUTE_SETUP_SWAPS,
+                      search: `?update=true`,
+                    });
+                  }}
                 >
                   Update
                 </Text>
@@ -131,9 +144,14 @@ export default function RemoteModePermissions({
               display={Display.Flex}
               flexDirection={FlexDirection.Column}
               gap={4}
-              paddingTop={4}
-              paddingBottom={4}
+              paddingTop={2}
             >
+              <Box
+                borderColor={BorderColor.borderMuted}
+                width={BlockSize.Full}
+                style={{ height: '1px', borderBottomWidth: 0 }}
+                marginTop={2}
+              />
               <Box
                 display={Display.Flex}
                 justifyContent={JustifyContent.spaceBetween}
@@ -170,7 +188,12 @@ export default function RemoteModePermissions({
                   MetaMask Swaps
                 </Text>
               </Box>
-
+              <Box
+                borderColor={BorderColor.borderMuted}
+                width={BlockSize.Full}
+                style={{ height: '1px', borderBottomWidth: 0 }}
+                marginTop={2}
+              />
               <Box
                 display={Display.Flex}
                 justifyContent={JustifyContent.spaceBetween}
@@ -182,7 +205,7 @@ export default function RemoteModePermissions({
                   {swapAllowance.allowances.length} token
                   {swapAllowance.allowances.length === 1 ? '' : 's'} enabled
                 </Text>
-                <Text color={TextColor.infoDefault}>
+                <Text>
                   {isAllowancesExpanded ? (
                     <Icon name={IconName.ArrowUp} size={IconSize.Sm} />
                   ) : (
@@ -215,15 +238,19 @@ export default function RemoteModePermissions({
             display={Display.Flex}
             gap={2}
             justifyContent={JustifyContent.spaceBetween}
-            paddingTop={2}
-            paddingBottom={2}
           >
-            <Text>Withdrawal limit</Text>
+            <Text fontWeight={FontWeight.Bold}>Withdrawal limit</Text>
             {dailyAllowance ? (
-              <Box display={Display.Flex} gap={6}>
+              <Box display={Display.Flex} gap={4}>
                 <Text
                   color={TextColor.infoDefault}
                   style={{ cursor: 'pointer' }}
+                  onClick={() => {
+                    history.push({
+                      pathname: REMOTE_ROUTE_SETUP_DAILY_ALLOWANCE,
+                      search: `?update=true`,
+                    });
+                  }}
                 >
                   Update
                 </Text>
@@ -250,9 +277,14 @@ export default function RemoteModePermissions({
               display={Display.Flex}
               flexDirection={FlexDirection.Column}
               gap={4}
-              paddingTop={4}
-              paddingBottom={4}
+              paddingTop={2}
             >
+              <Box
+                borderColor={BorderColor.borderMuted}
+                width={BlockSize.Full}
+                style={{ height: '1px', borderBottomWidth: 0 }}
+                marginTop={2}
+              />
               <Box
                 display={Display.Flex}
                 justifyContent={JustifyContent.spaceBetween}
@@ -289,7 +321,12 @@ export default function RemoteModePermissions({
                   MetaMask Swaps
                 </Text>
               </Box>
-
+              <Box
+                borderColor={BorderColor.borderMuted}
+                width={BlockSize.Full}
+                style={{ height: '1px', borderBottomWidth: 0 }}
+                marginTop={2}
+              />
               <Box
                 display={Display.Flex}
                 justifyContent={JustifyContent.spaceBetween}
@@ -303,7 +340,7 @@ export default function RemoteModePermissions({
                   {dailyAllowance.allowances.length} token
                   {dailyAllowance.allowances.length === 1 ? '' : 's'} enabled
                 </Text>
-                <Text color={TextColor.infoDefault}>
+                <Text>
                   {isDailyAllowanceExpanded ? (
                     <Icon name={IconName.ArrowUp} size={IconSize.Sm} />
                   ) : (
diff --git a/ui/pages/remote-mode/setup/setup-daily-allowance/remote-mode-setup-daily-allowance.component.tsx b/ui/pages/remote-mode/setup/setup-daily-allowance/remote-mode-setup-daily-allowance.component.tsx
index 7577946cc50a..b34aa23d3566 100644
--- a/ui/pages/remote-mode/setup/setup-daily-allowance/remote-mode-setup-daily-allowance.component.tsx
+++ b/ui/pages/remote-mode/setup/setup-daily-allowance/remote-mode-setup-daily-allowance.component.tsx
@@ -1,7 +1,7 @@
 import { InternalAccount } from '@metamask/keyring-internal-api';
-import React, { useEffect, useMemo, useState } from 'react';
+import React, { useEffect, useState, useMemo } from 'react';
 import { useSelector } from 'react-redux';
-import { useHistory } from 'react-router-dom';
+import { useHistory, useLocation } from 'react-router-dom';
 
 import { Hex } from '@metamask/utils';
 import {
@@ -18,12 +18,15 @@ import {
   IconSize,
   Text,
 } from '../../../../components/component-library';
+import { AccountListMenu } from '../../../../components/multichain/account-list-menu';
+import { AccountPicker } from '../../../../components/multichain/account-picker';
 import {
   Content,
   Footer,
   Header,
   Page,
 } from '../../../../components/multichain/pages/page';
+import Card from '../../../../components/ui/card';
 import Dropdown from '../../../../components/ui/dropdown';
 import Tooltip from '../../../../components/ui/tooltip';
 import UnitInput from '../../../../components/ui/unit-input';
@@ -41,9 +44,6 @@ import {
   TextColor,
   TextVariant,
 } from '../../../../helpers/constants/design-system';
-import Card from '../../../../components/ui/card';
-import { AccountPicker } from '../../../../components/multichain/account-picker';
-import { AccountListMenu } from '../../../../components/multichain/account-list-menu';
 import {
   DEFAULT_ROUTE,
   REMOTE_ROUTE,
@@ -57,6 +57,8 @@ import {
   TokenInfo,
 } from '../../remote.types';
 
+import { isRemoteModeSupported } from '../../../../helpers/utils/remote-mode';
+import { useMultichainBalances } from '../../../../hooks/useMultichainBalances';
 import {
   getMetaMaskAccountsOrdered,
   getSelectedInternalAccount,
@@ -65,14 +67,11 @@ import {
 import {
   RemoteModeDailyAllowanceCard,
   RemoteModeHardwareWalletConfirm,
-  SmartAccountUpdateInformation,
   StepIndicator,
 } from '../../components';
-import { isRemoteModeSupported } from '../../../../helpers/utils/remote-mode';
-import { useMultichainBalances } from '../../../../hooks/useMultichainBalances';
 import { useRemoteMode } from '../../hooks/useRemoteMode';
 
-const TOTAL_STEPS = 3;
+const TOTAL_STEPS = 2;
 const DAILY_ETH_LIMIT = 10;
 
 /**
@@ -88,7 +87,7 @@ export default function RemoteModeSetupDailyAllowance() {
   const [currentStep, setCurrentStep] = useState<number>(1);
   const [isModalOpen, setIsModalOpen] = useState<boolean>(false);
   const [isConfirmModalOpen, setIsConfirmModalOpen] = useState<boolean>(false);
-  const [dailyAllowance, setDailyAllowance] = useState<DailyAllowance[]>([]);
+
   const [selectedAllowanceAddress, setSelectedAllowanceAddress] =
     useState<string>('');
   const [dailyLimit, setDailyLimit] = useState<string>('0');
@@ -96,16 +95,32 @@ export default function RemoteModeSetupDailyAllowance() {
     useState<boolean>(false);
   const [selectedAccount, setSelectedAccount] =
     useState<InternalAccount | null>(null);
-  const [isHardwareAccount, setIsHardwareAccount] = useState<boolean>(true);
   const [allowanceError, setAllowanceError] = useState<boolean>(false);
 
   const selectedHardwareAccount = useSelector(getSelectedInternalAccount);
+
+  const isHardwareAccount = useMemo(() => {
+    return isRemoteModeSupported(selectedHardwareAccount);
+  }, [selectedHardwareAccount]);
+
+  const { enableRemoteMode, updateRemoteMode, remoteModeConfig } =
+    useRemoteMode({
+      account: selectedHardwareAccount.address as Hex,
+    });
+
+  const [dailyAllowance, setDailyAllowance] = useState<DailyAllowance[]>(
+    remoteModeConfig?.dailyAllowance?.allowances ?? [],
+  );
+
   const selectedNetwork = useSelector(getSelectedNetwork);
   const authorizedAccounts: InternalAccountWithBalance[] = useSelector(
     getMetaMaskAccountsOrdered,
   );
 
   const history = useHistory();
+  const location = useLocation();
+  const params = new URLSearchParams(location.search);
+  const isUpdate = params.get('update') === 'true';
 
   const isRemoteModeEnabled = useSelector(getIsRemoteModeEnabled);
 
@@ -130,14 +145,6 @@ export default function RemoteModeSetupDailyAllowance() {
     );
   }, [assetsWithBalance, selectedAllowanceAddress]);
 
-  const { enableRemoteMode } = useRemoteMode({
-    account: selectedHardwareAccount.address as Hex,
-  });
-
-  useEffect(() => {
-    setIsHardwareAccount(isRemoteModeSupported(selectedHardwareAccount));
-  }, [selectedHardwareAccount]);
-
   useEffect(() => {
     if (authorizedAccounts.length > 0) {
       setSelectedAccount(authorizedAccounts[0]);
@@ -207,16 +214,6 @@ export default function RemoteModeSetupDailyAllowance() {
   };
 
   const handleShowConfirmation = async () => {
-    // todo: replace with delegation controller integration
-    const remoteMode = localStorage.getItem('remoteMode');
-    const parsedRemoteMode = remoteMode ? JSON.parse(remoteMode) : null;
-    const updatedRemoteMode = {
-      ...parsedRemoteMode,
-      dailyAllowance: {
-        allowances: dailyAllowance,
-      },
-    };
-    localStorage.setItem('remoteMode', JSON.stringify(updatedRemoteMode));
     setIsConfirmModalOpen(true);
   };
 
@@ -226,14 +223,24 @@ export default function RemoteModeSetupDailyAllowance() {
     }
 
     try {
-      await enableRemoteMode({
-        selectedAccount: selectedHardwareAccount,
-        authorizedAccount: selectedAccount,
-        mode: REMOTE_MODES.DAILY_ALLOWANCE,
-        meta: JSON.stringify({ allowances: dailyAllowance }),
-      });
-      // TODO: check better way to route to remote mode if upgrade is needed
-      history.replace(REMOTE_ROUTE);
+      if (isUpdate) {
+        await updateRemoteMode({
+          selectedAccount: selectedHardwareAccount,
+          authorizedAccount: selectedAccount,
+          mode: REMOTE_MODES.DAILY_ALLOWANCE,
+          meta: JSON.stringify({ allowances: dailyAllowance }),
+        });
+      } else {
+        await enableRemoteMode({
+          selectedAccount: selectedHardwareAccount,
+          authorizedAccount: selectedAccount,
+          mode: REMOTE_MODES.DAILY_ALLOWANCE,
+          meta: JSON.stringify({ allowances: dailyAllowance }),
+        });
+
+        // TODO: check better way to route to remote mode if upgrade is needed
+        history.replace(REMOTE_ROUTE);
+      }
     } catch (error) {
       // TODO: show error on UI
       console.error(error);
@@ -391,36 +398,6 @@ export default function RemoteModeSetupDailyAllowance() {
           </Box>
         );
       case 2:
-        return (
-          <>
-            <SmartAccountUpdateInformation
-              selectedHardwareAccount={selectedHardwareAccount}
-            />
-
-            <Card backgroundColor={BackgroundColor.backgroundMuted}>
-              <Box
-                display={Display.Flex}
-                gap={2}
-                justifyContent={JustifyContent.spaceBetween}
-              >
-                <Text paddingBottom={2}>
-                  Network fee <Icon name={IconName.Info} size={IconSize.Sm} />
-                </Text>
-                <Text paddingBottom={2}>0.0013 ETH</Text>
-              </Box>
-              <Box
-                paddingTop={2}
-                display={Display.Flex}
-                gap={2}
-                justifyContent={JustifyContent.spaceBetween}
-              >
-                <Text paddingBottom={2}>Speed</Text>
-                <Text paddingBottom={2}>🦊 Market &lt; 30 sec</Text>
-              </Box>
-            </Card>
-          </>
-        );
-      case 3:
         return (
           <>
             <Card backgroundColor={BackgroundColor.backgroundMuted}>
@@ -480,7 +457,7 @@ export default function RemoteModeSetupDailyAllowance() {
                   Edit
                 </Text>
               </Box>
-              <Box marginTop={2} marginBottom={2}>
+              <Box marginTop={4}>
                 <Box
                   display={Display.Flex}
                   justifyContent={JustifyContent.spaceBetween}
@@ -488,11 +465,11 @@ export default function RemoteModeSetupDailyAllowance() {
                   onClick={() => setIsAllowancesExpanded(!isAllowancesExpanded)}
                   style={{ cursor: 'pointer' }}
                 >
-                  <Text>
+                  <Text color={TextColor.infoDefault}>
                     {dailyAllowance.length} token
                     {dailyAllowance.length === 1 ? '' : 's'} enabled
                   </Text>
-                  <Text color={TextColor.infoDefault}>
+                  <Text>
                     {isAllowancesExpanded ? (
                       <Icon name={IconName.ArrowUp} size={IconSize.Sm} />
                     ) : (
@@ -515,25 +492,6 @@ export default function RemoteModeSetupDailyAllowance() {
                 )}
               </Box>
             </Card>
-            <Card backgroundColor={BackgroundColor.backgroundMuted}>
-              <Box
-                display={Display.Flex}
-                gap={2}
-                justifyContent={JustifyContent.spaceBetween}
-              >
-                <Text paddingBottom={2}>Network fee</Text>
-                <Text paddingBottom={2}>0.0013 ETH</Text>
-              </Box>
-              <Box
-                paddingTop={2}
-                display={Display.Flex}
-                gap={2}
-                justifyContent={JustifyContent.spaceBetween}
-              >
-                <Text paddingBottom={2}>Speed</Text>
-                <Text paddingBottom={2}>🦊 Market &lt; 30 sec</Text>
-              </Box>
-            </Card>
           </>
         );
       default:
@@ -583,8 +541,7 @@ export default function RemoteModeSetupDailyAllowance() {
           fontWeight={FontWeight.Bold}
         >
           {currentStep === 1 && 'Set a withdrawl limit'}
-          {currentStep === 2 && 'Update to a smart account'}
-          {currentStep === 3 && 'Review changes'}
+          {currentStep === 2 && 'Review changes'}
         </Text>
 
         {renderStepContent()}
@@ -610,7 +567,7 @@ export default function RemoteModeSetupDailyAllowance() {
           {currentStep === 1 ? 'Cancel' : 'Back'}
         </Button>
         <Button
-          onClick={currentStep === 3 ? handleShowConfirmation : handleNext}
+          onClick={currentStep === 2 ? handleShowConfirmation : handleNext}
           width={BlockSize.Half}
           size={ButtonSize.Lg}
           disabled={!isHardwareAccount || dailyAllowance.length === 0}
diff --git a/ui/pages/remote-mode/setup/setup-swaps/remote-mode-setup-swaps.component.tsx b/ui/pages/remote-mode/setup/setup-swaps/remote-mode-setup-swaps.component.tsx
index 5761d17e7344..052dd9b8a8e0 100644
--- a/ui/pages/remote-mode/setup/setup-swaps/remote-mode-setup-swaps.component.tsx
+++ b/ui/pages/remote-mode/setup/setup-swaps/remote-mode-setup-swaps.component.tsx
@@ -1,7 +1,7 @@
 import { InternalAccount } from '@metamask/keyring-internal-api';
-import React, { useEffect, useState } from 'react';
+import React, { useEffect, useMemo, useState } from 'react';
 import { useSelector } from 'react-redux';
-import { useHistory } from 'react-router-dom';
+import { useHistory, useLocation } from 'react-router-dom';
 
 import { Hex } from '@metamask/utils';
 import {
@@ -66,7 +66,6 @@ import {
 import {
   RemoteModeHardwareWalletConfirm,
   RemoteModeSwapAllowanceCard,
-  SmartAccountUpdateInformation,
   StepIndicator,
 } from '../../components';
 
@@ -79,7 +78,7 @@ import {
 import { InternalAccountWithBalance } from '../../../../selectors/selectors.types';
 import { useRemoteMode } from '../../hooks/useRemoteMode';
 
-const TOTAL_STEPS = 3;
+const TOTAL_STEPS = 2;
 
 /**
  * A multi-step setup component for configuring swaps in remote mode
@@ -94,7 +93,6 @@ export default function RemoteModeSetupSwaps() {
   const [currentStep, setCurrentStep] = useState<number>(1);
   const [isModalOpen, setIsModalOpen] = useState<boolean>(false);
   const [isConfirmModalOpen, setIsConfirmModalOpen] = useState<boolean>(false);
-  const [swapAllowance, setSwapAllowance] = useState<SwapAllowance[]>([]);
   const [selectedFromToken, setSelectedFromToken] = useState<TokenSymbol>(
     TokenSymbol.USDC,
   );
@@ -106,7 +104,6 @@ export default function RemoteModeSetupSwaps() {
     useState<boolean>(false);
   const [selectedAccount, setSelectedAccount] =
     useState<InternalAccount | null>(null);
-  const [isHardwareAccount, setIsHardwareAccount] = useState<boolean>(true);
   const [dailyLimitError, setDailyLimitError] = useState<boolean>(false);
   const [swapToError, setSwapToError] = useState<boolean>(false);
 
@@ -116,14 +113,22 @@ export default function RemoteModeSetupSwaps() {
   );
 
   const history = useHistory();
+  const location = useLocation();
+  const params = new URLSearchParams(location.search);
+  const isUpdate = params.get('update') === 'true';
 
   const isRemoteModeEnabled = useSelector(getIsRemoteModeEnabled);
-  const { enableRemoteMode } = useRemoteMode({
-    account: selectedHardwareAccount.address as Hex,
-  });
+  const { enableRemoteMode, updateRemoteMode, remoteModeConfig } =
+    useRemoteMode({
+      account: selectedHardwareAccount.address as Hex,
+    });
 
-  useEffect(() => {
-    setIsHardwareAccount(isRemoteModeSupported(selectedHardwareAccount));
+  const [swapAllowance, setSwapAllowance] = useState<SwapAllowance[]>(
+    remoteModeConfig?.swapAllowance?.allowances ?? [],
+  );
+
+  const isHardwareAccount = useMemo(() => {
+    return isRemoteModeSupported(selectedHardwareAccount);
   }, [selectedHardwareAccount]);
 
   useEffect(() => {
@@ -216,29 +221,26 @@ export default function RemoteModeSetupSwaps() {
     }
 
     try {
-      await enableRemoteMode({
-        selectedAccount: selectedHardwareAccount,
-        authorizedAccount: selectedAccount,
-        mode: REMOTE_MODES.SWAP,
-        meta: JSON.stringify({ allowances: swapAllowance }),
-      });
+      if (isUpdate) {
+        await updateRemoteMode({
+          selectedAccount: selectedHardwareAccount,
+          authorizedAccount: selectedAccount,
+          mode: REMOTE_MODES.SWAP,
+          meta: JSON.stringify({ allowances: swapAllowance }),
+        });
+      } else {
+        await enableRemoteMode({
+          selectedAccount: selectedHardwareAccount,
+          authorizedAccount: selectedAccount,
+          mode: REMOTE_MODES.SWAP,
+          meta: JSON.stringify({ allowances: swapAllowance }),
+        });
+        history.replace(REMOTE_ROUTE);
+      }
     } catch (error) {
       // TODO: show error on UI
       console.error(error);
     }
-
-    // todo: replace with delegation controller integration
-    const remoteMode = localStorage.getItem('remoteMode');
-    const parsedRemoteMode = remoteMode ? JSON.parse(remoteMode) : null;
-    const updatedRemoteMode = {
-      ...parsedRemoteMode,
-      swapAllowance: {
-        allowances: swapAllowance,
-      },
-    };
-    localStorage.setItem('remoteMode', JSON.stringify(updatedRemoteMode));
-
-    history.replace(REMOTE_ROUTE);
   };
 
   const onCancel = () => {
@@ -431,7 +433,7 @@ export default function RemoteModeSetupSwaps() {
                 <Box marginTop={2}>
                   {swapAllowance.map((allowance) => (
                     <RemoteModeSwapAllowanceCard
-                      key={allowance.from}
+                      key={`${allowance.from}-${allowance.to}`}
                       swapAllowance={allowance}
                       onRemove={() =>
                         handleRemoveAllowance(allowance.from, allowance.to)
@@ -457,50 +459,6 @@ export default function RemoteModeSetupSwaps() {
           </Box>
         );
       case 2:
-        return (
-          <>
-            <Box
-              marginTop={2}
-              marginBottom={2}
-              display={Display.Flex}
-              flexDirection={FlexDirection.Column}
-              alignItems={AlignItems.center}
-              gap={2}
-            >
-              <Text variant={TextVariant.bodyMd} color={TextColor.textMuted}>
-                Unlock enhanced capabilities while keeping the same address.
-              </Text>
-            </Box>
-
-            <SmartAccountUpdateInformation
-              selectedHardwareAccount={selectedHardwareAccount}
-            />
-
-            <Card backgroundColor={BackgroundColor.backgroundMuted}>
-              <Box
-                display={Display.Flex}
-                gap={2}
-                paddingBottom={2}
-                justifyContent={JustifyContent.spaceBetween}
-              >
-                <Text>
-                  Network fee <Icon name={IconName.Info} size={IconSize.Sm} />
-                </Text>
-                <Text>0.0013 ETH</Text>
-              </Box>
-              <Box
-                paddingTop={2}
-                display={Display.Flex}
-                gap={2}
-                justifyContent={JustifyContent.spaceBetween}
-              >
-                <Text>Speed</Text>
-                <Text>🦊 Market &lt; 30 sec</Text>
-              </Box>
-            </Card>
-          </>
-        );
-      case 3:
         return (
           <>
             <Card
@@ -576,7 +534,7 @@ export default function RemoteModeSetupSwaps() {
                   Edit
                 </Text>
               </Box>
-              <Box marginTop={2} marginBottom={2}>
+              <Box marginTop={4}>
                 <Box
                   display={Display.Flex}
                   justifyContent={JustifyContent.spaceBetween}
@@ -584,15 +542,15 @@ export default function RemoteModeSetupSwaps() {
                   onClick={() => setIsAllowancesExpanded(!isAllowancesExpanded)}
                   style={{ cursor: 'pointer' }}
                 >
-                  <Text>
+                  <Text color={TextColor.infoDefault}>
                     {swapAllowance.length} token
                     {swapAllowance.length === 1 ? '' : 's'} enabled
                   </Text>
-                  <Text color={TextColor.infoDefault}>
+                  <Text>
                     {isAllowancesExpanded ? (
-                      <Icon name={IconName.ArrowDown} size={IconSize.Sm} />
-                    ) : (
                       <Icon name={IconName.ArrowUp} size={IconSize.Sm} />
+                    ) : (
+                      <Icon name={IconName.ArrowDown} size={IconSize.Sm} />
                     )}
                   </Text>
                 </Box>
@@ -611,25 +569,6 @@ export default function RemoteModeSetupSwaps() {
                 )}
               </Box>
             </Card>
-            <Card backgroundColor={BackgroundColor.backgroundMuted}>
-              <Box
-                display={Display.Flex}
-                gap={2}
-                justifyContent={JustifyContent.spaceBetween}
-              >
-                <Text paddingBottom={2}>Network fee</Text>
-                <Text paddingBottom={2}>0.0013 ETH</Text>
-              </Box>
-              <Box
-                paddingTop={2}
-                display={Display.Flex}
-                gap={2}
-                justifyContent={JustifyContent.spaceBetween}
-              >
-                <Text paddingBottom={2}>Speed</Text>
-                <Text paddingBottom={2}>🦊 Market &lt; 30 sec</Text>
-              </Box>
-            </Card>
           </>
         );
       default:
@@ -679,8 +618,7 @@ export default function RemoteModeSetupSwaps() {
           fontWeight={FontWeight.Bold}
         >
           {currentStep === 1 && 'Set up Remote Swaps'}
-          {currentStep === 2 && 'Update to a smart account'}
-          {currentStep === 3 && 'Review changes'}
+          {currentStep === 2 && 'Review changes'}
         </Text>
 
         {renderStepContent()}
@@ -705,7 +643,7 @@ export default function RemoteModeSetupSwaps() {
           {currentStep === 1 ? 'Cancel' : 'Back'}
         </Button>
         <Button
-          onClick={currentStep === 3 ? handleShowConfirmation : handleNext}
+          onClick={currentStep === 2 ? handleShowConfirmation : handleNext}
           width={BlockSize.Half}
           size={ButtonSize.Lg}
           disabled={!isHardwareAccount || swapAllowance.length === 0}
diff --git a/ui/selectors/delegation.test.ts b/ui/selectors/delegation.test.ts
index 8979b9ac48a1..7f45a47e86a4 100644
--- a/ui/selectors/delegation.test.ts
+++ b/ui/selectors/delegation.test.ts
@@ -3,7 +3,11 @@ import {
   createDelegation,
   getDelegationHashOffchain,
 } from '../../shared/lib/delegation';
-import { listDelegationEntries, type DelegationState } from './delegation';
+import {
+  listDelegationEntries,
+  getDelegationEntry,
+  type DelegationState,
+} from './delegation';
 
 const MOCK_CHAIN_ID = '0x1';
 
@@ -147,4 +151,22 @@ describe('Delegation Selectors', () => {
       ).toStrictEqual([]);
     });
   });
+
+  describe('#getDelegationEntry', () => {
+    it('returns the correct entry for a valid hash', () => {
+      expect(getDelegationEntry(getMockState(), HASH_1)).toStrictEqual(ENTRY_1);
+      expect(getDelegationEntry(getMockState(), HASH_2)).toStrictEqual(ENTRY_2);
+      expect(getDelegationEntry(getMockState(), HASH_3)).toStrictEqual(ENTRY_3);
+    });
+
+    it('returns undefined for a non-existent hash', () => {
+      expect(getDelegationEntry(getMockState(), '0xdeadbeef')).toBeUndefined();
+    });
+
+    it('returns undefined if delegations object is empty', () => {
+      expect(
+        getDelegationEntry({ metamask: { delegations: {} } }, HASH_1),
+      ).toBeUndefined();
+    });
+  });
 });
diff --git a/ui/selectors/delegation.ts b/ui/selectors/delegation.ts
index b95284474285..1ec85a74ae09 100644
--- a/ui/selectors/delegation.ts
+++ b/ui/selectors/delegation.ts
@@ -62,3 +62,14 @@ export const listDelegationEntries = (
 
   return list;
 };
+
+/**
+ * Gets a delegation entry by hash.
+ *
+ * @param state - The state object.
+ * @param hash - The hash of the delegation entry.
+ * @returns The delegation entry.
+ */
+export const getDelegationEntry = (state: DelegationState, hash: Hex) => {
+  return state.metamask.delegations[hash];
+};
diff --git a/ui/store/controller-actions/delegation-controller.ts b/ui/store/controller-actions/delegation-controller.ts
index bd8f477a4c46..647596b28f21 100644
--- a/ui/store/controller-actions/delegation-controller.ts
+++ b/ui/store/controller-actions/delegation-controller.ts
@@ -50,11 +50,13 @@ export const deleteDelegationEntry = async (hash: Hex) => {
 export const awaitDeleteDelegationEntry = async ({
   hash,
   txMeta,
+  entryToStore,
 }: {
   hash: Hex;
   txMeta: TransactionMeta;
+  entryToStore?: DelegationEntry;
 }) => {
   return await submitRequestToBackground('awaitDeleteDelegationEntry', [
-    { hash, txMeta },
+    { hash, txMeta, entryToStore },
   ]);
 };


Reviews:
user: login: matallui
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-08T21:30:54Z
user: login: kevinbluer
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-09T22:23:28Z
user: login: caieu
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-13T19:32:16Z
user: login: kevinbluer
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-14T22:18:48Z
user: login: kevinbluer
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-14T22:19:02Z
user: login: caieu
body: LGTM
state: DISMISSED
author_association: CONTRIBUTOR
submitted_at: 2025-05-16T14:42:28Z
user: login: caieu
body: LGTM
state: DISMISSED
author_association: CONTRIBUTOR
submitted_at: 2025-05-20T14:12:04Z
user: login: caieu
body: LGTM
state: DISMISSED
author_association: CONTRIBUTOR
submitted_at: 2025-05-22T14:05:51Z
user: login: caieu
body: LGTM
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-05-22T14:27:59Z
user: login: McOso
state: APPROVED
author_association: MEMBER
submitted_at: 2025-05-22T17:41:08Z
user: login: matallui
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-05-22T19:17:09Z

Review comments:
diff_hunk: @@ -166,9 +168,19 @@ export const useRemoteMode = ({ account }: { account: Hex }) => {
     [account, delegationManagerAddress, globalNetworkClientId],
   );
 
+  const listDelegations = useCallback(async (filter: DelegationFilter) => {
+    return await listDelegationEntries(filter);
+  }, []);
+
+  const getDelegation = useCallback(async (hash: Hex) => {
+    return await getDelegationEntry(hash);
+  }, []);
+
path: ui/pages/remote-mode/hooks/useRemoteMode.ts
user: login: matallui
body: This shouldn't be done this way. We actually need to remove these actions (I added a TODO in `/selectors/delegation.ts`)

What you should do instead:
- for list, just `const delegationEntries = useSelector(listDelegationEntries)` (this `listDelegationEntries` comes from `/selectors/delegation.ts`)
- do the same for `getDelegationEntry`, but you'll have to implement the selector in `/selectors/delegation.ts`

The reason to do this and not call the controller directly is so that the UI is reactive to the controller's state changes. That is why it might not even make sense for us to have methods in the controller to do read operations (since we should just tap into its state).
created_at: 2025-05-08T21:30:54Z
author_association: CONTRIBUTOR
diff_hunk: @@ -166,9 +168,19 @@ export const useRemoteMode = ({ account }: { account: Hex }) => {
     [account, delegationManagerAddress, globalNetworkClientId],
   );
 
+  const listDelegations = useCallback(async (filter: DelegationFilter) => {
+    return await listDelegationEntries(filter);
+  }, []);
+
+  const getDelegation = useCallback(async (hash: Hex) => {
+    return await getDelegationEntry(hash);
+  }, []);
+
path: ui/pages/remote-mode/hooks/useRemoteMode.ts
user: login: kevinbluer
body: Good call! Just added an initial pass at switching over to use the selector (47e2cac567c77b749d389dc696c03f12d30a04cb)
created_at: 2025-05-09T22:23:28Z
author_association: CONTRIBUTOR
diff_hunk: @@ -54,6 +78,31 @@ export default function RemoteModePermissions({
     account: selectedAccount.address as `0x${string}`,
   });
 
+  useEffect(() => {
+    async function fetchDelegations() {
path: ui/pages/remote-mode/overview/remote-mode-permissions.component.tsx
user: login: caieu
body: We have `remoteModeConfig` object on `useRemoteMode` that returns the swap and daily allowance (the delegation and the metadata). Can we use the hook here to get the delegations and after, the delegation hash?
created_at: 2025-05-13T19:21:10Z
author_association: CONTRIBUTOR
diff_hunk: @@ -109,24 +112,40 @@ export default function RemoteModeSetupDailyAllowance() {
   );
 
   const history = useHistory();
+  const location = useLocation();
+  const params = new URLSearchParams(location.search);
+  const delegationHash = params.get('delegationHash');
 
   const isRemoteModeEnabled = useSelector(getIsRemoteModeEnabled);
 
   const { assetsWithBalance } = useMultichainBalances();
 
+  const { enableRemoteMode, disableRemoteMode } = useRemoteMode({
path: ui/pages/remote-mode/setup/setup-daily-allowance/remote-mode-setup-daily-allowance.component.tsx
user: login: caieu
body: Same here, the `useRemoteMode` hook returns the `remoteModeConfig` object with the allowances. can we use that here to get the delegation? So we don't need to pass the delegation hash, and don't need to fetch from the selector. Maybe an update param like `?update=true` or something just to know when we need to update? or even, if theres a existing allowance when we enter the page, we can assume that the user wants to update, since will be only one allowance per account.
created_at: 2025-05-13T19:27:38Z
author_association: CONTRIBUTOR
diff_hunk: @@ -116,14 +119,30 @@ export default function RemoteModeSetupSwaps() {
   );
 
   const history = useHistory();
+  const location = useLocation();
+  const params = new URLSearchParams(location.search);
+  const delegationHash = params.get('delegationHash');
 
   const isRemoteModeEnabled = useSelector(getIsRemoteModeEnabled);
-  const { enableRemoteMode } = useRemoteMode({
+  const { enableRemoteMode, disableRemoteMode } = useRemoteMode({
     account: selectedHardwareAccount.address as Hex,
   });
 
+  const delegation = useSelector((state) =>
path: ui/pages/remote-mode/setup/setup-swaps/remote-mode-setup-swaps.component.tsx
user: login: caieu
body: Same here, to check if we can use the `remoteModeConfig` from `useRemoteMode`
created_at: 2025-05-13T19:31:17Z
author_association: CONTRIBUTOR
diff_hunk: @@ -54,6 +78,31 @@ export default function RemoteModePermissions({
     account: selectedAccount.address as `0x${string}`,
   });
 
+  useEffect(() => {
+    async function fetchDelegations() {
path: ui/pages/remote-mode/overview/remote-mode-permissions.component.tsx
user: login: kevinbluer
body: Great suggestion! Switched to grab everything from `remoteModeConfig` (via the `useRemoteMode` hook) in b150814a68765104fa1befaea4ee71c088be0156.
created_at: 2025-05-14T22:18:48Z
author_association: CONTRIBUTOR
diff_hunk: @@ -109,24 +112,40 @@ export default function RemoteModeSetupDailyAllowance() {
   );
 
   const history = useHistory();
+  const location = useLocation();
+  const params = new URLSearchParams(location.search);
+  const delegationHash = params.get('delegationHash');
 
   const isRemoteModeEnabled = useSelector(getIsRemoteModeEnabled);
 
   const { assetsWithBalance } = useMultichainBalances();
 
+  const { enableRemoteMode, disableRemoteMode } = useRemoteMode({
path: ui/pages/remote-mode/setup/setup-daily-allowance/remote-mode-setup-daily-allowance.component.tsx
user: login: kevinbluer
body: As above 👍 
created_at: 2025-05-14T22:19:02Z
author_association: CONTRIBUTOR

PR comments:
user: login: metamaskbot
created_at: 2025-05-08T22:00:29Z
body: <details><summary>Builds ready [3cf91ae]</summary><ul><li>builds: <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/builds/metamask-chrome-12.17.2.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/builds-mv2/metamask-firefox-12.17.2.zip">firefox</a></li>
<li>builds (beta): <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/14916492307/builds-beta/metamask-beta-chrome-12.17.2-beta.0.zip">chrome</a></li>
<li>builds (flask): <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/builds-flask/metamask-flask-chrome-12.17.2-flask.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/builds-flask-mv2/metamask-flask-firefox-12.17.2-flask.0.zip">firefox</a></li>
<li>builds (test): <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/builds-test/metamask-chrome-12.17.2.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/builds-test-mv2/metamask-firefox-12.17.2.zip">firefox</a></li>
<li>builds (test-flask): <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/builds-test-flask/metamask-flask-chrome-12.17.2-flask.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/builds-test-flask-mv2/metamask-flask-firefox-12.17.2-flask.0.zip">firefox</a></li>
<li>build viz: <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/build-viz/index.html">Build System</a></li>
<li>bundle size: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/14916492307/bundle-size/bundle_size.json">Bundle Size Stats</a></li>
<li>user-actions-benchmark: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/14916492307/benchmarks/benchmark-chrome-browserify-userActions.json">User Actions Stats</a></li>
<li>storybook: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/14916492307/storybook-build/index.html">Storybook</a></li>
<li>typescript migration: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/14916492307/ts-migration-dashboard/index.html">Dashboard</a></li>
<li><a href="https://app.circleci.com/pipelines/github/MetaMask/metamask-extension/jobs/4877761/artifacts/">all CircleCI artifacts</a></li>
<li><details>
       <summary>bundle viz:</summary>
       <ul><li>background: <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/background-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/background-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/background-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/background-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/background-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/background-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/background-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/background-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/background-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/background-9.html">9</a></li><li>common: <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/common-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/common-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/common-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/common-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/common-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/common-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/common-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/common-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/common-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/common-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/common-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/common-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/common-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/common-13.html">13</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/common-14.html">14</a></li><li>ui: <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/ui-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/ui-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/ui-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/ui-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/ui-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/ui-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/ui-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/ui-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/ui-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/ui-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/ui-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/ui-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/ui-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/ui-13.html">13</a></li><li>content-script: <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/content-script-0.html">0</a></li><li>offscreen: <a href="https://output.circle-artifacts.com/output/job/46435446-f408-44e2-8551-02e2807401fc/artifacts/0/build-artifacts/source-map-explorer/offscreen-0.html">0</a></li></ul>
     </details></li></ul></details>

<details><summary>UI Startup Metrics (1209 ± 73 ms)</summary><table><thead><tr><th>Platform</th><th>BuildType</th><th>Page</th><th>Metric</th><th>Mean (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Std Dev (ms)</th><th>P 75 (ms)</th><th>P 95 (ms)</th></tr></thead><tbody><tr><td rowspan="22">Chrome</td><td rowspan="11">Browserify</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1209</td><td align="right">1106</td><td align="right">1553</td><td align="right">73</td><td align="right">1253</td><td align="right">1331</td></tr><tr><td>load</td><td align="right">1056</td><td align="right">952</td><td align="right">1211</td><td align="right">63</td><td align="right">1101</td><td align="right">1171</td></tr><tr><td>domContentLoaded</td><td align="right">1050</td><td align="right">948</td><td align="right">1206</td><td align="right">63</td><td align="right">1095</td><td align="right">1166</td></tr><tr><td>domInteractive</td><td align="right">17</td><td align="right">13</td><td align="right">43</td><td align="right">5</td><td align="right">16</td><td align="right">26</td></tr><tr><td>firstPaint</td><td align="right">680</td><td align="right">135</td><td align="right">1210</td><td align="right">415</td><td align="right">1054</td><td align="right">1145</td></tr><tr><td>backgroundConnect</td><td align="right">7</td><td align="right">4</td><td align="right">31</td><td align="right">4</td><td align="right">8</td><td align="right">21</td></tr><tr><td>firstReactRender</td><td align="right">19</td><td align="right">15</td><td align="right">40</td><td align="right">4</td><td align="right">20</td><td align="right">31</td></tr><tr><td>getState</td><td align="right">15</td><td align="right">6</td><td align="right">45</td><td align="right">8</td><td align="right">20</td><td align="right">31</td></tr><tr><td>initialActions</td><td align="right">0</td><td align="right">0</td><td align="right">1</td><td align="right">0</td><td align="right">0</td><td align="right">1</td></tr><tr><td>loadScripts</td><td align="right">809</td><td align="right">708</td><td align="right">963</td><td align="right">62</td><td align="right">857</td><td align="right">919</td></tr><tr><td>setupStore</td><td align="right">8</td><td align="right">4</td><td align="right">34</td><td align="right">4</td><td align="right">8</td><td align="right">11</td></tr><tr><td rowspan="11">Webpack</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">2193</td><td align="right">1753</td><td align="right">2403</td><td align="right">156</td><td align="right">2313</td><td align="right">2384</td></tr><tr><td>load</td><td align="right">1689</td><td align="right">1339</td><td align="right">1931</td><td align="right">118</td><td align="right">1775</td><td align="right">1840</td></tr><tr><td>domContentLoaded</td><td align="right">1681</td><td align="right">1335</td><td align="right">1920</td><td align="right">117</td><td align="right">1767</td><td align="right">1830</td></tr><tr><td>domInteractive</td><td align="right">16</td><td align="right">12</td><td align="right">53</td><td align="right">10</td><td align="right">13</td><td align="right">49</td></tr><tr><td>firstPaint</td><td align="right">167</td><td align="right">62</td><td align="right">528</td><td align="right">82</td><td align="right">184</td><td align="right">329</td></tr><tr><td>backgroundConnect</td><td align="right">30</td><td align="right">9</td><td align="right">231</td><td align="right">24</td><td align="right">36</td><td align="right">54</td></tr><tr><td>firstReactRender</td><td align="right">187</td><td align="right">55</td><td align="right">373</td><td align="right">102</td><td align="right">286</td><td align="right">340</td></tr><tr><td>getState</td><td align="right">15</td><td align="right">4</td><td align="right">221</td><td align="right">22</td><td align="right">17</td><td align="right">31</td></tr><tr><td>initialActions</td><td align="right">3</td><td align="right">1</td><td align="right">6</td><td align="right">1</td><td align="right">4</td><td align="right">5</td></tr><tr><td>loadScripts</td><td align="right">1676</td><td align="right">1334</td><td align="right">1917</td><td align="right">118</td><td align="right">1764</td><td align="right">1826</td></tr><tr><td>setupStore</td><td align="right">19</td><td align="right">6</td><td align="right">162</td><td align="right">17</td><td align="right">22</td><td align="right">35</td></tr><tr><td rowspan="22">Firefox</td><td rowspan="11">Browserify</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1363</td><td align="right">1164</td><td align="right">1820</td><td align="right">130</td><td align="right">1428</td><td align="right">1629</td></tr><tr><td>load</td><td align="right">1215</td><td align="right">1028</td><td align="right">1553</td><td align="right">120</td><td align="right">1289</td><td align="right">1472</td></tr><tr><td>domContentLoaded</td><td align="right">1215</td><td align="right">1028</td><td align="right">1553</td><td align="right">120</td><td align="right">1289</td><td align="right">1471</td></tr><tr><td>domInteractive</td><td align="right">97</td><td align="right">36</td><td align="right">186</td><td align="right">26</td><td align="right">107</td><td align="right">147</td></tr><tr><td>firstPaint</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td></tr><tr><td>backgroundConnect</td><td align="right">22</td><td align="right">14</td><td align="right">117</td><td align="right">14</td><td align="right">21</td><td align="right">49</td></tr><tr><td>firstReactRender</td><td align="right">23</td><td align="right">19</td><td align="right">52</td><td align="right">7</td><td align="right">22</td><td align="right">50</td></tr><tr><td>getState</td><td align="right">11</td><td align="right">4</td><td align="right">192</td><td align="right">21</td><td align="right">8</td><td align="right">29</td></tr><tr><td>initialActions</td><td align="right">0</td><td align="right">0</td><td align="right">1</td><td align="right">0</td><td align="right">0</td><td align="right">1</td></tr><tr><td>loadScripts</td><td align="right">1196</td><td align="right">1018</td><td align="right">1510</td><td align="right">117</td><td align="right">1270</td><td align="right">1453</td></tr><tr><td>setupStore</td><td align="right">6</td><td align="right">4</td><td align="right">35</td><td align="right">5</td><td align="right">6</td><td align="right">11</td></tr><tr><td rowspan="11">Webpack</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1509</td><td align="right">1349</td><td align="right">1908</td><td align="right">111</td><td align="right">1567</td><td align="right">1742</td></tr><tr><td>load</td><td align="right">1293</td><td align="right">1162</td><td align="right">1661</td><td align="right">94</td><td align="right">1346</td><td align="right">1479</td></tr><tr><td>domContentLoaded</td><td align="right">1293</td><td align="right">1161</td><td align="right">1661</td><td align="right">95</td><td align="right">1346</td><td align="right">1478</td></tr><tr><td>domInteractive</td><td align="right">79</td><td align="right">56</td><td align="right">162</td><td align="right">18</td><td align="right">84</td><td align="right">113</td></tr><tr><td>firstPaint</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td></tr><tr><td>backgroundConnect</td><td align="right">21</td><td align="right">14</td><td align="right">46</td><td align="right">5</td><td align="right">24</td><td align="right">33</td></tr><tr><td>firstReactRender</td><td align="right">35</td><td align="right">28</td><td align="right">55</td><td align="right">5</td><td align="right">37</td><td align="right">43</td></tr><tr><td>getState</td><td align="right">9</td><td align="right">5</td><td align="right">31</td><td align="right">5</td><td align="right">9</td><td align="right">28</td></tr><tr><td>initialActions</td><td align="right">1</td><td align="right">0</td><td align="right">2</td><td align="right">1</td><td align="right">1</td><td align="right">1</td></tr><tr><td>loadScripts</td><td align="right">1274</td><td align="right">1148</td><td align="right">1642</td><td align="right">93</td><td align="right">1328</td><td align="right">1457</td></tr><tr><td>setupStore</td><td align="right">13</td><td align="right">5</td><td align="right">296</td><td align="right">39</td><td align="right">8</td><td align="right">20</td></tr></tbody></table>Benchmark value 22 exceeds gate value 18 for chrome browserify home p95 backgroundConnect<br>
Benchmark value 2193 exceeds gate value 2192 for chrome webpack home mean uiStartup<br>
Benchmark value 29 exceeds gate value 24 for firefox browserify home p95 getState<br>
Benchmark value 14 exceeds gate value 13 for firefox webpack home mean setupStore<br>
<b>Sum of mean exceeds: 2ms | Sum of p95 exceeds: 9ms<br>
Sum of all benchmark exceeds: 11ms</b><br>
</details>

<details><summary>Bundle size diffs</summary><ul><li>background: 0 Bytes (0%)</li>
<li>ui: -5.04 KiB (-0.07%)</li>
<li>common: 0 Bytes (0%)</li></ul></details>


author_association: COLLABORATOR
user: login: metamaskbot
created_at: 2025-05-09T22:56:11Z
body: <details><summary>Builds ready [2c4a2cb]</summary><ul><li>builds: <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/builds/metamask-chrome-12.17.2.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/builds-mv2/metamask-firefox-12.17.2.zip">firefox</a></li>
<li>builds (beta): <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/14938718734/builds-beta/metamask-beta-chrome-12.17.2-beta.0.zip">chrome</a></li>
<li>builds (flask): <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/builds-flask/metamask-flask-chrome-12.17.2-flask.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/builds-flask-mv2/metamask-flask-firefox-12.17.2-flask.0.zip">firefox</a></li>
<li>builds (test): <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/builds-test/metamask-chrome-12.17.2.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/builds-test-mv2/metamask-firefox-12.17.2.zip">firefox</a></li>
<li>builds (test-flask): <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/builds-test-flask/metamask-flask-chrome-12.17.2-flask.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/builds-test-flask-mv2/metamask-flask-firefox-12.17.2-flask.0.zip">firefox</a></li>
<li>build viz: <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/build-viz/index.html">Build System</a></li>
<li>bundle size: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/14938718734/bundle-size/bundle_size.json">Bundle Size Stats</a></li>
<li>user-actions-benchmark: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/14938718734/benchmarks/benchmark-chrome-browserify-userActions.json">User Actions Stats</a></li>
<li>storybook: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/14938718734/storybook-build/index.html">Storybook</a></li>
<li>typescript migration: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/14938718734/ts-migration-dashboard/index.html">Dashboard</a></li>
<li><a href="https://app.circleci.com/pipelines/github/MetaMask/metamask-extension/jobs/4881865/artifacts/">all CircleCI artifacts</a></li>
<li><details>
       <summary>bundle viz:</summary>
       <ul><li>background: <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/background-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/background-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/background-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/background-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/background-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/background-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/background-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/background-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/background-8.html">8</a></li><li>common: <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/common-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/common-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/common-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/common-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/common-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/common-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/common-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/common-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/common-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/common-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/common-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/common-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/common-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/common-13.html">13</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/common-14.html">14</a></li><li>ui: <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/ui-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/ui-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/ui-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/ui-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/ui-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/ui-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/ui-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/ui-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/ui-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/ui-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/ui-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/ui-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/ui-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/ui-13.html">13</a></li><li>content-script: <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/content-script-0.html">0</a></li><li>offscreen: <a href="https://output.circle-artifacts.com/output/job/6129c1d7-79ea-4275-83a2-7a7e2eac7b45/artifacts/0/build-artifacts/source-map-explorer/offscreen-0.html">0</a></li></ul>
     </details></li></ul></details>

<details><summary>UI Startup Metrics (1213 ± 61 ms)</summary><table><thead><tr><th>Platform</th><th>BuildType</th><th>Page</th><th>Metric</th><th>Mean (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Std Dev (ms)</th><th>P 75 (ms)</th><th>P 95 (ms)</th></tr></thead><tbody><tr><td rowspan="22">Chrome</td><td rowspan="11">Browserify</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1213</td><td align="right">1097</td><td align="right">1432</td><td align="right">61</td><td align="right">1239</td><td align="right">1328</td></tr><tr><td>load</td><td align="right">1058</td><td align="right">945</td><td align="right">1263</td><td align="right">58</td><td align="right">1085</td><td align="right">1158</td></tr><tr><td>domContentLoaded</td><td align="right">1051</td><td align="right">939</td><td align="right">1257</td><td align="right">58</td><td align="right">1080</td><td align="right">1150</td></tr><tr><td>domInteractive</td><td align="right">16</td><td align="right">13</td><td align="right">29</td><td align="right">3</td><td align="right">16</td><td align="right">24</td></tr><tr><td>firstPaint</td><td align="right">720</td><td align="right">90</td><td align="right">1263</td><td align="right">426</td><td align="right">1075</td><td align="right">1155</td></tr><tr><td>backgroundConnect</td><td align="right">8</td><td align="right">4</td><td align="right">32</td><td align="right">5</td><td align="right">8</td><td align="right">21</td></tr><tr><td>firstReactRender</td><td align="right">20</td><td align="right">15</td><td align="right">53</td><td align="right">6</td><td align="right">20</td><td align="right">35</td></tr><tr><td>getState</td><td align="right">15</td><td align="right">5</td><td align="right">40</td><td align="right">9</td><td align="right">20</td><td align="right">36</td></tr><tr><td>initialActions</td><td align="right">0</td><td align="right">0</td><td align="right">3</td><td align="right">0</td><td align="right">0</td><td align="right">1</td></tr><tr><td>loadScripts</td><td align="right">808</td><td align="right">710</td><td align="right">1008</td><td align="right">57</td><td align="right">839</td><td align="right">909</td></tr><tr><td>setupStore</td><td align="right">8</td><td align="right">5</td><td align="right">28</td><td align="right">4</td><td align="right">8</td><td align="right">16</td></tr><tr><td rowspan="11">Webpack</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">2143</td><td align="right">1594</td><td align="right">2466</td><td align="right">184</td><td align="right">2294</td><td align="right">2371</td></tr><tr><td>load</td><td align="right">1652</td><td align="right">1224</td><td align="right">1935</td><td align="right">141</td><td align="right">1755</td><td align="right">1826</td></tr><tr><td>domContentLoaded</td><td align="right">1645</td><td align="right">1218</td><td align="right">1910</td><td align="right">140</td><td align="right">1746</td><td align="right">1818</td></tr><tr><td>domInteractive</td><td align="right">16</td><td align="right">11</td><td align="right">59</td><td align="right">10</td><td align="right">13</td><td align="right">45</td></tr><tr><td>firstPaint</td><td align="right">157</td><td align="right">62</td><td align="right">498</td><td align="right">55</td><td align="right">169</td><td align="right">244</td></tr><tr><td>backgroundConnect</td><td align="right">29</td><td align="right">9</td><td align="right">124</td><td align="right">17</td><td align="right">34</td><td align="right">52</td></tr><tr><td>firstReactRender</td><td align="right">172</td><td align="right">53</td><td align="right">358</td><td align="right">106</td><td align="right">293</td><td align="right">344</td></tr><tr><td>getState</td><td align="right">22</td><td align="right">4</td><td align="right">327</td><td align="right">50</td><td align="right">17</td><td align="right">38</td></tr><tr><td>initialActions</td><td align="right">3</td><td align="right">1</td><td align="right">12</td><td align="right">1</td><td align="right">4</td><td align="right">5</td></tr><tr><td>loadScripts</td><td align="right">1640</td><td align="right">1215</td><td align="right">1886</td><td align="right">140</td><td align="right">1743</td><td align="right">1815</td></tr><tr><td>setupStore</td><td align="right">26</td><td align="right">6</td><td align="right">333</td><td align="right">48</td><td align="right">23</td><td align="right">37</td></tr><tr><td rowspan="22">Firefox</td><td rowspan="11">Browserify</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1347</td><td align="right">1162</td><td align="right">1681</td><td align="right">122</td><td align="right">1399</td><td align="right">1664</td></tr><tr><td>load</td><td align="right">1198</td><td align="right">1042</td><td align="right">1546</td><td align="right">111</td><td align="right">1255</td><td align="right">1486</td></tr><tr><td>domContentLoaded</td><td align="right">1198</td><td align="right">1042</td><td align="right">1545</td><td align="right">111</td><td align="right">1255</td><td align="right">1486</td></tr><tr><td>domInteractive</td><td align="right">100</td><td align="right">37</td><td align="right">199</td><td align="right">30</td><td align="right">114</td><td align="right">164</td></tr><tr><td>firstPaint</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td></tr><tr><td>backgroundConnect</td><td align="right">21</td><td align="right">13</td><td align="right">142</td><td align="right">14</td><td align="right">21</td><td align="right">29</td></tr><tr><td>firstReactRender</td><td align="right">24</td><td align="right">20</td><td align="right">56</td><td align="right">7</td><td align="right">24</td><td align="right">36</td></tr><tr><td>getState</td><td align="right">9</td><td align="right">4</td><td align="right">201</td><td align="right">19</td><td align="right">8</td><td align="right">11</td></tr><tr><td>initialActions</td><td align="right">0</td><td align="right">0</td><td align="right">1</td><td align="right">0</td><td align="right">0</td><td align="right">1</td></tr><tr><td>loadScripts</td><td align="right">1179</td><td align="right">1030</td><td align="right">1532</td><td align="right">109</td><td align="right">1239</td><td align="right">1467</td></tr><tr><td>setupStore</td><td align="right">9</td><td align="right">4</td><td align="right">210</td><td align="right">22</td><td align="right">6</td><td align="right">23</td></tr><tr><td rowspan="11">Webpack</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1554</td><td align="right">1361</td><td align="right">2133</td><td align="right">144</td><td align="right">1624</td><td align="right">1846</td></tr><tr><td>load</td><td align="right">1332</td><td align="right">1166</td><td align="right">1829</td><td align="right">127</td><td align="right">1410</td><td align="right">1591</td></tr><tr><td>domContentLoaded</td><td align="right">1332</td><td align="right">1165</td><td align="right">1829</td><td align="right">127</td><td align="right">1410</td><td align="right">1591</td></tr><tr><td>domInteractive</td><td align="right">80</td><td align="right">55</td><td align="right">142</td><td align="right">18</td><td align="right">88</td><td align="right">119</td></tr><tr><td>firstPaint</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td></tr><tr><td>backgroundConnect</td><td align="right">22</td><td align="right">13</td><td align="right">61</td><td align="right">8</td><td align="right">24</td><td align="right">41</td></tr><tr><td>firstReactRender</td><td align="right">35</td><td align="right">29</td><td align="right">52</td><td align="right">4</td><td align="right">37</td><td align="right">43</td></tr><tr><td>getState</td><td align="right">12</td><td align="right">4</td><td align="right">271</td><td align="right">27</td><td align="right">9</td><td align="right">26</td></tr><tr><td>initialActions</td><td align="right">0</td><td align="right">0</td><td align="right">1</td><td align="right">0</td><td align="right">1</td><td align="right">1</td></tr><tr><td>loadScripts</td><td align="right">1313</td><td align="right">1148</td><td align="right">1813</td><td align="right">127</td><td align="right">1387</td><td align="right">1571</td></tr><tr><td>setupStore</td><td align="right">11</td><td align="right">5</td><td align="right">274</td><td align="right">27</td><td align="right">8</td><td align="right">15</td></tr></tbody></table>Benchmark value 22 exceeds gate value 18 for chrome browserify home p95 backgroundConnect<br>
Benchmark value 36 exceeds gate value 33 for chrome browserify home p95 getState<br>
Benchmark value 10 exceeds gate value 9 for firefox browserify home mean setupStore<br>
Benchmark value 1664 exceeds gate value 1660 for firefox browserify home p95 uiStartup<br>
<b>Sum of mean exceeds: 1ms | Sum of p95 exceeds: 11ms<br>
Sum of all benchmark exceeds: 12ms</b><br>
</details>

<details><summary>Bundle size diffs</summary><ul><li>background: 0 Bytes (0%)</li>
<li>ui: -5.06 KiB (-0.07%)</li>
<li>common: 0 Bytes (0%)</li></ul></details>


author_association: COLLABORATOR
user: login: metamaskbot
created_at: 2025-05-13T16:05:32Z
body: :x: API Spec Test Failed. View the report [here](https://output.circle-artifacts.com/output/job/80aad267-c221-4b05-acaf-30c461213460/artifacts/0/html-report/index.html).
author_association: COLLABORATOR
user: login: metamaskbot
created_at: 2025-05-13T17:22:22Z
body: <details><summary>Builds ready [ce5af49]</summary><ul><li>builds: <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/builds/metamask-chrome-12.17.2.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/builds-mv2/metamask-firefox-12.17.2.zip">firefox</a></li>
<li>builds (beta): <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15002210788/builds-beta/metamask-beta-chrome-12.17.2-beta.0.zip">chrome</a></li>
<li>builds (flask): <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/builds-flask/metamask-flask-chrome-12.17.2-flask.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/builds-flask-mv2/metamask-flask-firefox-12.17.2-flask.0.zip">firefox</a></li>
<li>builds (test): <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/builds-test/metamask-chrome-12.17.2.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/builds-test-mv2/metamask-firefox-12.17.2.zip">firefox</a></li>
<li>builds (test-flask): <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/builds-test-flask/metamask-flask-chrome-12.17.2-flask.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/builds-test-flask-mv2/metamask-flask-firefox-12.17.2-flask.0.zip">firefox</a></li>
<li>build viz: <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/build-viz/index.html">Build System</a></li>
<li>bundle size: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15002210788/bundle-size/bundle_size.json">Bundle Size Stats</a></li>
<li>user-actions-benchmark: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15002210788/benchmarks/benchmark-chrome-browserify-userActions.json">User Actions Stats</a></li>
<li>storybook: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15002210788/storybook-build/index.html">Storybook</a></li>
<li>typescript migration: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15002210788/ts-migration-dashboard/index.html">Dashboard</a></li>
<li><a href="https://app.circleci.com/pipelines/github/MetaMask/metamask-extension/jobs/4886893/artifacts/">all CircleCI artifacts</a></li>
<li><details>
       <summary>bundle viz:</summary>
       <ul><li>background: <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/background-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/background-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/background-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/background-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/background-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/background-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/background-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/background-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/background-8.html">8</a></li><li>common: <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/common-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/common-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/common-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/common-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/common-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/common-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/common-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/common-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/common-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/common-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/common-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/common-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/common-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/common-13.html">13</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/common-14.html">14</a></li><li>ui: <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/ui-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/ui-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/ui-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/ui-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/ui-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/ui-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/ui-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/ui-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/ui-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/ui-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/ui-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/ui-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/ui-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/ui-13.html">13</a></li><li>content-script: <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/content-script-0.html">0</a></li><li>offscreen: <a href="https://output.circle-artifacts.com/output/job/ff87a49a-8200-4bc8-9f3b-b180e1bb56ba/artifacts/0/build-artifacts/source-map-explorer/offscreen-0.html">0</a></li></ul>
     </details></li></ul></details>

<details><summary>UI Startup Metrics (1206 ± 70 ms)</summary><table><thead><tr><th>Platform</th><th>BuildType</th><th>Page</th><th>Metric</th><th>Mean (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Std Dev (ms)</th><th>P 75 (ms)</th><th>P 95 (ms)</th></tr></thead><tbody><tr><td rowspan="22">Chrome</td><td rowspan="11">Browserify</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1206</td><td align="right">1092</td><td align="right">1430</td><td align="right">70</td><td align="right">1263</td><td align="right">1342</td></tr><tr><td>load</td><td align="right">1054</td><td align="right">938</td><td align="right">1204</td><td align="right">64</td><td align="right">1106</td><td align="right">1171</td></tr><tr><td>domContentLoaded</td><td align="right">1047</td><td align="right">931</td><td align="right">1192</td><td align="right">65</td><td align="right">1099</td><td align="right">1166</td></tr><tr><td>domInteractive</td><td align="right">16</td><td align="right">13</td><td align="right">55</td><td align="right">5</td><td align="right">16</td><td align="right">25</td></tr><tr><td>firstPaint</td><td align="right">653</td><td align="right">80</td><td align="right">1208</td><td align="right">430</td><td align="right">1056</td><td align="right">1161</td></tr><tr><td>backgroundConnect</td><td align="right">8</td><td align="right">4</td><td align="right">29</td><td align="right">5</td><td align="right">7</td><td align="right">24</td></tr><tr><td>firstReactRender</td><td align="right">18</td><td align="right">15</td><td align="right">31</td><td align="right">3</td><td align="right">19</td><td align="right">24</td></tr><tr><td>getState</td><td align="right">14</td><td align="right">5</td><td align="right">68</td><td align="right">10</td><td align="right">19</td><td align="right">32</td></tr><tr><td>initialActions</td><td align="right">0</td><td align="right">0</td><td align="right">1</td><td align="right">0</td><td align="right">0</td><td align="right">1</td></tr><tr><td>loadScripts</td><td align="right">807</td><td align="right">688</td><td align="right">951</td><td align="right">62</td><td align="right">860</td><td align="right">923</td></tr><tr><td>setupStore</td><td align="right">7</td><td align="right">5</td><td align="right">19</td><td align="right">2</td><td align="right">8</td><td align="right">12</td></tr><tr><td rowspan="11">Webpack</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">2220</td><td align="right">1754</td><td align="right">2501</td><td align="right">151</td><td align="right">2338</td><td align="right">2429</td></tr><tr><td>load</td><td align="right">1731</td><td align="right">1370</td><td align="right">2154</td><td align="right">138</td><td align="right">1808</td><td align="right">1967</td></tr><tr><td>domContentLoaded</td><td align="right">1724</td><td align="right">1364</td><td align="right">2149</td><td align="right">138</td><td align="right">1798</td><td align="right">1955</td></tr><tr><td>domInteractive</td><td align="right">16</td><td align="right">11</td><td align="right">60</td><td align="right">10</td><td align="right">13</td><td align="right">48</td></tr><tr><td>firstPaint</td><td align="right">158</td><td align="right">61</td><td align="right">404</td><td align="right">57</td><td align="right">182</td><td align="right">271</td></tr><tr><td>backgroundConnect</td><td align="right">35</td><td align="right">10</td><td align="right">364</td><td align="right">46</td><td align="right">36</td><td align="right">93</td></tr><tr><td>firstReactRender</td><td align="right">159</td><td align="right">55</td><td align="right">370</td><td align="right">99</td><td align="right">273</td><td align="right">335</td></tr><tr><td>getState</td><td align="right">18</td><td align="right">4</td><td align="right">231</td><td align="right">33</td><td align="right">17</td><td align="right">36</td></tr><tr><td>initialActions</td><td align="right">3</td><td align="right">1</td><td align="right">6</td><td align="right">1</td><td align="right">3</td><td align="right">5</td></tr><tr><td>loadScripts</td><td align="right">1719</td><td align="right">1361</td><td align="right">2147</td><td align="right">139</td><td align="right">1795</td><td align="right">1948</td></tr><tr><td>setupStore</td><td align="right">24</td><td align="right">6</td><td align="right">309</td><td align="right">44</td><td align="right">23</td><td align="right">36</td></tr><tr><td rowspan="22">Firefox</td><td rowspan="11">Browserify</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1321</td><td align="right">1155</td><td align="right">1741</td><td align="right">135</td><td align="right">1357</td><td align="right">1661</td></tr><tr><td>load</td><td align="right">1180</td><td align="right">1011</td><td align="right">1587</td><td align="right">124</td><td align="right">1231</td><td align="right">1495</td></tr><tr><td>domContentLoaded</td><td align="right">1180</td><td align="right">1010</td><td align="right">1587</td><td align="right">124</td><td align="right">1231</td><td align="right">1495</td></tr><tr><td>domInteractive</td><td align="right">103</td><td align="right">39</td><td align="right">365</td><td align="right">43</td><td align="right">110</td><td align="right">152</td></tr><tr><td>firstPaint</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td></tr><tr><td>backgroundConnect</td><td align="right">23</td><td align="right">13</td><td align="right">227</td><td align="right">29</td><td align="right">21</td><td align="right">34</td></tr><tr><td>firstReactRender</td><td align="right">24</td><td align="right">19</td><td align="right">60</td><td align="right">8</td><td align="right">22</td><td align="right">51</td></tr><tr><td>getState</td><td align="right">8</td><td align="right">4</td><td align="right">74</td><td align="right">8</td><td align="right">8</td><td align="right">12</td></tr><tr><td>initialActions</td><td align="right">0</td><td align="right">0</td><td align="right">1</td><td align="right">0</td><td align="right">0</td><td align="right">1</td></tr><tr><td>loadScripts</td><td align="right">1160</td><td align="right">997</td><td align="right">1564</td><td align="right">119</td><td align="right">1203</td><td align="right">1427</td></tr><tr><td>setupStore</td><td align="right">9</td><td align="right">4</td><td align="right">233</td><td align="right">23</td><td align="right">6</td><td align="right">19</td></tr><tr><td rowspan="11">Webpack</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1594</td><td align="right">1410</td><td align="right">2328</td><td align="right">154</td><td align="right">1656</td><td align="right">1862</td></tr><tr><td>load</td><td align="right">1363</td><td align="right">1214</td><td align="right">1875</td><td align="right">134</td><td align="right">1426</td><td align="right">1633</td></tr><tr><td>domContentLoaded</td><td align="right">1362</td><td align="right">1214</td><td align="right">1874</td><td align="right">134</td><td align="right">1425</td><td align="right">1633</td></tr><tr><td>domInteractive</td><td align="right">83</td><td align="right">38</td><td align="right">185</td><td align="right">22</td><td align="right">90</td><td align="right">132</td></tr><tr><td>firstPaint</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td></tr><tr><td>backgroundConnect</td><td align="right">23</td><td align="right">16</td><td align="right">78</td><td align="right">9</td><td align="right">24</td><td align="right">46</td></tr><tr><td>firstReactRender</td><td align="right">36</td><td align="right">30</td><td align="right">52</td><td align="right">4</td><td align="right">38</td><td align="right">45</td></tr><tr><td>getState</td><td align="right">9</td><td align="right">5</td><td align="right">33</td><td align="right">5</td><td align="right">10</td><td align="right">16</td></tr><tr><td>initialActions</td><td align="right">0</td><td align="right">0</td><td align="right">1</td><td align="right">0</td><td align="right">1</td><td align="right">1</td></tr><tr><td>loadScripts</td><td align="right">1343</td><td align="right">1194</td><td align="right">1858</td><td align="right">134</td><td align="right">1406</td><td align="right">1614</td></tr><tr><td>setupStore</td><td align="right">11</td><td align="right">5</td><td align="right">357</td><td align="right">35</td><td align="right">9</td><td align="right">13</td></tr></tbody></table>Benchmark value 24 exceeds gate value 18 for chrome browserify home p95 backgroundConnect<br>
Benchmark value 2220 exceeds gate value 2192 for chrome webpack home mean uiStartup<br>
Benchmark value 1731 exceeds gate value 1711 for chrome webpack home mean load<br>
Benchmark value 1725 exceeds gate value 1704 for chrome webpack home mean domContentLoaded<br>
Benchmark value 1719 exceeds gate value 1699 for chrome webpack home mean loadScripts<br>
Benchmark value 93 exceeds gate value 90 for chrome webpack home p95 backgroundConnect<br>
Benchmark value 1661 exceeds gate value 1660 for firefox browserify home p95 uiStartup<br>
<b>Sum of mean exceeds: 89ms | Sum of p95 exceeds: 10ms<br>
Sum of all benchmark exceeds: 99ms</b><br>
</details>

<details><summary>Bundle size diffs</summary><ul><li>background: 0 Bytes (0%)</li>
<li>ui: -5.06 KiB (-0.07%)</li>
<li>common: 0 Bytes (0%)</li></ul></details>


author_association: COLLABORATOR
user: login: metamaskbot
created_at: 2025-05-14T22:50:35Z
body: <details><summary>Builds ready [b150814]</summary><ul><li>builds: <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/builds/metamask-chrome-12.17.3.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/builds-mv2/metamask-firefox-12.17.3.zip">firefox</a></li>
<li>builds (beta): <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15032193345/builds-beta/metamask-beta-chrome-12.17.3-beta.0.zip">chrome</a></li>
<li>builds (flask): <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/builds-flask/metamask-flask-chrome-12.17.3-flask.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/builds-flask-mv2/metamask-flask-firefox-12.17.3-flask.0.zip">firefox</a></li>
<li>builds (test): <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/builds-test/metamask-chrome-12.17.3.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/builds-test-mv2/metamask-firefox-12.17.3.zip">firefox</a></li>
<li>builds (test-flask): <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/builds-test-flask/metamask-flask-chrome-12.17.3-flask.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/builds-test-flask-mv2/metamask-flask-firefox-12.17.3-flask.0.zip">firefox</a></li>
<li>build viz: <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/build-viz/index.html">Build System</a></li>
<li>bundle size: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15032193345/bundle-size/bundle_size.json">Bundle Size Stats</a></li>
<li>user-actions-benchmark: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15032193345/benchmarks/benchmark-chrome-browserify-userActions.json">User Actions Stats</a></li>
<li>storybook: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15032193345/storybook-build/index.html">Storybook</a></li>
<li>typescript migration: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15032193345/ts-migration-dashboard/index.html">Dashboard</a></li>
<li><a href="https://app.circleci.com/pipelines/github/MetaMask/metamask-extension/jobs/4891513/artifacts/">all CircleCI artifacts</a></li>
<li><details>
       <summary>bundle viz:</summary>
       <ul><li>background: <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/background-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/background-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/background-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/background-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/background-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/background-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/background-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/background-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/background-8.html">8</a></li><li>common: <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/common-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/common-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/common-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/common-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/common-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/common-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/common-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/common-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/common-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/common-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/common-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/common-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/common-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/common-13.html">13</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/common-14.html">14</a></li><li>ui: <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/ui-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/ui-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/ui-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/ui-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/ui-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/ui-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/ui-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/ui-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/ui-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/ui-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/ui-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/ui-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/ui-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/ui-13.html">13</a></li><li>content-script: <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/content-script-0.html">0</a></li><li>offscreen: <a href="https://output.circle-artifacts.com/output/job/6be849b1-9830-4f67-aa15-c478f25c0e55/artifacts/0/build-artifacts/source-map-explorer/offscreen-0.html">0</a></li></ul>
     </details></li></ul></details>

<details><summary>UI Startup Metrics (1182 ± 64 ms)</summary><table><thead><tr><th>Platform</th><th>BuildType</th><th>Page</th><th>Metric</th><th>Mean (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Std Dev (ms)</th><th>P 75 (ms)</th><th>P 95 (ms)</th></tr></thead><tbody><tr><td rowspan="22">Chrome</td><td rowspan="11">Browserify</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1182</td><td align="right">1093</td><td align="right">1429</td><td align="right">64</td><td align="right">1202</td><td align="right">1321</td></tr><tr><td>load</td><td align="right">1020</td><td align="right">906</td><td align="right">1261</td><td align="right">62</td><td align="right">1061</td><td align="right">1127</td></tr><tr><td>domContentLoaded</td><td align="right">1013</td><td align="right">900</td><td align="right">1257</td><td align="right">63</td><td align="right">1055</td><td align="right">1121</td></tr><tr><td>domInteractive</td><td align="right">16</td><td align="right">14</td><td align="right">34</td><td align="right">3</td><td align="right">16</td><td align="right">24</td></tr><tr><td>firstPaint</td><td align="right">636</td><td align="right">91</td><td align="right">1190</td><td align="right">399</td><td align="right">1009</td><td align="right">1067</td></tr><tr><td>backgroundConnect</td><td align="right">8</td><td align="right">4</td><td align="right">26</td><td align="right">4</td><td align="right">7</td><td align="right">22</td></tr><tr><td>firstReactRender</td><td align="right">22</td><td align="right">15</td><td align="right">121</td><td align="right">15</td><td align="right">20</td><td align="right">49</td></tr><tr><td>getState</td><td align="right">15</td><td align="right">6</td><td align="right">62</td><td align="right">9</td><td align="right">20</td><td align="right">29</td></tr><tr><td>initialActions</td><td align="right">0</td><td align="right">0</td><td align="right">1</td><td align="right">0</td><td align="right">0</td><td align="right">1</td></tr><tr><td>loadScripts</td><td align="right">775</td><td align="right">657</td><td align="right">1006</td><td align="right">63</td><td align="right">814</td><td align="right">895</td></tr><tr><td>setupStore</td><td align="right">9</td><td align="right">5</td><td align="right">63</td><td align="right">7</td><td align="right">9</td><td align="right">17</td></tr><tr><td rowspan="11">Webpack</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">2173</td><td align="right">1741</td><td align="right">2530</td><td align="right">179</td><td align="right">2307</td><td align="right">2416</td></tr><tr><td>load</td><td align="right">1678</td><td align="right">1312</td><td align="right">1997</td><td align="right">146</td><td align="right">1771</td><td align="right">1894</td></tr><tr><td>domContentLoaded</td><td align="right">1671</td><td align="right">1306</td><td align="right">1993</td><td align="right">145</td><td align="right">1764</td><td align="right">1884</td></tr><tr><td>domInteractive</td><td align="right">16</td><td align="right">11</td><td align="right">57</td><td align="right">11</td><td align="right">13</td><td align="right">49</td></tr><tr><td>firstPaint</td><td align="right">162</td><td align="right">64</td><td align="right">310</td><td align="right">57</td><td align="right">181</td><td align="right">279</td></tr><tr><td>backgroundConnect</td><td align="right">28</td><td align="right">13</td><td align="right">75</td><td align="right">13</td><td align="right">34</td><td align="right">55</td></tr><tr><td>firstReactRender</td><td align="right">191</td><td align="right">55</td><td align="right">365</td><td align="right">114</td><td align="right">319</td><td align="right">355</td></tr><tr><td>getState</td><td align="right">12</td><td align="right">4</td><td align="right">35</td><td align="right">7</td><td align="right">15</td><td align="right">29</td></tr><tr><td>initialActions</td><td align="right">3</td><td align="right">1</td><td align="right">7</td><td align="right">1</td><td align="right">3</td><td align="right">5</td></tr><tr><td>loadScripts</td><td align="right">1666</td><td align="right">1304</td><td align="right">1971</td><td align="right">145</td><td align="right">1763</td><td align="right">1877</td></tr><tr><td>setupStore</td><td align="right">25</td><td align="right">7</td><td align="right">274</td><td align="right">38</td><td align="right">22</td><td align="right">58</td></tr><tr><td rowspan="22">Firefox</td><td rowspan="11">Browserify</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1329</td><td align="right">1147</td><td align="right">1720</td><td align="right">106</td><td align="right">1376</td><td align="right">1584</td></tr><tr><td>load</td><td align="right">1189</td><td align="right">1026</td><td align="right">1589</td><td align="right">107</td><td align="right">1242</td><td align="right">1366</td></tr><tr><td>domContentLoaded</td><td align="right">1189</td><td align="right">1026</td><td align="right">1589</td><td align="right">107</td><td align="right">1242</td><td align="right">1365</td></tr><tr><td>domInteractive</td><td align="right">101</td><td align="right">37</td><td align="right">179</td><td align="right">28</td><td align="right">116</td><td align="right">161</td></tr><tr><td>firstPaint</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td></tr><tr><td>backgroundConnect</td><td align="right">20</td><td align="right">14</td><td align="right">87</td><td align="right">8</td><td align="right">20</td><td align="right">31</td></tr><tr><td>firstReactRender</td><td align="right">24</td><td align="right">19</td><td align="right">63</td><td align="right">8</td><td align="right">22</td><td align="right">51</td></tr><tr><td>getState</td><td align="right">7</td><td align="right">4</td><td align="right">39</td><td align="right">4</td><td align="right">8</td><td align="right">11</td></tr><tr><td>initialActions</td><td align="right">0</td><td align="right">0</td><td align="right">1</td><td align="right">0</td><td align="right">0</td><td align="right">1</td></tr><tr><td>loadScripts</td><td align="right">1171</td><td align="right">1013</td><td align="right">1573</td><td align="right">106</td><td align="right">1226</td><td align="right">1351</td></tr><tr><td>setupStore</td><td align="right">8</td><td align="right">4</td><td align="right">185</td><td align="right">18</td><td align="right">6</td><td align="right">14</td></tr><tr><td rowspan="11">Webpack</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1519</td><td align="right">1363</td><td align="right">2151</td><td align="right">132</td><td align="right">1579</td><td align="right">1811</td></tr><tr><td>load</td><td align="right">1298</td><td align="right">1167</td><td align="right">1856</td><td align="right">112</td><td align="right">1338</td><td align="right">1499</td></tr><tr><td>domContentLoaded</td><td align="right">1298</td><td align="right">1167</td><td align="right">1855</td><td align="right">112</td><td align="right">1338</td><td align="right">1499</td></tr><tr><td>domInteractive</td><td align="right">81</td><td align="right">52</td><td align="right">145</td><td align="right">20</td><td align="right">89</td><td align="right">129</td></tr><tr><td>firstPaint</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td></tr><tr><td>backgroundConnect</td><td align="right">22</td><td align="right">15</td><td align="right">88</td><td align="right">10</td><td align="right">23</td><td align="right">40</td></tr><tr><td>firstReactRender</td><td align="right">35</td><td align="right">29</td><td align="right">53</td><td align="right">5</td><td align="right">38</td><td align="right">43</td></tr><tr><td>getState</td><td align="right">10</td><td align="right">4</td><td align="right">32</td><td align="right">7</td><td align="right">10</td><td align="right">29</td></tr><tr><td>initialActions</td><td align="right">0</td><td align="right">0</td><td align="right">3</td><td align="right">1</td><td align="right">1</td><td align="right">1</td></tr><tr><td>loadScripts</td><td align="right">1278</td><td align="right">1153</td><td align="right">1773</td><td align="right">109</td><td align="right">1320</td><td align="right">1481</td></tr><tr><td>setupStore</td><td align="right">14</td><td align="right">5</td><td align="right">273</td><td align="right">35</td><td align="right">8</td><td align="right">40</td></tr></tbody></table>Benchmark value 22 exceeds gate value 18 for chrome browserify home p95 backgroundConnect<br>
Benchmark value 49 exceeds gate value 45 for chrome browserify home p95 firstReactRender<br>
Benchmark value 14 exceeds gate value 13 for firefox webpack home mean setupStore<br>
Benchmark value 40 exceeds gate value 28 for firefox webpack home p95 setupStore<br>
<b>Sum of mean exceeds: 1ms | Sum of p95 exceeds: 20ms<br>
Sum of all benchmark exceeds: 21ms</b><br>
</details>

<details><summary>Bundle size diffs</summary><ul><li>background: 0 Bytes (0%)</li>
<li>ui: -5.9 KiB (-0.08%)</li>
<li>common: 0 Bytes (0%)</li></ul></details>


author_association: COLLABORATOR
user: login: metamaskbot
created_at: 2025-05-15T14:45:01Z
body: <details><summary>Builds ready [ddb126a]</summary><ul><li>builds: <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/builds/metamask-chrome-12.17.3.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/builds-mv2/metamask-firefox-12.17.3.zip">firefox</a></li>
<li>builds (beta): <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15047230817/builds-beta/metamask-beta-chrome-12.17.3-beta.0.zip">chrome</a></li>
<li>builds (flask): <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/builds-flask/metamask-flask-chrome-12.17.3-flask.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/builds-flask-mv2/metamask-flask-firefox-12.17.3-flask.0.zip">firefox</a></li>
<li>builds (test): <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/builds-test/metamask-chrome-12.17.3.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/builds-test-mv2/metamask-firefox-12.17.3.zip">firefox</a></li>
<li>builds (test-flask): <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/builds-test-flask/metamask-flask-chrome-12.17.3-flask.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/builds-test-flask-mv2/metamask-flask-firefox-12.17.3-flask.0.zip">firefox</a></li>
<li>build viz: <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/build-viz/index.html">Build System</a></li>
<li>bundle size: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15047230817/bundle-size/bundle_size.json">Bundle Size Stats</a></li>
<li>user-actions-benchmark: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15047230817/benchmarks/benchmark-chrome-browserify-userActions.json">User Actions Stats</a></li>
<li>storybook: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15047230817/storybook-build/index.html">Storybook</a></li>
<li>typescript migration: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15047230817/ts-migration-dashboard/index.html">Dashboard</a></li>
<li><a href="https://app.circleci.com/pipelines/github/MetaMask/metamask-extension/jobs/4893463/artifacts/">all CircleCI artifacts</a></li>
<li><details>
       <summary>bundle viz:</summary>
       <ul><li>background: <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/background-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/background-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/background-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/background-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/background-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/background-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/background-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/background-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/background-8.html">8</a></li><li>common: <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/common-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/common-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/common-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/common-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/common-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/common-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/common-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/common-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/common-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/common-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/common-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/common-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/common-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/common-13.html">13</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/common-14.html">14</a></li><li>ui: <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/ui-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/ui-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/ui-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/ui-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/ui-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/ui-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/ui-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/ui-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/ui-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/ui-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/ui-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/ui-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/ui-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/ui-13.html">13</a></li><li>content-script: <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/content-script-0.html">0</a></li><li>offscreen: <a href="https://output.circle-artifacts.com/output/job/2053b216-ca19-4206-afa1-fcf4c8318ac8/artifacts/0/build-artifacts/source-map-explorer/offscreen-0.html">0</a></li></ul>
     </details></li></ul></details>

<details><summary>UI Startup Metrics (1190 ± 63 ms)</summary><table><thead><tr><th>Platform</th><th>BuildType</th><th>Page</th><th>Metric</th><th>Mean (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Std Dev (ms)</th><th>P 75 (ms)</th><th>P 95 (ms)</th></tr></thead><tbody><tr><td rowspan="22">Chrome</td><td rowspan="11">Browserify</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1190</td><td align="right">1089</td><td align="right">1356</td><td align="right">63</td><td align="right">1231</td><td align="right">1323</td></tr><tr><td>load</td><td align="right">1042</td><td align="right">940</td><td align="right">1194</td><td align="right">60</td><td align="right">1081</td><td align="right">1153</td></tr><tr><td>domContentLoaded</td><td align="right">1034</td><td align="right">933</td><td align="right">1185</td><td align="right">61</td><td align="right">1075</td><td align="right">1148</td></tr><tr><td>domInteractive</td><td align="right">16</td><td align="right">13</td><td align="right">27</td><td align="right">3</td><td align="right">16</td><td align="right">25</td></tr><tr><td>firstPaint</td><td align="right">679</td><td align="right">70</td><td align="right">1194</td><td align="right">419</td><td align="right">1060</td><td align="right">1126</td></tr><tr><td>backgroundConnect</td><td align="right">8</td><td align="right">4</td><td align="right">39</td><td align="right">7</td><td align="right">8</td><td align="right">24</td></tr><tr><td>firstReactRender</td><td align="right">19</td><td align="right">14</td><td align="right">50</td><td align="right">5</td><td align="right">19</td><td align="right">30</td></tr><tr><td>getState</td><td align="right">13</td><td align="right">5</td><td align="right">44</td><td align="right">7</td><td align="right">17</td><td align="right">25</td></tr><tr><td>initialActions</td><td align="right">0</td><td align="right">0</td><td align="right">1</td><td align="right">0</td><td align="right">0</td><td align="right">1</td></tr><tr><td>loadScripts</td><td align="right">798</td><td align="right">681</td><td align="right">959</td><td align="right">60</td><td align="right">840</td><td align="right">913</td></tr><tr><td>setupStore</td><td align="right">7</td><td align="right">4</td><td align="right">21</td><td align="right">2</td><td align="right">8</td><td align="right">11</td></tr><tr><td rowspan="11">Webpack</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">2217</td><td align="right">1781</td><td align="right">2641</td><td align="right">183</td><td align="right">2352</td><td align="right">2482</td></tr><tr><td>load</td><td align="right">1752</td><td align="right">1361</td><td align="right">2200</td><td align="right">165</td><td align="right">1828</td><td align="right">2148</td></tr><tr><td>domContentLoaded</td><td align="right">1742</td><td align="right">1357</td><td align="right">2196</td><td align="right">160</td><td align="right">1818</td><td align="right">2058</td></tr><tr><td>domInteractive</td><td align="right">16</td><td align="right">12</td><td align="right">65</td><td align="right">10</td><td align="right">14</td><td align="right">41</td></tr><tr><td>firstPaint</td><td align="right">158</td><td align="right">67</td><td align="right">471</td><td align="right">59</td><td align="right">175</td><td align="right">258</td></tr><tr><td>backgroundConnect</td><td align="right">33</td><td align="right">9</td><td align="right">323</td><td align="right">39</td><td align="right">37</td><td align="right">66</td></tr><tr><td>firstReactRender</td><td align="right">148</td><td align="right">44</td><td align="right">438</td><td align="right">106</td><td align="right">274</td><td align="right">325</td></tr><tr><td>getState</td><td align="right">13</td><td align="right">5</td><td align="right">55</td><td align="right">8</td><td align="right">15</td><td align="right">32</td></tr><tr><td>initialActions</td><td align="right">3</td><td align="right">1</td><td align="right">6</td><td align="right">1</td><td align="right">3</td><td align="right">5</td></tr><tr><td>loadScripts</td><td align="right">1737</td><td align="right">1355</td><td align="right">2195</td><td align="right">159</td><td align="right">1814</td><td align="right">2034</td></tr><tr><td>setupStore</td><td align="right">24</td><td align="right">7</td><td align="right">327</td><td align="right">39</td><td align="right">23</td><td align="right">36</td></tr><tr><td rowspan="22">Firefox</td><td rowspan="11">Browserify</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1332</td><td align="right">1163</td><td align="right">1727</td><td align="right">107</td><td align="right">1380</td><td align="right">1581</td></tr><tr><td>load</td><td align="right">1191</td><td align="right">1037</td><td align="right">1571</td><td align="right">102</td><td align="right">1237</td><td align="right">1401</td></tr><tr><td>domContentLoaded</td><td align="right">1191</td><td align="right">1036</td><td align="right">1570</td><td align="right">102</td><td align="right">1237</td><td align="right">1401</td></tr><tr><td>domInteractive</td><td align="right">104</td><td align="right">40</td><td align="right">231</td><td align="right">32</td><td align="right">113</td><td align="right">171</td></tr><tr><td>firstPaint</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td></tr><tr><td>backgroundConnect</td><td align="right">21</td><td align="right">14</td><td align="right">61</td><td align="right">8</td><td align="right">24</td><td align="right">33</td></tr><tr><td>firstReactRender</td><td align="right">23</td><td align="right">20</td><td align="right">56</td><td align="right">6</td><td align="right">22</td><td align="right">29</td></tr><tr><td>getState</td><td align="right">7</td><td align="right">4</td><td align="right">27</td><td align="right">2</td><td align="right">8</td><td align="right">10</td></tr><tr><td>initialActions</td><td align="right">0</td><td align="right">0</td><td align="right">1</td><td align="right">0</td><td align="right">0</td><td align="right">1</td></tr><tr><td>loadScripts</td><td align="right">1173</td><td align="right">1019</td><td align="right">1548</td><td align="right">101</td><td align="right">1219</td><td align="right">1382</td></tr><tr><td>setupStore</td><td align="right">10</td><td align="right">4</td><td align="right">190</td><td align="right">20</td><td align="right">6</td><td align="right">33</td></tr><tr><td rowspan="11">Webpack</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1600</td><td align="right">1380</td><td align="right">2147</td><td align="right">166</td><td align="right">1672</td><td align="right">2012</td></tr><tr><td>load</td><td align="right">1374</td><td align="right">1176</td><td align="right">1938</td><td align="right">157</td><td align="right">1444</td><td align="right">1733</td></tr><tr><td>domContentLoaded</td><td align="right">1373</td><td align="right">1176</td><td align="right">1938</td><td align="right">157</td><td align="right">1444</td><td align="right">1732</td></tr><tr><td>domInteractive</td><td align="right">82</td><td align="right">35</td><td align="right">175</td><td align="right">22</td><td align="right">92</td><td align="right">135</td></tr><tr><td>firstPaint</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td></tr><tr><td>backgroundConnect</td><td align="right">22</td><td align="right">15</td><td align="right">76</td><td align="right">7</td><td align="right">23</td><td align="right">29</td></tr><tr><td>firstReactRender</td><td align="right">37</td><td align="right">30</td><td align="right">64</td><td align="right">6</td><td align="right">38</td><td align="right">48</td></tr><tr><td>getState</td><td align="right">10</td><td align="right">6</td><td align="right">41</td><td align="right">7</td><td align="right">10</td><td align="right">32</td></tr><tr><td>initialActions</td><td align="right">0</td><td align="right">0</td><td align="right">1</td><td align="right">0</td><td align="right">1</td><td align="right">1</td></tr><tr><td>loadScripts</td><td align="right">1354</td><td align="right">1157</td><td align="right">1921</td><td align="right">157</td><td align="right">1420</td><td align="right">1705</td></tr><tr><td>setupStore</td><td align="right">9</td><td align="right">5</td><td align="right">68</td><td align="right">7</td><td align="right">9</td><td align="right">15</td></tr></tbody></table>cc: @HowardBraham<br>
Benchmark value 24 exceeds gate value 18 for chrome browserify home p95 backgroundConnect<br>
Benchmark value 2217 exceeds gate value 2192 for chrome webpack home mean uiStartup<br>
Benchmark value 1752 exceeds gate value 1711 for chrome webpack home mean load<br>
Benchmark value 1743 exceeds gate value 1704 for chrome webpack home mean domContentLoaded<br>
Benchmark value 1738 exceeds gate value 1699 for chrome webpack home mean loadScripts<br>
Benchmark value 2483 exceeds gate value 2454 for chrome webpack home p95 uiStartup<br>
Benchmark value 2148 exceeds gate value 2030 for chrome webpack home p95 load<br>
Benchmark value 2058 exceeds gate value 2005 for chrome webpack home p95 domContentLoaded<br>
Benchmark value 2034 exceeds gate value 1970 for chrome webpack home p95 loadScripts<br>
Benchmark value 10 exceeds gate value 9 for firefox browserify home mean setupStore<br>
Benchmark value 33 exceeds gate value 27 for firefox browserify home p95 setupStore<br>
Benchmark value 2012 exceeds gate value 1935 for firefox webpack home p95 uiStartup<br>
Benchmark value 1733 exceeds gate value 1660 for firefox webpack home p95 load<br>
Benchmark value 1732 exceeds gate value 1660 for firefox webpack home p95 domContentLoaded<br>
Benchmark value 1705 exceeds gate value 1630 for firefox webpack home p95 loadScripts<br>
<b>Sum of mean exceeds: 145ms | Sum of p95 exceeds: 573ms<br>
Sum of all benchmark exceeds: 718ms</b><br>
</details>

<details><summary>Bundle size diffs</summary><ul><li>background: 0 Bytes (0%)</li>
<li>ui: -5.9 KiB (-0.08%)</li>
<li>common: 0 Bytes (0%)</li></ul></details>


author_association: COLLABORATOR
user: login: github-actions[bot]
created_at: 2025-05-16T14:40:44Z
body: **CLA Signature Action:** All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes.
author_association: CONTRIBUTOR
user: login: metamaskbot
created_at: 2025-05-16T19:48:41Z
body: <details><summary>Builds ready [c106be2]</summary><ul><li>builds: <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/builds/metamask-chrome-12.17.3.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/builds-mv2/metamask-firefox-12.17.3.zip">firefox</a></li>
<li>builds (beta): <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15075770586/builds-beta/metamask-beta-chrome-12.17.3-beta.0.zip">chrome</a></li>
<li>builds (flask): <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/builds-flask/metamask-flask-chrome-12.17.3-flask.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/builds-flask-mv2/metamask-flask-firefox-12.17.3-flask.0.zip">firefox</a></li>
<li>builds (test): <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/builds-test/metamask-chrome-12.17.3.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/builds-test-mv2/metamask-firefox-12.17.3.zip">firefox</a></li>
<li>builds (test-flask): <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/builds-test-flask/metamask-flask-chrome-12.17.3-flask.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/builds-test-flask-mv2/metamask-flask-firefox-12.17.3-flask.0.zip">firefox</a></li>
<li>build viz: <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/build-viz/index.html">Build System</a></li>
<li>bundle size: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15075770586/bundle-size/bundle_size.json">Bundle Size Stats</a></li>
<li>user-actions-benchmark: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15075770586/benchmarks/benchmark-chrome-browserify-userActions.json">User Actions Stats</a></li>
<li>storybook: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15075770586/storybook-build/index.html">Storybook</a></li>
<li>typescript migration: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15075770586/ts-migration-dashboard/index.html">Dashboard</a></li>
<li><a href="https://app.circleci.com/pipelines/github/MetaMask/metamask-extension/jobs/4898137/artifacts/">all CircleCI artifacts</a></li>
<li><details>
       <summary>bundle viz:</summary>
       <ul><li>background: <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/background-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/background-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/background-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/background-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/background-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/background-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/background-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/background-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/background-8.html">8</a></li><li>common: <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/common-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/common-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/common-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/common-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/common-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/common-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/common-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/common-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/common-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/common-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/common-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/common-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/common-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/common-13.html">13</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/common-14.html">14</a></li><li>ui: <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/ui-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/ui-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/ui-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/ui-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/ui-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/ui-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/ui-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/ui-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/ui-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/ui-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/ui-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/ui-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/ui-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/ui-13.html">13</a></li><li>content-script: <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/content-script-0.html">0</a></li><li>offscreen: <a href="https://output.circle-artifacts.com/output/job/da34e6b2-e917-4772-b4f1-0151b75bd43e/artifacts/0/build-artifacts/source-map-explorer/offscreen-0.html">0</a></li></ul>
     </details></li></ul></details>

<details><summary>UI Startup Metrics (1208 ± 66 ms)</summary><table><thead><tr><th>Platform</th><th>BuildType</th><th>Page</th><th>Metric</th><th>Mean (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Std Dev (ms)</th><th>P 75 (ms)</th><th>P 95 (ms)</th></tr></thead><tbody><tr><td rowspan="22">Chrome</td><td rowspan="11">Browserify</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1208</td><td align="right">1112</td><td align="right">1427</td><td align="right">66</td><td align="right">1234</td><td align="right">1359</td></tr><tr><td>load</td><td align="right">1044</td><td align="right">941</td><td align="right">1266</td><td align="right">61</td><td align="right">1069</td><td align="right">1190</td></tr><tr><td>domContentLoaded</td><td align="right">1038</td><td align="right">936</td><td align="right">1261</td><td align="right">61</td><td align="right">1063</td><td align="right">1184</td></tr><tr><td>domInteractive</td><td align="right">16</td><td align="right">13</td><td align="right">42</td><td align="right">4</td><td align="right">16</td><td align="right">24</td></tr><tr><td>firstPaint</td><td align="right">706</td><td align="right">140</td><td align="right">1242</td><td align="right">413</td><td align="right">1051</td><td align="right">1124</td></tr><tr><td>backgroundConnect</td><td align="right">8</td><td align="right">4</td><td align="right">35</td><td align="right">5</td><td align="right">8</td><td align="right">23</td></tr><tr><td>firstReactRender</td><td align="right">19</td><td align="right">15</td><td align="right">39</td><td align="right">4</td><td align="right">19</td><td align="right">29</td></tr><tr><td>getState</td><td align="right">13</td><td align="right">6</td><td align="right">40</td><td align="right">7</td><td align="right">20</td><td align="right">26</td></tr><tr><td>initialActions</td><td align="right">0</td><td align="right">0</td><td align="right">1</td><td align="right">0</td><td align="right">0</td><td align="right">1</td></tr><tr><td>loadScripts</td><td align="right">800</td><td align="right">702</td><td align="right">1022</td><td align="right">60</td><td align="right">824</td><td align="right">948</td></tr><tr><td>setupStore</td><td align="right">7</td><td align="right">5</td><td align="right">16</td><td align="right">2</td><td align="right">8</td><td align="right">11</td></tr><tr><td rowspan="11">Webpack</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">2301</td><td align="right">1820</td><td align="right">2858</td><td align="right">180</td><td align="right">2450</td><td align="right">2535</td></tr><tr><td>load</td><td align="right">1799</td><td align="right">1407</td><td align="right">2262</td><td align="right">181</td><td align="right">1915</td><td align="right">2179</td></tr><tr><td>domContentLoaded</td><td align="right">1791</td><td align="right">1403</td><td align="right">2257</td><td align="right">180</td><td align="right">1908</td><td align="right">2174</td></tr><tr><td>domInteractive</td><td align="right">17</td><td align="right">12</td><td align="right">65</td><td align="right">10</td><td align="right">14</td><td align="right">45</td></tr><tr><td>firstPaint</td><td align="right">179</td><td align="right">65</td><td align="right">427</td><td align="right">68</td><td align="right">218</td><td align="right">302</td></tr><tr><td>backgroundConnect</td><td align="right">36</td><td align="right">10</td><td align="right">261</td><td align="right">34</td><td align="right">40</td><td align="right">95</td></tr><tr><td>firstReactRender</td><td align="right">140</td><td align="right">46</td><td align="right">350</td><td align="right">99</td><td align="right">245</td><td align="right">331</td></tr><tr><td>getState</td><td align="right">23</td><td align="right">5</td><td align="right">328</td><td align="right">46</td><td align="right">18</td><td align="right">56</td></tr><tr><td>initialActions</td><td align="right">3</td><td align="right">1</td><td align="right">13</td><td align="right">2</td><td align="right">4</td><td align="right">6</td></tr><tr><td>loadScripts</td><td align="right">1786</td><td align="right">1401</td><td align="right">2255</td><td align="right">181</td><td align="right">1905</td><td align="right">2171</td></tr><tr><td>setupStore</td><td align="right">34</td><td align="right">7</td><td align="right">337</td><td align="right">60</td><td align="right">25</td><td align="right">201</td></tr><tr><td rowspan="22">Firefox</td><td rowspan="11">Browserify</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1329</td><td align="right">1121</td><td align="right">1770</td><td align="right">134</td><td align="right">1407</td><td align="right">1656</td></tr><tr><td>load</td><td align="right">1179</td><td align="right">999</td><td align="right">1595</td><td align="right">121</td><td align="right">1254</td><td align="right">1415</td></tr><tr><td>domContentLoaded</td><td align="right">1179</td><td align="right">999</td><td align="right">1595</td><td align="right">121</td><td align="right">1254</td><td align="right">1414</td></tr><tr><td>domInteractive</td><td align="right">100</td><td align="right">36</td><td align="right">320</td><td align="right">35</td><td align="right">110</td><td align="right">162</td></tr><tr><td>firstPaint</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td></tr><tr><td>backgroundConnect</td><td align="right">22</td><td align="right">12</td><td align="right">192</td><td align="right">19</td><td align="right">20</td><td align="right">43</td></tr><tr><td>firstReactRender</td><td align="right">23</td><td align="right">19</td><td align="right">69</td><td align="right">8</td><td align="right">22</td><td align="right">49</td></tr><tr><td>getState</td><td align="right">9</td><td align="right">5</td><td align="right">205</td><td align="right">20</td><td align="right">8</td><td align="right">11</td></tr><tr><td>initialActions</td><td align="right">0</td><td align="right">0</td><td align="right">1</td><td align="right">0</td><td align="right">0</td><td align="right">1</td></tr><tr><td>loadScripts</td><td align="right">1160</td><td align="right">985</td><td align="right">1578</td><td align="right">116</td><td align="right">1236</td><td align="right">1382</td></tr><tr><td>setupStore</td><td align="right">6</td><td align="right">4</td><td align="right">35</td><td align="right">3</td><td align="right">6</td><td align="right">11</td></tr><tr><td rowspan="11">Webpack</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1572</td><td align="right">1361</td><td align="right">2078</td><td align="right">152</td><td align="right">1654</td><td align="right">1920</td></tr><tr><td>load</td><td align="right">1345</td><td align="right">1171</td><td align="right">1855</td><td align="right">145</td><td align="right">1430</td><td align="right">1725</td></tr><tr><td>domContentLoaded</td><td align="right">1345</td><td align="right">1171</td><td align="right">1855</td><td align="right">145</td><td align="right">1430</td><td align="right">1724</td></tr><tr><td>domInteractive</td><td align="right">79</td><td align="right">37</td><td align="right">149</td><td align="right">19</td><td align="right">83</td><td align="right">135</td></tr><tr><td>firstPaint</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td></tr><tr><td>backgroundConnect</td><td align="right">22</td><td align="right">14</td><td align="right">54</td><td align="right">7</td><td align="right">22</td><td align="right">41</td></tr><tr><td>firstReactRender</td><td align="right">34</td><td align="right">29</td><td align="right">49</td><td align="right">4</td><td align="right">36</td><td align="right">43</td></tr><tr><td>getState</td><td align="right">9</td><td align="right">5</td><td align="right">42</td><td align="right">6</td><td align="right">9</td><td align="right">26</td></tr><tr><td>initialActions</td><td align="right">0</td><td align="right">0</td><td align="right">1</td><td align="right">0</td><td align="right">1</td><td align="right">1</td></tr><tr><td>loadScripts</td><td align="right">1326</td><td align="right">1154</td><td align="right">1837</td><td align="right">144</td><td align="right">1410</td><td align="right">1705</td></tr><tr><td>setupStore</td><td align="right">10</td><td align="right">5</td><td align="right">223</td><td align="right">23</td><td align="right">8</td><td align="right">12</td></tr></tbody></table>cc: @HowardBraham<br>
Benchmark value 1191 exceeds gate value 1190 for chrome browserify home p95 load<br>
Benchmark value 1184 exceeds gate value 1180 for chrome browserify home p95 domContentLoaded<br>
Benchmark value 24 exceeds gate value 18 for chrome browserify home p95 backgroundConnect<br>
Benchmark value 949 exceeds gate value 940 for chrome browserify home p95 loadScripts<br>
Benchmark value 2302 exceeds gate value 2192 for chrome webpack home mean uiStartup<br>
Benchmark value 1799 exceeds gate value 1711 for chrome webpack home mean load<br>
Benchmark value 1792 exceeds gate value 1704 for chrome webpack home mean domContentLoaded<br>
Benchmark value 1786 exceeds gate value 1699 for chrome webpack home mean loadScripts<br>
Benchmark value 35 exceeds gate value 32 for chrome webpack home mean setupStore<br>
Benchmark value 2536 exceeds gate value 2454 for chrome webpack home p95 uiStartup<br>
Benchmark value 2179 exceeds gate value 2030 for chrome webpack home p95 load<br>
Benchmark value 2174 exceeds gate value 2005 for chrome webpack home p95 domContentLoaded<br>
Benchmark value 96 exceeds gate value 90 for chrome webpack home p95 backgroundConnect<br>
Benchmark value 2171 exceeds gate value 1970 for chrome webpack home p95 loadScripts<br>
Benchmark value 201 exceeds gate value 65 for chrome webpack home p95 setupStore<br>
Benchmark value 1725 exceeds gate value 1660 for firefox webpack home p95 load<br>
Benchmark value 1724 exceeds gate value 1660 for firefox webpack home p95 domContentLoaded<br>
Benchmark value 1705 exceeds gate value 1630 for firefox webpack home p95 loadScripts<br>
<b>Sum of mean exceeds: 376ms | Sum of p95 exceeds: 967ms<br>
Sum of all benchmark exceeds: 1343ms</b><br>
</details>

<details><summary>Bundle size diffs [🚨 Warning! Bundle size has increased!]</summary><ul><li>background: 2.32 KiB (0.04%)</li>
<li>ui: -1.35 KiB (-0.02%)</li>
<li>common: 1.86 KiB (0.02%)</li></ul></details>


author_association: COLLABORATOR
user: login: metamaskbot
created_at: 2025-05-19T20:58:00Z
body: <details><summary>Builds ready [4183caa]</summary><ul><li>builds: <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/builds/metamask-chrome-12.17.3.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/builds-mv2/metamask-firefox-12.17.3.zip">firefox</a></li>
<li>builds (beta): <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15122480526/builds-beta/metamask-beta-chrome-12.17.3-beta.0.zip">chrome</a></li>
<li>builds (flask): <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/builds-flask/metamask-flask-chrome-12.17.3-flask.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/builds-flask-mv2/metamask-flask-firefox-12.17.3-flask.0.zip">firefox</a></li>
<li>builds (test): <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/builds-test/metamask-chrome-12.17.3.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/builds-test-mv2/metamask-firefox-12.17.3.zip">firefox</a></li>
<li>builds (test-flask): <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/builds-test-flask/metamask-flask-chrome-12.17.3-flask.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/builds-test-flask-mv2/metamask-flask-firefox-12.17.3-flask.0.zip">firefox</a></li>
<li>build viz: <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/build-viz/index.html">Build System</a></li>
<li>bundle size: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15122480526/bundle-size/bundle_size.json">Bundle Size Stats</a></li>
<li>user-actions-benchmark: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15122480526/benchmarks/benchmark-chrome-browserify-userActions.json">User Actions Stats</a></li>
<li>storybook: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15122480526/storybook-build/index.html">Storybook</a></li>
<li>typescript migration: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15122480526/ts-migration-dashboard/index.html">Dashboard</a></li>
<li><a href="https://app.circleci.com/pipelines/github/MetaMask/metamask-extension/jobs/4900794/artifacts/">all CircleCI artifacts</a></li>
<li><details>
       <summary>bundle viz:</summary>
       <ul><li>background: <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/background-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/background-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/background-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/background-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/background-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/background-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/background-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/background-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/background-8.html">8</a></li><li>common: <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/common-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/common-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/common-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/common-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/common-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/common-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/common-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/common-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/common-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/common-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/common-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/common-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/common-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/common-13.html">13</a></li><li>ui: <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/ui-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/ui-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/ui-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/ui-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/ui-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/ui-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/ui-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/ui-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/ui-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/ui-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/ui-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/ui-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/ui-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/ui-13.html">13</a></li><li>content-script: <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/content-script-0.html">0</a></li><li>offscreen: <a href="https://output.circle-artifacts.com/output/job/cddd4997-f36d-47a9-ae7b-4c397d67b32b/artifacts/0/build-artifacts/source-map-explorer/offscreen-0.html">0</a></li></ul>
     </details></li></ul></details>

<details><summary>UI Startup Metrics (1205 ± 76 ms)</summary><table><thead><tr><th>Platform</th><th>BuildType</th><th>Page</th><th>Metric</th><th>Mean (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Std Dev (ms)</th><th>P 75 (ms)</th><th>P 95 (ms)</th></tr></thead><tbody><tr><td rowspan="22">Chrome</td><td rowspan="11">Browserify</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1205</td><td align="right">1058</td><td align="right">1592</td><td align="right">76</td><td align="right">1247</td><td align="right">1316</td></tr><tr><td>load</td><td align="right">1039</td><td align="right">913</td><td align="right">1301</td><td align="right">68</td><td align="right">1085</td><td align="right">1142</td></tr><tr><td>domContentLoaded</td><td align="right">1032</td><td align="right">909</td><td align="right">1294</td><td align="right">69</td><td align="right">1079</td><td align="right">1137</td></tr><tr><td>domInteractive</td><td align="right">15</td><td align="right">13</td><td align="right">31</td><td align="right">3</td><td align="right">15</td><td align="right">23</td></tr><tr><td>firstPaint</td><td align="right">734</td><td align="right">83</td><td align="right">1300</td><td align="right">409</td><td align="right">1067</td><td align="right">1132</td></tr><tr><td>backgroundConnect</td><td align="right">8</td><td align="right">4</td><td align="right">30</td><td align="right">5</td><td align="right">8</td><td align="right">22</td></tr><tr><td>firstReactRender</td><td align="right">18</td><td align="right">14</td><td align="right">33</td><td align="right">3</td><td align="right">19</td><td align="right">25</td></tr><tr><td>getState</td><td align="right">14</td><td align="right">5</td><td align="right">46</td><td align="right">8</td><td align="right">20</td><td align="right">26</td></tr><tr><td>initialActions</td><td align="right">0</td><td align="right">0</td><td align="right">1</td><td align="right">0</td><td align="right">0</td><td align="right">1</td></tr><tr><td>loadScripts</td><td align="right">796</td><td align="right">679</td><td align="right">1050</td><td align="right">68</td><td align="right">842</td><td align="right">903</td></tr><tr><td>setupStore</td><td align="right">7</td><td align="right">5</td><td align="right">19</td><td align="right">2</td><td align="right">8</td><td align="right">12</td></tr><tr><td rowspan="11">Webpack</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">2152</td><td align="right">1672</td><td align="right">2637</td><td align="right">220</td><td align="right">2311</td><td align="right">2483</td></tr><tr><td>load</td><td align="right">1656</td><td align="right">1310</td><td align="right">2112</td><td align="right">165</td><td align="right">1785</td><td align="right">1882</td></tr><tr><td>domContentLoaded</td><td align="right">1650</td><td align="right">1306</td><td align="right">2107</td><td align="right">164</td><td align="right">1780</td><td align="right">1875</td></tr><tr><td>domInteractive</td><td align="right">15</td><td align="right">11</td><td align="right">81</td><td align="right">10</td><td align="right">13</td><td align="right">37</td></tr><tr><td>firstPaint</td><td align="right">168</td><td align="right">62</td><td align="right">387</td><td align="right">62</td><td align="right">195</td><td align="right">297</td></tr><tr><td>backgroundConnect</td><td align="right">25</td><td align="right">9</td><td align="right">349</td><td align="right">34</td><td align="right">27</td><td align="right">38</td></tr><tr><td>firstReactRender</td><td align="right">135</td><td align="right">43</td><td align="right">384</td><td align="right">97</td><td align="right">143</td><td align="right">332</td></tr><tr><td>getState</td><td align="right">12</td><td align="right">4</td><td align="right">52</td><td align="right">6</td><td align="right">14</td><td align="right">21</td></tr><tr><td>initialActions</td><td align="right">3</td><td align="right">1</td><td align="right">7</td><td align="right">1</td><td align="right">4</td><td align="right">5</td></tr><tr><td>loadScripts</td><td align="right">1643</td><td align="right">1235</td><td align="right">2098</td><td align="right">168</td><td align="right">1776</td><td align="right">1863</td></tr><tr><td>setupStore</td><td align="right">44</td><td align="right">7</td><td align="right">327</td><td align="right">85</td><td align="right">22</td><td align="right">311</td></tr><tr><td rowspan="22">Firefox</td><td rowspan="11">Browserify</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1302</td><td align="right">1124</td><td align="right">1814</td><td align="right">139</td><td align="right">1338</td><td align="right">1626</td></tr><tr><td>load</td><td align="right">1157</td><td align="right">986</td><td align="right">1639</td><td align="right">134</td><td align="right">1208</td><td align="right">1475</td></tr><tr><td>domContentLoaded</td><td align="right">1156</td><td align="right">986</td><td align="right">1639</td><td align="right">134</td><td align="right">1208</td><td align="right">1474</td></tr><tr><td>domInteractive</td><td align="right">100</td><td align="right">37</td><td align="right">239</td><td align="right">37</td><td align="right">108</td><td align="right">169</td></tr><tr><td>firstPaint</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td></tr><tr><td>backgroundConnect</td><td align="right">19</td><td align="right">13</td><td align="right">94</td><td align="right">9</td><td align="right">20</td><td align="right">26</td></tr><tr><td>firstReactRender</td><td align="right">25</td><td align="right">20</td><td align="right">58</td><td align="right">9</td><td align="right">24</td><td align="right">53</td></tr><tr><td>getState</td><td align="right">7</td><td align="right">4</td><td align="right">37</td><td align="right">4</td><td align="right">8</td><td align="right">9</td></tr><tr><td>initialActions</td><td align="right">0</td><td align="right">0</td><td align="right">1</td><td align="right">0</td><td align="right">0</td><td align="right">1</td></tr><tr><td>loadScripts</td><td align="right">1139</td><td align="right">972</td><td align="right">1625</td><td align="right">132</td><td align="right">1179</td><td align="right">1450</td></tr><tr><td>setupStore</td><td align="right">6</td><td align="right">4</td><td align="right">15</td><td align="right">2</td><td align="right">6</td><td align="right">7</td></tr><tr><td rowspan="11">Webpack</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1512</td><td align="right">1355</td><td align="right">1943</td><td align="right">113</td><td align="right">1565</td><td align="right">1750</td></tr><tr><td>load</td><td align="right">1291</td><td align="right">1157</td><td align="right">1696</td><td align="right">100</td><td align="right">1350</td><td align="right">1471</td></tr><tr><td>domContentLoaded</td><td align="right">1290</td><td align="right">1156</td><td align="right">1695</td><td align="right">100</td><td align="right">1349</td><td align="right">1471</td></tr><tr><td>domInteractive</td><td align="right">75</td><td align="right">43</td><td align="right">135</td><td align="right">15</td><td align="right">80</td><td align="right">118</td></tr><tr><td>firstPaint</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td></tr><tr><td>backgroundConnect</td><td align="right">23</td><td align="right">16</td><td align="right">78</td><td align="right">8</td><td align="right">24</td><td align="right">40</td></tr><tr><td>firstReactRender</td><td align="right">34</td><td align="right">28</td><td align="right">49</td><td align="right">4</td><td align="right">36</td><td align="right">45</td></tr><tr><td>getState</td><td align="right">10</td><td align="right">5</td><td align="right">86</td><td align="right">9</td><td align="right">9</td><td align="right">26</td></tr><tr><td>initialActions</td><td align="right">1</td><td align="right">0</td><td align="right">2</td><td align="right">1</td><td align="right">1</td><td align="right">1</td></tr><tr><td>loadScripts</td><td align="right">1270</td><td align="right">1138</td><td align="right">1673</td><td align="right">99</td><td align="right">1326</td><td align="right">1451</td></tr><tr><td>setupStore</td><td align="right">9</td><td align="right">5</td><td align="right">48</td><td align="right">7</td><td align="right">8</td><td align="right">22</td></tr></tbody></table>Benchmark value 22 exceeds gate value 18 for chrome browserify home p95 backgroundConnect<br>
Benchmark value 44 exceeds gate value 32 for chrome webpack home mean setupStore<br>
Benchmark value 2483 exceeds gate value 2454 for chrome webpack home p95 uiStartup<br>
Benchmark value 311 exceeds gate value 65 for chrome webpack home p95 setupStore<br>
<b>Sum of mean exceeds: 12ms | Sum of p95 exceeds: 279ms<br>
Sum of all benchmark exceeds: 291ms</b><br>
</details>

<details><summary>Bundle size diffs [🚨 Warning! Bundle size has increased!]</summary><ul><li>background: 39 Bytes (0%)</li>
<li>ui: -4.94 KiB (-0.07%)</li>
<li>common: 0 Bytes (0%)</li></ul></details>


author_association: COLLABORATOR
user: login: metamaskbot
created_at: 2025-05-20T16:02:50Z
body: <details><summary>Builds ready [9e4ea29]</summary><ul><li>builds: <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/builds/metamask-chrome-12.18.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/builds-mv2/metamask-firefox-12.18.0.zip">firefox</a></li>
<li>builds (beta): <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15141648865/builds-beta/metamask-beta-chrome-12.18.0-beta.0.zip">chrome</a></li>
<li>builds (flask): <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/builds-flask/metamask-flask-chrome-12.18.0-flask.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/builds-flask-mv2/metamask-flask-firefox-12.18.0-flask.0.zip">firefox</a></li>
<li>builds (test): <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/builds-test/metamask-chrome-12.18.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/builds-test-mv2/metamask-firefox-12.18.0.zip">firefox</a></li>
<li>builds (test-flask): <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/builds-test-flask/metamask-flask-chrome-12.18.0-flask.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/builds-test-flask-mv2/metamask-flask-firefox-12.18.0-flask.0.zip">firefox</a></li>
<li>build viz: <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/build-viz/index.html">Build System</a></li>
<li>bundle size: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15141648865/bundle-size/bundle_size.json">Bundle Size Stats</a></li>
<li>user-actions-benchmark: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15141648865/benchmarks/benchmark-chrome-browserify-userActions.json">User Actions Stats</a></li>
<li>storybook: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15141648865/storybook-build/index.html">Storybook</a></li>
<li>typescript migration: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15141648865/ts-migration-dashboard/index.html">Dashboard</a></li>
<li><a href="https://app.circleci.com/pipelines/github/MetaMask/metamask-extension/jobs/4902570/artifacts/">all CircleCI artifacts</a></li>
<li><details>
       <summary>bundle viz:</summary>
       <ul><li>background: <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/background-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/background-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/background-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/background-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/background-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/background-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/background-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/background-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/background-8.html">8</a></li><li>common: <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/common-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/common-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/common-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/common-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/common-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/common-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/common-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/common-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/common-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/common-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/common-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/common-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/common-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/common-13.html">13</a></li><li>ui: <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/ui-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/ui-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/ui-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/ui-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/ui-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/ui-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/ui-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/ui-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/ui-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/ui-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/ui-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/ui-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/ui-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/ui-13.html">13</a></li><li>content-script: <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/content-script-0.html">0</a></li><li>offscreen: <a href="https://output.circle-artifacts.com/output/job/6b9fed81-500b-4ffa-9d33-c447f1a69954/artifacts/0/build-artifacts/source-map-explorer/offscreen-0.html">0</a></li></ul>
     </details></li></ul></details>

<details><summary>UI Startup Metrics (1234 ± 79 ms)</summary><table><thead><tr><th>Platform</th><th>BuildType</th><th>Page</th><th>Metric</th><th>Mean (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Std Dev (ms)</th><th>P 75 (ms)</th><th>P 95 (ms)</th></tr></thead><tbody><tr><td rowspan="22">Chrome</td><td rowspan="11">Browserify</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1234</td><td align="right">1110</td><td align="right">1556</td><td align="right">79</td><td align="right">1280</td><td align="right">1373</td></tr><tr><td>load</td><td align="right">1061</td><td align="right">950</td><td align="right">1319</td><td align="right">72</td><td align="right">1098</td><td align="right">1216</td></tr><tr><td>domContentLoaded</td><td align="right">1054</td><td align="right">942</td><td align="right">1305</td><td align="right">72</td><td align="right">1089</td><td align="right">1204</td></tr><tr><td>domInteractive</td><td align="right">16</td><td align="right">13</td><td align="right">27</td><td align="right">3</td><td align="right">16</td><td align="right">23</td></tr><tr><td>firstPaint</td><td align="right">682</td><td align="right">80</td><td align="right">1313</td><td align="right">430</td><td align="right">1063</td><td align="right">1188</td></tr><tr><td>backgroundConnect</td><td align="right">8</td><td align="right">4</td><td align="right">26</td><td align="right">5</td><td align="right">8</td><td align="right">23</td></tr><tr><td>firstReactRender</td><td align="right">19</td><td align="right">16</td><td align="right">40</td><td align="right">3</td><td align="right">20</td><td align="right">25</td></tr><tr><td>getState</td><td align="right">15</td><td align="right">5</td><td align="right">79</td><td align="right">10</td><td align="right">20</td><td align="right">30</td></tr><tr><td>initialActions</td><td align="right">0</td><td align="right">0</td><td align="right">1</td><td align="right">0</td><td align="right">0</td><td align="right">1</td></tr><tr><td>loadScripts</td><td align="right">811</td><td align="right">702</td><td align="right">1055</td><td align="right">72</td><td align="right">849</td><td align="right">974</td></tr><tr><td>setupStore</td><td align="right">8</td><td align="right">5</td><td align="right">19</td><td align="right">2</td><td align="right">8</td><td align="right">13</td></tr><tr><td rowspan="11">Webpack</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">2120</td><td align="right">1658</td><td align="right">2510</td><td align="right">200</td><td align="right">2262</td><td align="right">2407</td></tr><tr><td>load</td><td align="right">1628</td><td align="right">1281</td><td align="right">1902</td><td align="right">147</td><td align="right">1724</td><td align="right">1846</td></tr><tr><td>domContentLoaded</td><td align="right">1623</td><td align="right">1278</td><td align="right">1898</td><td align="right">146</td><td align="right">1717</td><td align="right">1834</td></tr><tr><td>domInteractive</td><td align="right">15</td><td align="right">11</td><td align="right">61</td><td align="right">10</td><td align="right">13</td><td align="right">43</td></tr><tr><td>firstPaint</td><td align="right">173</td><td align="right">64</td><td align="right">1617</td><td align="right">161</td><td align="right">199</td><td align="right">290</td></tr><tr><td>backgroundConnect</td><td align="right">22</td><td align="right">9</td><td align="right">81</td><td align="right">10</td><td align="right">25</td><td align="right">43</td></tr><tr><td>firstReactRender</td><td align="right">139</td><td align="right">42</td><td align="right">346</td><td align="right">101</td><td align="right">143</td><td align="right">328</td></tr><tr><td>getState</td><td align="right">17</td><td align="right">4</td><td align="right">379</td><td align="right">48</td><td align="right">12</td><td align="right">27</td></tr><tr><td>initialActions</td><td align="right">6</td><td align="right">1</td><td align="right">297</td><td align="right">29</td><td align="right">3</td><td align="right">5</td></tr><tr><td>loadScripts</td><td align="right">1619</td><td align="right">1276</td><td align="right">1897</td><td align="right">145</td><td align="right">1714</td><td align="right">1823</td></tr><tr><td>setupStore</td><td align="right">36</td><td align="right">6</td><td align="right">314</td><td align="right">72</td><td align="right">19</td><td align="right">304</td></tr><tr><td rowspan="22">Firefox</td><td rowspan="11">Browserify</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1331</td><td align="right">1149</td><td align="right">1926</td><td align="right">132</td><td align="right">1412</td><td align="right">1581</td></tr><tr><td>load</td><td align="right">1180</td><td align="right">1020</td><td align="right">1690</td><td align="right">122</td><td align="right">1245</td><td align="right">1395</td></tr><tr><td>domContentLoaded</td><td align="right">1179</td><td align="right">1020</td><td align="right">1689</td><td align="right">122</td><td align="right">1245</td><td align="right">1395</td></tr><tr><td>domInteractive</td><td align="right">93</td><td align="right">37</td><td align="right">206</td><td align="right">31</td><td align="right">106</td><td align="right">158</td></tr><tr><td>firstPaint</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td></tr><tr><td>backgroundConnect</td><td align="right">25</td><td align="right">13</td><td align="right">262</td><td align="right">31</td><td align="right">21</td><td align="right">47</td></tr><tr><td>firstReactRender</td><td align="right">24</td><td align="right">19</td><td align="right">60</td><td align="right">7</td><td align="right">23</td><td align="right">41</td></tr><tr><td>getState</td><td align="right">10</td><td align="right">4</td><td align="right">199</td><td align="right">20</td><td align="right">8</td><td align="right">12</td></tr><tr><td>initialActions</td><td align="right">0</td><td align="right">0</td><td align="right">1</td><td align="right">0</td><td align="right">0</td><td align="right">1</td></tr><tr><td>loadScripts</td><td align="right">1157</td><td align="right">1006</td><td align="right">1555</td><td align="right">111</td><td align="right">1202</td><td align="right">1355</td></tr><tr><td>setupStore</td><td align="right">7</td><td align="right">4</td><td align="right">74</td><td align="right">8</td><td align="right">6</td><td align="right">17</td></tr><tr><td rowspan="11">Webpack</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1535</td><td align="right">1344</td><td align="right">2029</td><td align="right">137</td><td align="right">1621</td><td align="right">1797</td></tr><tr><td>load</td><td align="right">1299</td><td align="right">1149</td><td align="right">1738</td><td align="right">114</td><td align="right">1340</td><td align="right">1519</td></tr><tr><td>domContentLoaded</td><td align="right">1299</td><td align="right">1148</td><td align="right">1738</td><td align="right">114</td><td align="right">1340</td><td align="right">1518</td></tr><tr><td>domInteractive</td><td align="right">77</td><td align="right">36</td><td align="right">164</td><td align="right">20</td><td align="right">80</td><td align="right">124</td></tr><tr><td>firstPaint</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td></tr><tr><td>backgroundConnect</td><td align="right">22</td><td align="right">15</td><td align="right">77</td><td align="right">8</td><td align="right">24</td><td align="right">35</td></tr><tr><td>firstReactRender</td><td align="right">35</td><td align="right">29</td><td align="right">51</td><td align="right">4</td><td align="right">37</td><td align="right">44</td></tr><tr><td>getState</td><td align="right">14</td><td align="right">5</td><td align="right">238</td><td align="right">30</td><td align="right">10</td><td align="right">31</td></tr><tr><td>initialActions</td><td align="right">0</td><td align="right">0</td><td align="right">1</td><td align="right">0</td><td align="right">1</td><td align="right">1</td></tr><tr><td>loadScripts</td><td align="right">1279</td><td align="right">1135</td><td align="right">1716</td><td align="right">114</td><td align="right">1319</td><td align="right">1503</td></tr><tr><td>setupStore</td><td align="right">17</td><td align="right">5</td><td align="right">305</td><td align="right">41</td><td align="right">8</td><td align="right">73</td></tr></tbody></table>Benchmark value 16 exceeds gate value 15 for chrome browserify home mean getState<br>
Benchmark value 1373 exceeds gate value 1365 for chrome browserify home p95 uiStartup<br>
Benchmark value 1216 exceeds gate value 1190 for chrome browserify home p95 load<br>
Benchmark value 1204 exceeds gate value 1180 for chrome browserify home p95 domContentLoaded<br>
Benchmark value 1189 exceeds gate value 1180 for chrome browserify home p95 firstPaint<br>
Benchmark value 23 exceeds gate value 18 for chrome browserify home p95 backgroundConnect<br>
Benchmark value 975 exceeds gate value 940 for chrome browserify home p95 loadScripts<br>
Benchmark value 36 exceeds gate value 32 for chrome webpack home mean setupStore<br>
Benchmark value 304 exceeds gate value 65 for chrome webpack home p95 setupStore<br>
Benchmark value 17 exceeds gate value 13 for firefox webpack home mean setupStore<br>
Benchmark value 73 exceeds gate value 28 for firefox webpack home p95 setupStore<br>
<b>Sum of mean exceeds: 9ms | Sum of p95 exceeds: 391ms<br>
Sum of all benchmark exceeds: 400ms</b><br>
</details>

<details><summary>Bundle size diffs [🚨 Warning! Bundle size has increased!]</summary><ul><li>background: 39 Bytes (0%)</li>
<li>ui: -4.94 KiB (-0.07%)</li>
<li>common: 0 Bytes (0%)</li></ul></details>


author_association: COLLABORATOR
user: login: metamaskbot
created_at: 2025-05-22T15:00:58Z
body: <details><summary>Builds ready [6ac2898]</summary><ul><li>builds: <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/builds/metamask-chrome-12.18.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/builds-mv2/metamask-firefox-12.18.0.zip">firefox</a></li>
<li>builds (beta): <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15189270737/builds-beta/metamask-beta-chrome-12.18.0-beta.0.zip">chrome</a></li>
<li>builds (flask): <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/builds-flask/metamask-flask-chrome-12.18.0-flask.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/builds-flask-mv2/metamask-flask-firefox-12.18.0-flask.0.zip">firefox</a></li>
<li>builds (test): <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/builds-test/metamask-chrome-12.18.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/builds-test-mv2/metamask-firefox-12.18.0.zip">firefox</a></li>
<li>builds (test-flask): <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/builds-test-flask/metamask-flask-chrome-12.18.0-flask.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/builds-test-flask-mv2/metamask-flask-firefox-12.18.0-flask.0.zip">firefox</a></li>
<li>build viz: <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/build-viz/index.html">Build System</a></li>
<li>bundle size: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15189270737/bundle-size/bundle_size.json">Bundle Size Stats</a></li>
<li>user-actions-benchmark: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15189270737/benchmarks/benchmark-chrome-browserify-userActions.json">User Actions Stats</a></li>
<li>storybook: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15189270737/storybook-build/index.html">Storybook</a></li>
<li>typescript migration: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15189270737/ts-migration-dashboard/index.html">Dashboard</a></li>
<li><a href="https://app.circleci.com/pipelines/github/MetaMask/metamask-extension/jobs/4907354/artifacts/">all CircleCI artifacts</a></li>
<li><details>
       <summary>bundle viz:</summary>
       <ul><li>background: <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/background-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/background-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/background-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/background-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/background-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/background-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/background-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/background-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/background-8.html">8</a></li><li>common: <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/common-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/common-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/common-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/common-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/common-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/common-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/common-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/common-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/common-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/common-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/common-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/common-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/common-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/common-13.html">13</a></li><li>ui: <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/ui-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/ui-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/ui-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/ui-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/ui-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/ui-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/ui-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/ui-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/ui-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/ui-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/ui-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/ui-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/ui-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/ui-13.html">13</a></li><li>content-script: <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/content-script-0.html">0</a></li><li>offscreen: <a href="https://output.circle-artifacts.com/output/job/80f3170b-fa7e-4d1b-9f07-31042d924f3e/artifacts/0/build-artifacts/source-map-explorer/offscreen-0.html">0</a></li></ul>
     </details></li></ul></details>

<details><summary>UI Startup Metrics (1298 ± 91 ms)</summary><table><thead><tr><th>Platform</th><th>BuildType</th><th>Page</th><th>Metric</th><th>Mean (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Std Dev (ms)</th><th>P 75 (ms)</th><th>P 95 (ms)</th></tr></thead><tbody><tr><td rowspan="22">Chrome</td><td rowspan="11">Browserify</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1298</td><td align="right">1154</td><td align="right">1658</td><td align="right">91</td><td align="right">1346</td><td align="right">1462</td></tr><tr><td>load</td><td align="right">1116</td><td align="right">958</td><td align="right">1420</td><td align="right">88</td><td align="right">1177</td><td align="right">1275</td></tr><tr><td>domContentLoaded</td><td align="right">1108</td><td align="right">954</td><td align="right">1413</td><td align="right">88</td><td align="right">1173</td><td align="right">1264</td></tr><tr><td>domInteractive</td><td align="right">17</td><td align="right">14</td><td align="right">27</td><td align="right">3</td><td align="right">17</td><td align="right">25</td></tr><tr><td>firstPaint</td><td align="right">828</td><td align="right">166</td><td align="right">1434</td><td align="right">431</td><td align="right">1157</td><td align="right">1247</td></tr><tr><td>backgroundConnect</td><td align="right">9</td><td align="right">4</td><td align="right">29</td><td align="right">6</td><td align="right">9</td><td align="right">26</td></tr><tr><td>firstReactRender</td><td align="right">21</td><td align="right">16</td><td align="right">45</td><td align="right">6</td><td align="right">22</td><td align="right">36</td></tr><tr><td>getState</td><td align="right">16</td><td align="right">6</td><td align="right">61</td><td align="right">9</td><td align="right">22</td><td align="right">30</td></tr><tr><td>initialActions</td><td align="right">0</td><td align="right">0</td><td align="right">1</td><td align="right">0</td><td align="right">0</td><td align="right">1</td></tr><tr><td>loadScripts</td><td align="right">855</td><td align="right">715</td><td align="right">1151</td><td align="right">86</td><td align="right">920</td><td align="right">1009</td></tr><tr><td>setupStore</td><td align="right">8</td><td align="right">5</td><td align="right">17</td><td align="right">2</td><td align="right">9</td><td align="right">12</td></tr><tr><td rowspan="11">Webpack</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">2201</td><td align="right">1792</td><td align="right">2656</td><td align="right">195</td><td align="right">2330</td><td align="right">2537</td></tr><tr><td>load</td><td align="right">1717</td><td align="right">1394</td><td align="right">2283</td><td align="right">152</td><td align="right">1805</td><td align="right">1953</td></tr><tr><td>domContentLoaded</td><td align="right">1710</td><td align="right">1390</td><td align="right">2278</td><td align="right">151</td><td align="right">1800</td><td align="right">1944</td></tr><tr><td>domInteractive</td><td align="right">16</td><td align="right">12</td><td align="right">52</td><td align="right">9</td><td align="right">14</td><td align="right">46</td></tr><tr><td>firstPaint</td><td align="right">157</td><td align="right">67</td><td align="right">315</td><td align="right">59</td><td align="right">179</td><td align="right">295</td></tr><tr><td>backgroundConnect</td><td align="right">26</td><td align="right">9</td><td align="right">275</td><td align="right">27</td><td align="right">29</td><td align="right">47</td></tr><tr><td>firstReactRender</td><td align="right">162</td><td align="right">43</td><td align="right">353</td><td align="right">113</td><td align="right">288</td><td align="right">336</td></tr><tr><td>getState</td><td align="right">30</td><td align="right">4</td><td align="right">320</td><td align="right">67</td><td align="right">16</td><td align="right">266</td></tr><tr><td>initialActions</td><td align="right">3</td><td align="right">1</td><td align="right">8</td><td align="right">1</td><td align="right">4</td><td align="right">6</td></tr><tr><td>loadScripts</td><td align="right">1707</td><td align="right">1389</td><td align="right">2277</td><td align="right">149</td><td align="right">1798</td><td align="right">1933</td></tr><tr><td>setupStore</td><td align="right">30</td><td align="right">7</td><td align="right">321</td><td align="right">58</td><td align="right">21</td><td align="right">165</td></tr><tr><td rowspan="22">Firefox</td><td rowspan="11">Browserify</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1358</td><td align="right">1121</td><td align="right">1798</td><td align="right">129</td><td align="right">1441</td><td align="right">1566</td></tr><tr><td>load</td><td align="right">1197</td><td align="right">995</td><td align="right">1644</td><td align="right">127</td><td align="right">1258</td><td align="right">1426</td></tr><tr><td>domContentLoaded</td><td align="right">1196</td><td align="right">995</td><td align="right">1644</td><td align="right">127</td><td align="right">1258</td><td align="right">1426</td></tr><tr><td>domInteractive</td><td align="right">97</td><td align="right">38</td><td align="right">282</td><td align="right">34</td><td align="right">105</td><td align="right">172</td></tr><tr><td>firstPaint</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td></tr><tr><td>backgroundConnect</td><td align="right">21</td><td align="right">13</td><td align="right">57</td><td align="right">6</td><td align="right">22</td><td align="right">30</td></tr><tr><td>firstReactRender</td><td align="right">25</td><td align="right">20</td><td align="right">55</td><td align="right">6</td><td align="right">27</td><td align="right">35</td></tr><tr><td>getState</td><td align="right">10</td><td align="right">4</td><td align="right">207</td><td align="right">20</td><td align="right">8</td><td align="right">14</td></tr><tr><td>initialActions</td><td align="right">0</td><td align="right">0</td><td align="right">2</td><td align="right">0</td><td align="right">0</td><td align="right">1</td></tr><tr><td>loadScripts</td><td align="right">1179</td><td align="right">982</td><td align="right">1629</td><td align="right">127</td><td align="right">1240</td><td align="right">1409</td></tr><tr><td>setupStore</td><td align="right">10</td><td align="right">4</td><td align="right">196</td><td align="right">20</td><td align="right">7</td><td align="right">33</td></tr><tr><td rowspan="11">Webpack</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1580</td><td align="right">1350</td><td align="right">2104</td><td align="right">149</td><td align="right">1652</td><td align="right">1876</td></tr><tr><td>load</td><td align="right">1361</td><td align="right">1183</td><td align="right">1890</td><td align="right">144</td><td align="right">1450</td><td align="right">1640</td></tr><tr><td>domContentLoaded</td><td align="right">1361</td><td align="right">1183</td><td align="right">1890</td><td align="right">144</td><td align="right">1450</td><td align="right">1640</td></tr><tr><td>domInteractive</td><td align="right">79</td><td align="right">45</td><td align="right">146</td><td align="right">18</td><td align="right">86</td><td align="right">129</td></tr><tr><td>firstPaint</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td><td align="right">NaN</td></tr><tr><td>backgroundConnect</td><td align="right">22</td><td align="right">14</td><td align="right">49</td><td align="right">6</td><td align="right">23</td><td align="right">40</td></tr><tr><td>firstReactRender</td><td align="right">40</td><td align="right">28</td><td align="right">71</td><td align="right">6</td><td align="right">43</td><td align="right">49</td></tr><tr><td>getState</td><td align="right">10</td><td align="right">5</td><td align="right">56</td><td align="right">7</td><td align="right">10</td><td align="right">26</td></tr><tr><td>initialActions</td><td align="right">1</td><td align="right">0</td><td align="right">2</td><td align="right">1</td><td align="right">1</td><td align="right">1</td></tr><tr><td>loadScripts</td><td align="right">1341</td><td align="right">1168</td><td align="right">1869</td><td align="right">144</td><td align="right">1431</td><td align="right">1620</td></tr><tr><td>setupStore</td><td align="right">8</td><td align="right">5</td><td align="right">62</td><td align="right">6</td><td align="right">9</td><td align="right">12</td></tr></tbody></table>cc: @HowardBraham<br>
Benchmark value 1299 exceeds gate value 1234 for chrome browserify home mean uiStartup<br>
Benchmark value 1117 exceeds gate value 1070 for chrome browserify home mean load<br>
Benchmark value 1109 exceeds gate value 1061 for chrome browserify home mean domContentLoaded<br>
Benchmark value 828 exceeds gate value 800 for chrome browserify home mean firstPaint<br>
Benchmark value 17 exceeds gate value 15 for chrome browserify home mean getState<br>
Benchmark value 855 exceeds gate value 830 for chrome browserify home mean loadScripts<br>
Benchmark value 1462 exceeds gate value 1365 for chrome browserify home p95 uiStartup<br>
Benchmark value 1275 exceeds gate value 1190 for chrome browserify home p95 load<br>
Benchmark value 1265 exceeds gate value 1180 for chrome browserify home p95 domContentLoaded<br>
Benchmark value 1247 exceeds gate value 1180 for chrome browserify home p95 firstPaint<br>
Benchmark value 26 exceeds gate value 18 for chrome browserify home p95 backgroundConnect<br>
Benchmark value 1010 exceeds gate value 940 for chrome browserify home p95 loadScripts<br>
Benchmark value 2201 exceeds gate value 2192 for chrome webpack home mean uiStartup<br>
Benchmark value 1718 exceeds gate value 1711 for chrome webpack home mean load<br>
Benchmark value 1711 exceeds gate value 1704 for chrome webpack home mean domContentLoaded<br>
Benchmark value 30 exceeds gate value 29 for chrome webpack home mean getState<br>
Benchmark value 1707 exceeds gate value 1699 for chrome webpack home mean loadScripts<br>
Benchmark value 2537 exceeds gate value 2454 for chrome webpack home p95 uiStartup<br>
Benchmark value 266 exceeds gate value 195 for chrome webpack home p95 getState<br>
Benchmark value 165 exceeds gate value 65 for chrome webpack home p95 setupStore<br>
Benchmark value 26 exceeds gate value 25 for firefox browserify home mean firstReactRender<br>
Benchmark value 10 exceeds gate value 9 for firefox browserify home mean setupStore<br>
Benchmark value 33 exceeds gate value 27 for firefox browserify home p95 setupStore<br>
Benchmark value 41 exceeds gate value 38 for firefox webpack home mean firstReactRender<br>
<b>Sum of mean exceeds: 252ms | Sum of p95 exceeds: 672ms<br>
Sum of all benchmark exceeds: 924ms</b><br>
</details>

<details><summary>Bundle size diffs [🚨 Warning! Bundle size has increased!]</summary><ul><li>background: 39 Bytes (0%)</li>
<li>ui: -5.05 KiB (-0.07%)</li>
<li>common: 0 Bytes (0%)</li></ul></details>


author_association: COLLABORATOR