Repository: MetaMask/metamask-extension
Pull request #32664: fix: dapp connection - select newly added account after creation.
Author: login: montelaidev
Labels: name: team-accounts-framework
description: Accounts team
name: release-12.21.0
description: Issue or pull request that will be included in release 12.21.0
Created: 2025-05-08T07:58:31Z | Merged: 2025-05-28T00:27:38Z

<!--
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**

This PR selects the newly created account in the dapp connection flow. 

<!--
Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/32664?quickstart=1)

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/MMMULTISRP-198?atlOrigin=eyJpIjoiNmNjZWYyODhmNWE5NDA0Mzg0OGZlZTIzYjM2Yjk5NmUiLCJwIjoiaiJ9

## **Manual testing steps**

1. Go to a solana dapp
2. Create a new account in the dapp connection flow
3. See that there are now two selected accounts. 

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->
https://github.com/user-attachments/assets/ac04d81b-6827-4bc2-95bd-c86e1edc9d81
### **After**

https://github.com/user-attachments/assets/99509ed1-91b8-4fe0-837f-8bf84a7eb2f8


<!-- [screenshots/recordings] -->

## **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/test/e2e/flask/multichain-api/testHelpers.ts b/test/e2e/flask/multichain-api/testHelpers.ts
index e427e8bfe2f2..026201629ab9 100644
--- a/test/e2e/flask/multichain-api/testHelpers.ts
+++ b/test/e2e/flask/multichain-api/testHelpers.ts
@@ -86,10 +86,6 @@ export const addAccountInWalletAndAuthorize = async (
   await freshEditButtons[0].click();
   await driver.delay(regularDelayMs);
 
-  const checkboxes = await driver.findElements('input[type="checkbox" i]');
-  await checkboxes[0].click(); // select all checkbox
-  await driver.delay(regularDelayMs);
-
   await driver.clickElementAndWaitToDisappear({
     text: 'Update',
     tag: 'button',
diff --git a/ui/components/app/modals/new-account-modal/new-account-modal.container.js b/ui/components/app/modals/new-account-modal/new-account-modal.container.js
index 13af5f15868b..87f0142a200a 100644
--- a/ui/components/app/modals/new-account-modal/new-account-modal.container.js
+++ b/ui/components/app/modals/new-account-modal/new-account-modal.container.js
@@ -17,7 +17,7 @@ function mapDispatchToProps(dispatch) {
   return {
     hideModal: () => dispatch(hideModal()),
     createAccount: async (newAccountName) => {
-      const newAccountAddress = await dispatch(addNewAccount());
+      const { address: newAccountAddress } = await dispatch(addNewAccount());
       if (newAccountName) {
         dispatch(setAccountLabel(newAccountAddress, newAccountName));
       }
diff --git a/ui/components/app/modals/new-account-modal/new-account-modal.test.tsx b/ui/components/app/modals/new-account-modal/new-account-modal.test.tsx
index 4c87721c9235..bacf4f6a2d0d 100644
--- a/ui/components/app/modals/new-account-modal/new-account-modal.test.tsx
+++ b/ui/components/app/modals/new-account-modal/new-account-modal.test.tsx
@@ -7,15 +7,26 @@ import mockState from '../../../../../test/data/mock-state.json';
 // TODO: Remove restricted import
 // eslint-disable-next-line import/no-restricted-paths
 import messages from '../../../../../app/_locales/en/messages.json';
+import { createMockInternalAccount } from '../../../../../test/jest/mocks';
 import NewAccountModal from './new-account-modal.container';
 
+const mockAddress = '0x1234567890';
+const mockNewAccount = createMockInternalAccount({
+  name: 'New Account',
+  address: mockAddress,
+});
+
 const mockOnCreateNewAccount = jest.fn();
 const mockNewAccountNumber = 2;
 const mockNewMetamaskState = {
   ...mockState.metamask,
   currentLocale: 'en',
 };
-const mockAddress = '0x1234567890';
+
+jest.mock('../../../../selectors/selectors', () => ({
+  ...jest.requireActual('../../../../selectors/selectors'),
+  getInternalAccountByAddress: () => jest.fn().mockReturnValue(mockNewAccount),
+}));
 
 const mockSubmitRequestToBackground = jest.fn().mockImplementation((method) => {
   switch (method) {
diff --git a/ui/components/multichain/create-account/create-account.tsx b/ui/components/multichain/create-account/create-account.tsx
index d99a61b1754e..634d6f1bb795 100644
--- a/ui/components/multichain/create-account/create-account.tsx
+++ b/ui/components/multichain/create-account/create-account.tsx
@@ -57,7 +57,10 @@ type Props = {
   /**
    * Callback called once the account has been created
    */
-  onActionComplete: (completed: boolean) => Promise<void>;
+  onActionComplete: (
+    completed: boolean,
+    newAccount?: InternalAccount,
+  ) => Promise<void>;
 
   /**
    * The scope of the account
@@ -69,6 +72,7 @@ type Props = {
    */
   onSelectSrp?: () => void;
   selectedKeyringId?: string;
+  redirectToOverview?: boolean;
 };
 
 type CreateAccountProps<C extends React.ElementType> =
@@ -88,6 +92,7 @@ export const CreateAccount: CreateAccountComponent = React.memo(
         selectedKeyringId,
         onActionComplete,
         scope,
+        redirectToOverview = true,
       }: CreateAccountProps<C>,
       ref?: PolymorphicRef<C>,
     ) => {
@@ -159,7 +164,9 @@ export const CreateAccount: CreateAccountComponent = React.memo(
                   trimmedAccountName === defaultAccountName,
               },
             });
-            history.push(mostRecentOverviewPage);
+            if (redirectToOverview) {
+              history.push(mostRecentOverviewPage);
+            }
           } catch (error) {
             setLoading(false);
             let message = 'An unexpected error occurred.';
diff --git a/ui/components/multichain/create-eth-account/create-eth-account.js b/ui/components/multichain/create-eth-account/create-eth-account.js
index 954cb2b9a907..534aa91c6d58 100644
--- a/ui/components/multichain/create-eth-account/create-eth-account.js
+++ b/ui/components/multichain/create-eth-account/create-eth-account.js
@@ -13,15 +13,16 @@ export const CreateEthAccount = ({
   onActionComplete,
   onSelectSrp,
   selectedKeyringId,
+  redirectToOverview,
 }) => {
   const dispatch = useDispatch();
 
   const onCreateAccount = async (name) => {
-    const newAccountAddress = await dispatch(addNewAccount(selectedKeyringId));
+    const newAccount = await dispatch(addNewAccount(selectedKeyringId));
     if (name) {
-      dispatch(setAccountLabel(newAccountAddress, name));
+      dispatch(setAccountLabel(newAccount.address, name));
     }
-    onActionComplete(true);
+    onActionComplete(true, newAccount);
   };
 
   const getNextAvailableAccountName = async () => {
@@ -35,6 +36,7 @@ export const CreateEthAccount = ({
       getNextAvailableAccountName={getNextAvailableAccountName}
       onSelectSrp={onSelectSrp}
       selectedKeyringId={selectedKeyringId}
+      redirectToOverview={redirectToOverview}
     ></CreateAccount>
   );
 };
@@ -52,4 +54,8 @@ CreateEthAccount.propTypes = {
    * Currently selected HD keyring
    */
   selectedKeyringId: PropTypes.string,
+  /**
+   * Whether to redirect to the overview page after creating the account
+   */
+  redirectToOverview: PropTypes.bool,
 };
diff --git a/ui/components/multichain/create-eth-account/create-eth-account.test.js b/ui/components/multichain/create-eth-account/create-eth-account.test.js
index d818009227be..b31bce2beb2d 100644
--- a/ui/components/multichain/create-eth-account/create-eth-account.test.js
+++ b/ui/components/multichain/create-eth-account/create-eth-account.test.js
@@ -3,14 +3,20 @@ import React from 'react';
 import { fireEvent, renderWithProvider, waitFor } from '../../../../test/jest';
 import configureStore from '../../../store/store';
 import mockState from '../../../../test/data/mock-state.json';
+import { createMockInternalAccount } from '../../../../test/jest/mocks';
 import { CreateEthAccount } from '.';
 
+const mockNewEthAccount = createMockInternalAccount({
+  name: 'Eth Account 1',
+  address: '0xb552685e3d2790efd64a175b00d51f02cdafee5d',
+});
+
 const render = (props = { onActionComplete: () => jest.fn() }) => {
   const store = configureStore(mockState);
   return renderWithProvider(<CreateEthAccount {...props} />, store);
 };
 
-const mockAddNewAccount = jest.fn().mockReturnValue({ type: 'TYPE' });
+const mockAddNewAccount = jest.fn().mockReturnValue(mockNewEthAccount);
 const mockSetAccountLabel = jest.fn().mockReturnValue({ type: 'TYPE' });
 const mockGetNextAvailableAccountName = jest.fn().mockReturnValue('Account 7');
 
@@ -49,7 +55,7 @@ describe('CreateEthAccount', () => {
     await waitFor(() => expect(mockAddNewAccount).toHaveBeenCalled());
     await waitFor(() =>
       expect(mockSetAccountLabel).toHaveBeenCalledWith(
-        { type: 'TYPE' },
+        mockNewEthAccount.address,
         newAccountName,
       ),
     );
@@ -89,6 +95,8 @@ describe('CreateEthAccount', () => {
     await waitFor(() =>
       expect(mockAddNewAccount).toHaveBeenCalledWith(selectedKeyringId),
     );
-    await waitFor(() => expect(onActionComplete).toHaveBeenCalledWith(true));
+    await waitFor(() =>
+      expect(onActionComplete).toHaveBeenCalledWith(true, mockNewEthAccount),
+    );
   });
 });
diff --git a/ui/components/multichain/create-snap-account/create-snap-account.test.tsx b/ui/components/multichain/create-snap-account/create-snap-account.test.tsx
index 11e31bd1f888..64587e5fcff9 100644
--- a/ui/components/multichain/create-snap-account/create-snap-account.test.tsx
+++ b/ui/components/multichain/create-snap-account/create-snap-account.test.tsx
@@ -1,17 +1,25 @@
 /* eslint-disable jest/require-top-level-describe */
 import React from 'react';
 import { CaipChainId } from '@metamask/utils';
+import { SnapKeyringInternalOptions } from '@metamask/eth-snap-keyring';
 import { fireEvent, renderWithProvider, waitFor } from '../../../../test/jest';
 import configureStore from '../../../store/store';
 import mockState from '../../../../test/data/mock-state.json';
 import { WalletClientType } from '../../../hooks/accounts/useMultichainWalletSnapClient';
 import { createMockInternalAccount } from '../../../../test/jest/mocks';
 import { MultichainNetworks } from '../../../../shared/constants/multichain/networks';
+import { WalletSnapOptions } from '../../../../shared/lib/accounts';
 import { CreateSnapAccount } from './create-snap-account';
 
+const newSnapAccount = createMockInternalAccount({
+  name: 'Snap Account 2',
+  address: '0xb552685e3d2790efd64a175b00d51f02cdafee5d',
+});
+
+const mockCreateAccount = jest.fn().mockResolvedValue(newSnapAccount);
+
 // Mock dependencies
 jest.mock('../../../hooks/accounts/useMultichainWalletSnapClient', () => {
-  const mockCreateAccount = jest.fn().mockResolvedValue(true);
   const mockGetNextAvailableAccountName = jest
     .fn()
     .mockResolvedValue('Snap Account 2');
@@ -21,18 +29,15 @@ jest.mock('../../../hooks/accounts/useMultichainWalletSnapClient', () => {
       '../../../hooks/accounts/useMultichainWalletSnapClient',
     ),
     useMultichainWalletSnapClient: jest.fn().mockReturnValue({
-      createAccount: mockCreateAccount,
+      createAccount: (
+        options: WalletSnapOptions,
+        internalOptions?: SnapKeyringInternalOptions,
+      ) => mockCreateAccount(options, internalOptions),
       getNextAvailableAccountName: mockGetNextAvailableAccountName,
     }),
-    __mockCreateAccount: mockCreateAccount,
-    __mockGetNextAvailableAccountName: mockGetNextAvailableAccountName,
   };
 });
 
-const { __mockCreateAccount: mockCreateAccount } = jest.requireMock(
-  '../../../hooks/accounts/useMultichainWalletSnapClient',
-);
-
 const mockSnapAccount = createMockInternalAccount({
   name: 'Snap Account 1',
   address: '0xb552685e3d2790efd64a175b00d51f02cdafee5d',
@@ -114,7 +119,7 @@ describe('CreateSnapAccount', () => {
     fireEvent.click(createButton);
 
     await waitFor(() => {
-      expect(onActionComplete).toHaveBeenCalledWith(true);
+      expect(onActionComplete).toHaveBeenCalledWith(true, newSnapAccount);
     });
   });
 
diff --git a/ui/components/multichain/create-snap-account/create-snap-account.tsx b/ui/components/multichain/create-snap-account/create-snap-account.tsx
index 4cd0b59ba350..ab63f09c13ad 100644
--- a/ui/components/multichain/create-snap-account/create-snap-account.tsx
+++ b/ui/components/multichain/create-snap-account/create-snap-account.tsx
@@ -1,5 +1,6 @@
 import React, { useCallback } from 'react';
 import { CaipChainId } from '@metamask/utils';
+import { KeyringAccount } from '@metamask/keyring-api';
 import { CreateAccount } from '../create-account';
 import {
   WalletClientType,
@@ -10,7 +11,10 @@ type CreateSnapAccountProps = {
   /**
    * Executes when the Create button is clicked
    */
-  onActionComplete: (completed: boolean) => Promise<void>;
+  onActionComplete: (
+    completed: boolean,
+    newAccount?: KeyringAccount,
+  ) => Promise<void>;
   /**
    * Callback to select the SRP
    */
@@ -31,6 +35,10 @@ type CreateSnapAccountProps = {
    * Whether to set the newly created account as the selected account
    */
   setNewlyCreatedAccountAsSelected?: boolean;
+  /**
+   * Whether to redirect to the overview page after creating the account
+   */
+  redirectToOverview?: boolean;
 };
 
 export const CreateSnapAccount = ({
@@ -40,12 +48,13 @@ export const CreateSnapAccount = ({
   clientType,
   chainId,
   setNewlyCreatedAccountAsSelected,
+  redirectToOverview,
 }: CreateSnapAccountProps) => {
   const client = useMultichainWalletSnapClient(clientType);
 
   const onCreateAccount = useCallback(
     async (accountNameSuggestion?: string) => {
-      await client.createAccount(
+      const newAccount = await client.createAccount(
         {
           scope: chainId,
           entropySource: selectedKeyringId,
@@ -53,9 +62,15 @@ export const CreateSnapAccount = ({
         },
         { setSelectedAccount: setNewlyCreatedAccountAsSelected },
       );
-      onActionComplete(true);
+      onActionComplete(true, newAccount);
     },
-    [client, chainId, selectedKeyringId, onActionComplete],
+    [
+      client,
+      chainId,
+      selectedKeyringId,
+      setNewlyCreatedAccountAsSelected,
+      onActionComplete,
+    ],
   );
 
   const getNextAccountName = async () => {
@@ -72,6 +87,7 @@ export const CreateSnapAccount = ({
       scope={chainId}
       onSelectSrp={onSelectSrp}
       selectedKeyringId={selectedKeyringId}
+      redirectToOverview={redirectToOverview}
     />
   );
 };
diff --git a/ui/components/multichain/edit-accounts-modal/add-account.tsx b/ui/components/multichain/edit-accounts-modal/add-account.tsx
index e805319eb865..0e2fb7384446 100644
--- a/ui/components/multichain/edit-accounts-modal/add-account.tsx
+++ b/ui/components/multichain/edit-accounts-modal/add-account.tsx
@@ -114,12 +114,14 @@ export const EditAccountAddAccountForm: React.FC<
                   clientType={clientType}
                   chainId={chainId}
                   setNewlyCreatedAccountAsSelected={true}
+                  redirectToOverview={false}
                 />
               ) : (
                 <CreateEthAccount
                   onActionComplete={onActionComplete}
                   selectedKeyringId={selectedKeyringId}
                   onSelectSrp={onSelectSrp}
+                  redirectToOverview={false}
                 />
               )}
             </>
diff --git a/ui/components/multichain/edit-accounts-modal/edit-accounts-modal.test.tsx b/ui/components/multichain/edit-accounts-modal/edit-accounts-modal.test.tsx
index 21ef4f585d82..5013b784145b 100644
--- a/ui/components/multichain/edit-accounts-modal/edit-accounts-modal.test.tsx
+++ b/ui/components/multichain/edit-accounts-modal/edit-accounts-modal.test.tsx
@@ -1,8 +1,9 @@
 import React from 'react';
 import { CaipAccountId } from '@metamask/utils';
 import { fireEvent, waitFor } from '@testing-library/react';
-import { SolScope } from '@metamask/keyring-api';
+import { SolAccountType, SolScope } from '@metamask/keyring-api';
 import { KeyringTypes } from '@metamask/keyring-controller';
+import { InternalAccount } from '@metamask/keyring-internal-api';
 import { renderWithProvider } from '../../../../test/jest/rendering';
 import mockState from '../../../../test/data/mock-state.json';
 import configureStore from '../../../store/store';
@@ -37,7 +38,14 @@ const goToAddNewAccount = (
   }
 };
 
-const mockCreateAccount = jest.fn();
+const mockNewAccount = createMockInternalAccount({
+  name: 'Solana Account 1',
+  address: '3wqBoWo34h34tovyEwy5WLmELH88spdMThjGtevnmKu1',
+  keyringType: KeyringTypes.snap,
+  type: SolAccountType.DataAccount,
+});
+
+const mockCreateAccount = jest.fn().mockResolvedValue(mockNewAccount);
 
 jest.mock('../../../hooks/accounts/useMultichainWalletSnapClient', () => ({
   ...jest.requireActual(
@@ -60,6 +68,11 @@ jest.mock('../../../store/actions.ts', () => ({
   setAccountLabel: jest.fn(),
 }));
 
+const getCaipAccountId = (account: InternalAccount): CaipAccountId => {
+  const [scope] = account.scopes;
+  return `${scope}:${account.address}`;
+};
+
 const render = (
   props: {
     onSubmit: (addresses: string[]) => void;
@@ -254,4 +267,33 @@ describe('EditAccountsModal', () => {
       expect(getByTestId('srp-list')).toBeInTheDocument();
     });
   });
+
+  it('selects the new CAIP account ID of the account when it is created', async () => {
+    const caipAccountIdOfOriginalAccount = getCaipAccountId(
+      mockState.metamask.internalAccounts.accounts[
+        'cf8dace4-9439-4bd4-b3a8-88c821c8fcb3'
+      ] as InternalAccount,
+    );
+    const expectedNewCaipAccountId = getCaipAccountId(mockNewAccount);
+    const mockOnSubmit = jest.fn();
+    const { getByTestId } = render({
+      onSubmit: mockOnSubmit,
+      onClose: jest.fn(),
+    });
+    goToAddNewAccount(getByTestId, 'solana');
+
+    await waitFor(() =>
+      expect(getByTestId('account-name-input')).toBeInTheDocument(),
+    );
+
+    const addAccountButton = getByTestId('submit-add-account-with-name');
+    fireEvent.click(addAccountButton);
+
+    await waitFor(() =>
+      expect(mockOnSubmit).toHaveBeenCalledWith([
+        caipAccountIdOfOriginalAccount,
+        expectedNewCaipAccountId,
+      ]),
+    );
+  });
 });
diff --git a/ui/components/multichain/edit-accounts-modal/edit-accounts-modal.tsx b/ui/components/multichain/edit-accounts-modal/edit-accounts-modal.tsx
index 7b84b1a44e46..0e353f6f5fe4 100644
--- a/ui/components/multichain/edit-accounts-modal/edit-accounts-modal.tsx
+++ b/ui/components/multichain/edit-accounts-modal/edit-accounts-modal.tsx
@@ -1,5 +1,6 @@
-import React, { useContext, useEffect, useState } from 'react';
+import React, { useCallback, useContext, useEffect, useState } from 'react';
 import { CaipAccountId } from '@metamask/utils';
+import { InternalAccount } from '@metamask/keyring-internal-api';
 import { useI18nContext } from '../../../hooks/useI18nContext';
 import {
   Modal,
@@ -113,6 +114,27 @@ export const EditAccountsModal: React.FC<EditAccountsModalProps> = ({
   const defaultSet = new Set(defaultSelectedAccountAddresses);
   const selectedSet = new Set(selectedAccountAddresses);
 
+  const handleAddAccount = useCallback(
+    async (completed: boolean, newAccount?: InternalAccount) => {
+      if (completed && newAccount) {
+        const [scope] = newAccount.scopes;
+        if (!scope) {
+          // Should never happen since `scopes` is declared as a non-empty array on the
+          // account type.
+          throw new Error('Account has no scope');
+        }
+        // NOTE: For now we only rely on 1 single CAIP-10. The CAIP namespace is
+        // used under the hood and we assume all account's scope use the same
+        // namespace.
+        // TODO: Maybe use multiple CAIP-10 for each scopes instead?
+        const newAccountCaipAccountId: CaipAccountId = `${scope}:${newAccount.address}`;
+        onSubmit([...selectedAccountAddresses, newAccountCaipAccountId]);
+        onClose();
+      }
+    },
+    [selectedAccountAddresses, onSubmit, onClose],
+  );
+
   return (
     <Modal
       isOpen
@@ -262,9 +284,7 @@ export const EditAccountsModal: React.FC<EditAccountsModalProps> = ({
         <EditAccountAddAccountForm
           onBack={() => setModalStage(EditAccountModalStage.AddNewAccount)}
           onClose={() => setModalStage(EditAccountModalStage.AccountList)}
-          onActionComplete={async () => {
-            setModalStage(EditAccountModalStage.AccountList);
-          }}
+          onActionComplete={handleAddAccount}
           accountType={accountType}
         />
       )}
diff --git a/ui/store/actions.ts b/ui/store/actions.ts
index 84ae8cc0cea4..ee805231b19b 100644
--- a/ui/store/actions.ts
+++ b/ui/store/actions.ts
@@ -556,12 +556,15 @@ export function addNewAccount(
 
     dispatch(showLoadingIndication());
 
-    let addedAccountAddress;
+    let newAccount;
     try {
-      addedAccountAddress = await submitRequestToBackground('addNewAccount', [
-        oldAccounts.length,
-        keyringId,
-      ]);
+      const addedAccountAddress = await submitRequestToBackground(
+        'addNewAccount',
+        [oldAccounts.length, keyringId],
+      );
+      await forceUpdateMetamaskState(dispatch);
+      const newState = getState();
+      newAccount = getInternalAccountByAddress(newState, addedAccountAddress);
     } catch (error) {
       dispatch(displayWarning(error));
       throw error;
@@ -569,8 +572,7 @@ export function addNewAccount(
       dispatch(hideLoadingIndication());
     }
 
-    await forceUpdateMetamaskState(dispatch);
-    return addedAccountAddress;
+    return newAccount;
   };
 }
 


Reviews:
user: login: vinnyhoward
body: LGTM
state: DISMISSED
author_association: CONTRIBUTOR
submitted_at: 2025-05-21T18:24:07Z
user: login: ccharly
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-23T12:41:33Z
user: login: montelaidev
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-23T12:50:28Z
user: login: montelaidev
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-23T12:50:30Z
user: login: montelaidev
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-23T12:51:32Z
user: login: ccharly
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-27T07:54:22Z
user: login: ccharly
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-27T07:57:51Z
user: login: ccharly
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-27T08:12:06Z
user: login: vinnyhoward
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-05-27T15:51:39Z
user: login: ccharly
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-05-27T19:43:35Z

Review comments:
diff_hunk: @@ -113,6 +114,18 @@ export const EditAccountsModal: React.FC<EditAccountsModalProps> = ({
   const defaultSet = new Set(defaultSelectedAccountAddresses);
   const selectedSet = new Set(selectedAccountAddresses);
 
+  const handleNewAccount = useCallback(
+    async (completed: boolean, newAccount?: InternalAccount) => {
+      if (completed && newAccount) {
+        const { namespace, reference } = parseCaipChainId(newAccount.scopes[0]);
+        const newAccountCaipAccountId: CaipAccountId = `${namespace}:${reference}:${newAccount.address}`;
+        onSubmit([...selectedAccountAddresses, newAccountCaipAccountId]);
path: ui/components/multichain/edit-accounts-modal/edit-accounts-modal.tsx
user: login: ccharly
body: I miss context here, but what if the accounts has multiple scopes? Given that we use it in a array, shouldn't enumerate all CAIP-10 in that list too?
created_at: 2025-05-23T12:27:13Z
author_association: CONTRIBUTOR
diff_hunk: @@ -114,12 +114,14 @@ export const EditAccountAddAccountForm: React.FC<
                   clientType={clientType}
                   chainId={chainId}
                   setNewlyCreatedAccountAsSelected={true}
+                  redirectToOverview={false}
path: ui/components/multichain/edit-accounts-modal/add-account.tsx
user: login: ccharly
body: This flow would always to the overview page no? 🤔
created_at: 2025-05-23T12:41:22Z
author_association: CONTRIBUTOR
diff_hunk: @@ -114,12 +114,14 @@ export const EditAccountAddAccountForm: React.FC<
                   clientType={clientType}
                   chainId={chainId}
                   setNewlyCreatedAccountAsSelected={true}
+                  redirectToOverview={false}
                 />
               ) : (
                 <CreateEthAccount
                   onActionComplete={onActionComplete}
                   selectedKeyringId={selectedKeyringId}
                   onSelectSrp={onSelectSrp}
+                  redirectToOverview={false}
path: ui/components/multichain/edit-accounts-modal/add-account.tsx
user: login: ccharly
body: Same question?
created_at: 2025-05-23T12:41:31Z
author_association: CONTRIBUTOR
diff_hunk: @@ -114,12 +114,14 @@ export const EditAccountAddAccountForm: React.FC<
                   clientType={clientType}
                   chainId={chainId}
                   setNewlyCreatedAccountAsSelected={true}
+                  redirectToOverview={false}
path: ui/components/multichain/edit-accounts-modal/add-account.tsx
user: login: montelaidev
body: No, it stops it from going
created_at: 2025-05-23T12:50:28Z
author_association: CONTRIBUTOR
diff_hunk: @@ -114,12 +114,14 @@ export const EditAccountAddAccountForm: React.FC<
                   clientType={clientType}
                   chainId={chainId}
                   setNewlyCreatedAccountAsSelected={true}
+                  redirectToOverview={false}
                 />
               ) : (
                 <CreateEthAccount
                   onActionComplete={onActionComplete}
                   selectedKeyringId={selectedKeyringId}
                   onSelectSrp={onSelectSrp}
+                  redirectToOverview={false}
path: ui/components/multichain/edit-accounts-modal/add-account.tsx
user: login: montelaidev
body: No, it stops it from going
created_at: 2025-05-23T12:50:30Z
author_association: CONTRIBUTOR
diff_hunk: @@ -113,6 +114,18 @@ export const EditAccountsModal: React.FC<EditAccountsModalProps> = ({
   const defaultSet = new Set(defaultSelectedAccountAddresses);
   const selectedSet = new Set(selectedAccountAddresses);
 
+  const handleNewAccount = useCallback(
+    async (completed: boolean, newAccount?: InternalAccount) => {
+      if (completed && newAccount) {
+        const { namespace, reference } = parseCaipChainId(newAccount.scopes[0]);
+        const newAccountCaipAccountId: CaipAccountId = `${namespace}:${reference}:${newAccount.address}`;
+        onSubmit([...selectedAccountAddresses, newAccountCaipAccountId]);
path: ui/components/multichain/edit-accounts-modal/edit-accounts-modal.tsx
user: login: montelaidev
body: The caipAccountIds are generated this way right now. I think it should be ok for now, since all evm accounts uses the wildcard for the chain id. For solana, mainnet is the first in the array of scopes.


created_at: 2025-05-23T12:51:32Z
author_association: CONTRIBUTOR
diff_hunk: @@ -113,6 +114,18 @@ export const EditAccountsModal: React.FC<EditAccountsModalProps> = ({
   const defaultSet = new Set(defaultSelectedAccountAddresses);
   const selectedSet = new Set(selectedAccountAddresses);
 
+  const handleNewAccount = useCallback(
+    async (completed: boolean, newAccount?: InternalAccount) => {
+      if (completed && newAccount) {
+        const { namespace, reference } = parseCaipChainId(newAccount.scopes[0]);
+        const newAccountCaipAccountId: CaipAccountId = `${namespace}:${reference}:${newAccount.address}`;
+        onSubmit([...selectedAccountAddresses, newAccountCaipAccountId]);
path: ui/components/multichain/edit-accounts-modal/edit-accounts-modal.tsx
user: login: ccharly
body: For tracking purposes: currently the multichain API does not use every CAIP-10 accounts but mostly rely on the CAIP namespace instead, thus, 1 CAIP-10 is enough.

Though, this is "sort-of" tech-debts and will be tackled later by them.
created_at: 2025-05-27T07:54:22Z
author_association: CONTRIBUTOR
diff_hunk: @@ -114,12 +114,14 @@ export const EditAccountAddAccountForm: React.FC<
                   clientType={clientType}
                   chainId={chainId}
                   setNewlyCreatedAccountAsSelected={true}
+                  redirectToOverview={false}
path: ui/components/multichain/edit-accounts-modal/add-account.tsx
user: login: ccharly
body: Sorry, my question was not clear 🙈 but ok, for that flow, we want to stay in the dapp connection flow, thus, we prevent redirecting to the overview.

Thanks!
created_at: 2025-05-27T07:57:51Z
author_association: CONTRIBUTOR
diff_hunk: @@ -113,6 +114,18 @@ export const EditAccountsModal: React.FC<EditAccountsModalProps> = ({
   const defaultSet = new Set(defaultSelectedAccountAddresses);
   const selectedSet = new Set(selectedAccountAddresses);
 
+  const handleNewAccount = useCallback(
+    async (completed: boolean, newAccount?: InternalAccount) => {
+      if (completed && newAccount) {
+        const { namespace, reference } = parseCaipChainId(newAccount.scopes[0]);
+        const newAccountCaipAccountId: CaipAccountId = `${namespace}:${reference}:${newAccount.address}`;
path: ui/components/multichain/edit-accounts-modal/edit-accounts-modal.tsx
user: login: ccharly
body: Not sure we need to parse here, `scopes` is typed as `CaipChainId`, we can safely assume it's already well defined.

WDYT about this:

```suggestion
        const [scope] = newAccount.scopes;
        
        if (!scope) {
          // Should never happen since `scopes` is declared as a non-empty array on the
          // account type.
          throw new Error('Account has no scope');
        }
        // NOTE: For now we only rely on 1 single CAIP-10. The CAIP namespace is
        // used under the hood and we assume all account's scope use the same
        // namespace.
        // TODO: Maybe use multiple CAIP-10 for each scopes instead?
        const newAccountCaipAccountId: CaipAccountId = `${scope}:${newAccount.address}`;
```
created_at: 2025-05-27T08:01:55Z
author_association: CONTRIBUTOR
diff_hunk: @@ -60,6 +68,11 @@ jest.mock('../../../store/actions.ts', () => ({
   setAccountLabel: jest.fn(),
 }));
 
+const getCaipAccountId = (account: InternalAccount) => {
+  const { namespace, reference } = parseCaipChainId(account.scopes[0]);
+  return `${namespace}:${reference}:${account.address}` as CaipAccountId;
+};
+
path: ui/components/multichain/edit-accounts-modal/edit-accounts-modal.test.tsx
user: login: ccharly
body: Very nit:
```suggestion
const getCaipAccountId = (account: InternalAccount): CaipAccountId => {
  const [scope] = account.scopes;
  return `${scope}:${account.address}`;
};

```
created_at: 2025-05-27T08:07:47Z
author_association: CONTRIBUTOR
diff_hunk: @@ -254,4 +267,33 @@ describe('EditAccountsModal', () => {
       expect(getByTestId('srp-list')).toBeInTheDocument();
     });
   });
+
+  it('selects the new caipId of the account when it is created', async () => {
path: ui/components/multichain/edit-accounts-modal/edit-accounts-modal.test.tsx
user: login: ccharly
body: ```suggestion
  it('selects the new CAIP account ID of the account when it is created', async () => {
```
created_at: 2025-05-27T08:08:01Z
author_association: CONTRIBUTOR
diff_hunk: @@ -262,9 +275,7 @@ export const EditAccountsModal: React.FC<EditAccountsModalProps> = ({
         <EditAccountAddAccountForm
           onBack={() => setModalStage(EditAccountModalStage.AddNewAccount)}
           onClose={() => setModalStage(EditAccountModalStage.AccountList)}
-          onActionComplete={async () => {
-            setModalStage(EditAccountModalStage.AccountList);
-          }}
+          onActionComplete={handleNewAccount}
path: ui/components/multichain/edit-accounts-modal/edit-accounts-modal.tsx
user: login: ccharly
body: Very nit: We could have named it `handleAddAccount` instead since the component name is `EditAccountAddAccountForm`.
created_at: 2025-05-27T08:10:40Z
author_association: CONTRIBUTOR

PR comments:
user: login: github-actions[bot]
created_at: 2025-05-08T07:58:43Z
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-08T08:00:28Z
body: <!-- METAMASK-CODEOWNERS-BOT -->
✨ Files requiring CODEOWNER review ✨
---

<details>
<summary>🖥️ <strong>@MetaMask/wallet-ux</strong> (8 files, +133 -27)</summary>

- 📁 ui/
  - 📁 components/
    - 📁 multichain/
      - 📁 create-account/
          - 📄 `create-account.tsx` *+9 -2*
      - 📁 create-eth-account/
          - 📄 `create-eth-account.js` *+9 -3*
          - 📄 `create-eth-account.test.js` *+11 -3*
      - 📁 create-snap-account/
          - 📄 `create-snap-account.test.tsx` *+14 -9*
          - 📄 `create-snap-account.tsx` *+20 -4*
      - 📁 edit-accounts-modal/
          - 📄 `add-account.tsx` *+2 -0*
          - 📄 `edit-accounts-modal.test.tsx` *+44 -2*
          - 📄 `edit-accounts-modal.tsx` *+24 -4*
</details>

author_association: COLLABORATOR
user: login: metamaskbot
created_at: 2025-05-08T08:33:36Z
body: <details><summary>Builds ready [d056c7f]</summary><ul><li>builds: <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/builds/metamask-chrome-12.17.2.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/builds-mv2/metamask-firefox-12.17.2.zip">firefox</a></li>
<li>builds (beta): <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/14901591508/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/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/builds-flask/metamask-flask-chrome-12.17.2-flask.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/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/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/builds-test/metamask-chrome-12.17.2.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/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/3a275a98-725c-431d-b71b-ce2d4ada87c7/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/3a275a98-725c-431d-b71b-ce2d4ada87c7/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/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/build-viz/index.html">Build System</a></li>
<li>bundle size: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/14901591508/bundle-size/bundle_size.json">Bundle Size Stats</a></li>
<li>user-actions-benchmark: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/14901591508/benchmarks/benchmark-chrome-browserify-userActions.json">User Actions Stats</a></li>
<li>storybook: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/14901591508/storybook-build/index.html">Storybook</a></li>
<li>typescript migration: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/14901591508/ts-migration-dashboard/index.html">Dashboard</a></li>
<li><a href="https://app.circleci.com/pipelines/github/MetaMask/metamask-extension/jobs/4874759/artifacts/">all CircleCI artifacts</a></li>
<li><details>
       <summary>bundle viz:</summary>
       <ul><li>background: <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/background-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/background-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/background-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/background-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/background-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/background-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/background-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/background-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/background-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/background-9.html">9</a></li><li>common: <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/common-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/common-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/common-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/common-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/common-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/common-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/common-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/common-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/common-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/common-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/common-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/common-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/common-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/common-13.html">13</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/common-14.html">14</a></li><li>ui: <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/ui-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/ui-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/ui-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/ui-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/ui-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/ui-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/ui-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/ui-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/ui-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/ui-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/ui-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/ui-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/ui-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/3a275a98-725c-431d-b71b-ce2d4ada87c7/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/3a275a98-725c-431d-b71b-ce2d4ada87c7/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/3a275a98-725c-431d-b71b-ce2d4ada87c7/artifacts/0/build-artifacts/source-map-explorer/offscreen-0.html">0</a></li></ul>
     </details></li></ul></details>

<details><summary>UI Startup Metrics (1238 ± 68 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">1238</td><td align="right">1128</td><td align="right">1530</td><td align="right">68</td><td align="right">1274</td><td align="right">1340</td></tr><tr><td>load</td><td align="right">1077</td><td align="right">982</td><td align="right">1354</td><td align="right">65</td><td align="right">1107</td><td align="right">1188</td></tr><tr><td>domContentLoaded</td><td align="right">1071</td><td align="right">966</td><td align="right">1338</td><td align="right">65</td><td align="right">1102</td><td align="right">1183</td></tr><tr><td>domInteractive</td><td align="right">17</td><td align="right">14</td><td align="right">32</td><td align="right">3</td><td align="right">17</td><td align="right">25</td></tr><tr><td>firstPaint</td><td align="right">786</td><td align="right">78</td><td align="right">1349</td><td align="right">416</td><td align="right">1096</td><td align="right">1179</td></tr><tr><td>backgroundConnect</td><td align="right">8</td><td align="right">4</td><td align="right">25</td><td align="right">4</td><td align="right">8</td><td align="right">21</td></tr><tr><td>firstReactRender</td><td align="right">21</td><td align="right">16</td><td align="right">57</td><td align="right">7</td><td align="right">21</td><td align="right">41</td></tr><tr><td>getState</td><td align="right">13</td><td align="right">6</td><td align="right">32</td><td align="right">7</td><td align="right">18</td><td align="right">27</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">826</td><td align="right">734</td><td align="right">1096</td><td align="right">64</td><td align="right">852</td><td align="right">947</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">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">2190</td><td align="right">1679</td><td align="right">2678</td><td align="right">187</td><td align="right">2310</td><td align="right">2460</td></tr><tr><td>load</td><td align="right">1694</td><td align="right">1276</td><td align="right">2025</td><td align="right">140</td><td align="right">1768</td><td align="right">1936</td></tr><tr><td>domContentLoaded</td><td align="right">1687</td><td align="right">1272</td><td align="right">1995</td><td align="right">138</td><td align="right">1763</td><td align="right">1924</td></tr><tr><td>domInteractive</td><td align="right">15</td><td align="right">11</td><td align="right">58</td><td align="right">9</td><td align="right">13</td><td align="right">39</td></tr><tr><td>firstPaint</td><td align="right">167</td><td align="right">66</td><td align="right">457</td><td align="right">69</td><td align="right">193</td><td align="right">317</td></tr><tr><td>backgroundConnect</td><td align="right">33</td><td align="right">10</td><td align="right">239</td><td align="right">31</td><td align="right">33</td><td align="right">64</td></tr><tr><td>firstReactRender</td><td align="right">195</td><td align="right">55</td><td align="right">368</td><td align="right">108</td><td align="right">303</td><td align="right">355</td></tr><tr><td>getState</td><td align="right">15</td><td align="right">4</td><td align="right">175</td><td align="right">18</td><td align="right">16</td><td align="right">36</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">5</td></tr><tr><td>loadScripts</td><td align="right">1682</td><td align="right">1271</td><td align="right">1970</td><td align="right">136</td><td align="right">1762</td><td align="right">1900</td></tr><tr><td>setupStore</td><td align="right">18</td><td align="right">7</td><td align="right">43</td><td align="right">8</td><td align="right">23</td><td align="right">34</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">1196</td><td align="right">1707</td><td align="right">111</td><td align="right">1390</td><td align="right">1597</td></tr><tr><td>load</td><td align="right">1208</td><td align="right">1057</td><td align="right">1580</td><td align="right">111</td><td align="right">1260</td><td align="right">1451</td></tr><tr><td>domContentLoaded</td><td align="right">1208</td><td align="right">1057</td><td align="right">1580</td><td align="right">111</td><td align="right">1260</td><td align="right">1450</td></tr><tr><td>domInteractive</td><td align="right">100</td><td align="right">38</td><td align="right">197</td><td align="right">30</td><td align="right">119</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">22</td><td align="right">13</td><td align="right">280</td><td align="right">31</td><td align="right">19</td><td align="right">28</td></tr><tr><td>firstReactRender</td><td align="right">23</td><td align="right">19</td><td align="right">56</td><td align="right">7</td><td align="right">22</td><td align="right">31</td></tr><tr><td>getState</td><td align="right">7</td><td align="right">4</td><td align="right">18</td><td align="right">3</td><td align="right">8</td><td align="right">15</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">1188</td><td align="right">1043</td><td align="right">1566</td><td align="right">106</td><td align="right">1243</td><td align="right">1388</td></tr><tr><td>setupStore</td><td align="right">7</td><td align="right">4</td><td align="right">33</td><td align="right">6</td><td align="right">6</td><td align="right">24</td></tr><tr><td rowspan="11">Webpack</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1549</td><td align="right">1384</td><td align="right">2059</td><td align="right">130</td><td align="right">1623</td><td align="right">1794</td></tr><tr><td>load</td><td align="right">1329</td><td align="right">1198</td><td align="right">1692</td><td align="right">116</td><td align="right">1400</td><td align="right">1545</td></tr><tr><td>domContentLoaded</td><td align="right">1329</td><td align="right">1198</td><td align="right">1691</td><td align="right">116</td><td align="right">1400</td><td align="right">1545</td></tr><tr><td>domInteractive</td><td align="right">77</td><td align="right">54</td><td align="right">149</td><td align="right">15</td><td align="right">78</td><td align="right">109</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">49</td><td align="right">7</td><td align="right">24</td><td align="right">42</td></tr><tr><td>firstReactRender</td><td align="right">36</td><td align="right">29</td><td align="right">54</td><td align="right">5</td><td align="right">40</td><td align="right">45</td></tr><tr><td>getState</td><td align="right">14</td><td align="right">4</td><td align="right">299</td><td align="right">31</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">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">1310</td><td align="right">1178</td><td align="right">1670</td><td align="right">116</td><td align="right">1381</td><td align="right">1528</td></tr><tr><td>setupStore</td><td align="right">8</td><td align="right">5</td><td align="right">31</td><td align="right">3</td><td align="right">8</td><td align="right">11</td></tr></tbody></table>Benchmark value 1239 exceeds gate value 1234 for chrome browserify home mean uiStartup<br>
Benchmark value 1078 exceeds gate value 1070 for chrome browserify home mean load<br>
Benchmark value 1071 exceeds gate value 1061 for chrome browserify home mean domContentLoaded<br>
Benchmark value 1184 exceeds gate value 1180 for chrome browserify home p95 domContentLoaded<br>
Benchmark value 21 exceeds gate value 18 for chrome browserify home p95 backgroundConnect<br>
Benchmark value 947 exceeds gate value 940 for chrome browserify home p95 loadScripts<br>
Benchmark value 2460 exceeds gate value 2454 for chrome webpack home p95 uiStartup<br>
<b>Sum of mean exceeds: 23ms | Sum of p95 exceeds: 20ms<br>
Sum of all benchmark exceeds: 43ms</b><br>
</details>

<details><summary>Bundle size diffs [🚨 Warning! Bundle size has increased!]</summary><ul><li>background: 0 Bytes (0%)</li>
<li>ui: 405 Bytes (0.01%)</li>
<li>common: 53 Bytes (0%)</li></ul></details>


author_association: COLLABORATOR
user: login: metamaskbot
created_at: 2025-05-08T16:29:50Z
body: <details><summary>Builds ready [2cf68c6]</summary><ul><li>builds: <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/builds/metamask-chrome-12.17.2.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/builds-mv2/metamask-firefox-12.17.2.zip">firefox</a></li>
<li>builds (beta): <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/14910739184/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/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/builds-flask/metamask-flask-chrome-12.17.2-flask.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/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/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/builds-test/metamask-chrome-12.17.2.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/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/4e9ec972-2022-45a9-a657-b8e887e8edba/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/4e9ec972-2022-45a9-a657-b8e887e8edba/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/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/build-viz/index.html">Build System</a></li>
<li>bundle size: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/14910739184/bundle-size/bundle_size.json">Bundle Size Stats</a></li>
<li>user-actions-benchmark: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/14910739184/benchmarks/benchmark-chrome-browserify-userActions.json">User Actions Stats</a></li>
<li>storybook: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/14910739184/storybook-build/index.html">Storybook</a></li>
<li>typescript migration: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/14910739184/ts-migration-dashboard/index.html">Dashboard</a></li>
<li><a href="https://app.circleci.com/pipelines/github/MetaMask/metamask-extension/jobs/4876259/artifacts/">all CircleCI artifacts</a></li>
<li><details>
       <summary>bundle viz:</summary>
       <ul><li>background: <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/background-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/background-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/background-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/background-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/background-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/background-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/background-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/background-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/background-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/background-9.html">9</a></li><li>common: <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/common-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/common-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/common-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/common-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/common-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/common-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/common-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/common-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/common-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/common-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/common-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/common-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/common-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/common-13.html">13</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/common-14.html">14</a></li><li>ui: <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/ui-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/ui-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/ui-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/ui-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/ui-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/ui-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/ui-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/ui-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/ui-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/ui-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/ui-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/ui-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/ui-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/4e9ec972-2022-45a9-a657-b8e887e8edba/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/4e9ec972-2022-45a9-a657-b8e887e8edba/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/4e9ec972-2022-45a9-a657-b8e887e8edba/artifacts/0/build-artifacts/source-map-explorer/offscreen-0.html">0</a></li></ul>
     </details></li></ul></details>

<details><summary>UI Startup Metrics (1200 ± 62 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">1200</td><td align="right">1094</td><td align="right">1411</td><td align="right">62</td><td align="right">1235</td><td align="right">1330</td></tr><tr><td>load</td><td align="right">1047</td><td align="right">947</td><td align="right">1214</td><td align="right">55</td><td align="right">1082</td><td align="right">1139</td></tr><tr><td>domContentLoaded</td><td align="right">1041</td><td align="right">943</td><td align="right">1203</td><td align="right">55</td><td align="right">1076</td><td align="right">1133</td></tr><tr><td>domInteractive</td><td align="right">16</td><td align="right">13</td><td align="right">32</td><td align="right">3</td><td align="right">16</td><td align="right">24</td></tr><tr><td>firstPaint</td><td align="right">710</td><td align="right">129</td><td align="right">1210</td><td align="right">416</td><td align="right">1064</td><td align="right">1135</td></tr><tr><td>backgroundConnect</td><td align="right">7</td><td align="right">4</td><td align="right">23</td><td align="right">3</td><td align="right">7</td><td align="right">11</td></tr><tr><td>firstReactRender</td><td align="right">20</td><td align="right">15</td><td align="right">57</td><td align="right">6</td><td align="right">20</td><td align="right">32</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">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">799</td><td align="right">687</td><td align="right">950</td><td align="right">53</td><td align="right">840</td><td align="right">898</td></tr><tr><td>setupStore</td><td align="right">7</td><td align="right">5</td><td align="right">13</td><td align="right">2</td><td align="right">8</td><td align="right">10</td></tr><tr><td rowspan="11">Webpack</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">2176</td><td align="right">1759</td><td align="right">2541</td><td align="right">151</td><td align="right">2271</td><td align="right">2386</td></tr><tr><td>load</td><td align="right">1697</td><td align="right">1352</td><td align="right">2195</td><td align="right">122</td><td align="right">1767</td><td align="right">1861</td></tr><tr><td>domContentLoaded</td><td align="right">1690</td><td align="right">1349</td><td align="right">2188</td><td align="right">122</td><td align="right">1759</td><td align="right">1850</td></tr><tr><td>domInteractive</td><td align="right">16</td><td align="right">11</td><td align="right">51</td><td align="right">9</td><td align="right">13</td><td align="right">45</td></tr><tr><td>firstPaint</td><td align="right">154</td><td align="right">66</td><td align="right">366</td><td align="right">53</td><td align="right">174</td><td align="right">266</td></tr><tr><td>backgroundConnect</td><td align="right">29</td><td align="right">9</td><td align="right">275</td><td align="right">28</td><td align="right">34</td><td align="right">52</td></tr><tr><td>firstReactRender</td><td align="right">171</td><td align="right">54</td><td align="right">372</td><td align="right">103</td><td align="right">279</td><td align="right">351</td></tr><tr><td>getState</td><td align="right">16</td><td align="right">4</td><td align="right">259</td><td align="right">30</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">6</td><td align="right">1</td><td align="right">3</td><td align="right">4</td></tr><tr><td>loadScripts</td><td align="right">1685</td><td align="right">1347</td><td align="right">2186</td><td align="right">123</td><td align="right">1756</td><td align="right">1845</td></tr><tr><td>setupStore</td><td align="right">16</td><td align="right">6</td><td align="right">40</td><td align="right">7</td><td align="right">20</td><td align="right">27</td></tr><tr><td rowspan="22">Firefox</td><td rowspan="11">Browserify</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1340</td><td align="right">1157</td><td align="right">1763</td><td align="right">117</td><td align="right">1410</td><td align="right">1591</td></tr><tr><td>load</td><td align="right">1201</td><td align="right">1031</td><td align="right">1639</td><td align="right">117</td><td align="right">1272</td><td align="right">1444</td></tr><tr><td>domContentLoaded</td><td align="right">1200</td><td align="right">1031</td><td align="right">1639</td><td align="right">117</td><td align="right">1272</td><td align="right">1444</td></tr><tr><td>domInteractive</td><td align="right">96</td><td align="right">34</td><td align="right">194</td><td align="right">29</td><td align="right">106</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">20</td><td align="right">12</td><td align="right">53</td><td align="right">8</td><td align="right">20</td><td align="right">42</td></tr><tr><td>firstReactRender</td><td align="right">22</td><td align="right">19</td><td align="right">55</td><td align="right">6</td><td align="right">22</td><td align="right">30</td></tr><tr><td>getState</td><td align="right">8</td><td align="right">4</td><td align="right">37</td><td align="right">6</td><td align="right">8</td><td align="right">22</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">1183</td><td align="right">1019</td><td align="right">1625</td><td align="right">117</td><td align="right">1260</td><td align="right">1427</td></tr><tr><td>setupStore</td><td align="right">7</td><td align="right">4</td><td align="right">35</td><td align="right">5</td><td align="right">6</td><td align="right">15</td></tr><tr><td rowspan="11">Webpack</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1531</td><td align="right">1365</td><td align="right">2039</td><td align="right">143</td><td align="right">1564</td><td align="right">1851</td></tr><tr><td>load</td><td align="right">1312</td><td align="right">1174</td><td align="right">1764</td><td align="right">126</td><td align="right">1341</td><td align="right">1563</td></tr><tr><td>domContentLoaded</td><td align="right">1311</td><td align="right">1173</td><td align="right">1763</td><td align="right">126</td><td align="right">1341</td><td align="right">1563</td></tr><tr><td>domInteractive</td><td align="right">80</td><td align="right">34</td><td align="right">290</td><td align="right">30</td><td align="right">84</td><td align="right">138</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">45</td><td align="right">6</td><td align="right">23</td><td align="right">39</td></tr><tr><td>firstReactRender</td><td align="right">35</td><td align="right">30</td><td align="right">47</td><td align="right">4</td><td align="right">37</td><td align="right">43</td></tr><tr><td>getState</td><td align="right">9</td><td align="right">4</td><td align="right">32</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">1293</td><td align="right">1155</td><td align="right">1744</td><td align="right">126</td><td align="right">1322</td><td align="right">1545</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">17</td></tr></tbody></table></details>

<details><summary>Bundle size diffs [🚨 Warning! Bundle size has increased!]</summary><ul><li>background: 33 Bytes (0%)</li>
<li>ui: 396 Bytes (0.01%)</li>
<li>common: 2.7 KiB (0.03%)</li></ul></details>


author_association: COLLABORATOR
user: login: metamaskbot
created_at: 2025-05-10T11:45:50Z
body: <details><summary>Builds ready [b669480]</summary><ul><li>builds: <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/builds/metamask-chrome-12.17.2.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/builds-mv2/metamask-firefox-12.17.2.zip">firefox</a></li>
<li>builds (beta): <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/14944805173/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/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/builds-flask/metamask-flask-chrome-12.17.2-flask.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/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/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/builds-test/metamask-chrome-12.17.2.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/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/dfe60819-38c1-4e46-8354-2633defb7049/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/dfe60819-38c1-4e46-8354-2633defb7049/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/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/build-viz/index.html">Build System</a></li>
<li>bundle size: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/14944805173/bundle-size/bundle_size.json">Bundle Size Stats</a></li>
<li>user-actions-benchmark: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/14944805173/benchmarks/benchmark-chrome-browserify-userActions.json">User Actions Stats</a></li>
<li>storybook: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/14944805173/storybook-build/index.html">Storybook</a></li>
<li>typescript migration: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/14944805173/ts-migration-dashboard/index.html">Dashboard</a></li>
<li><a href="https://app.circleci.com/pipelines/github/MetaMask/metamask-extension/jobs/4882246/artifacts/">all CircleCI artifacts</a></li>
<li><details>
       <summary>bundle viz:</summary>
       <ul><li>background: <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/background-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/background-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/background-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/background-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/background-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/background-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/background-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/background-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/background-8.html">8</a></li><li>common: <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/common-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/common-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/common-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/common-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/common-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/common-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/common-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/common-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/common-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/common-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/common-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/common-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/common-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/common-13.html">13</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/common-14.html">14</a></li><li>ui: <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/ui-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/ui-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/ui-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/ui-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/ui-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/ui-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/ui-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/ui-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/ui-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/ui-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/ui-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/ui-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/ui-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/dfe60819-38c1-4e46-8354-2633defb7049/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/dfe60819-38c1-4e46-8354-2633defb7049/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/dfe60819-38c1-4e46-8354-2633defb7049/artifacts/0/build-artifacts/source-map-explorer/offscreen-0.html">0</a></li></ul>
     </details></li></ul></details>

<details><summary>UI Startup Metrics (1207 ± 59 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">1207</td><td align="right">1095</td><td align="right">1342</td><td align="right">59</td><td align="right">1249</td><td align="right">1322</td></tr><tr><td>load</td><td align="right">1053</td><td align="right">962</td><td align="right">1178</td><td align="right">54</td><td align="right">1089</td><td align="right">1173</td></tr><tr><td>domContentLoaded</td><td align="right">1046</td><td align="right">951</td><td align="right">1173</td><td align="right">55</td><td align="right">1082</td><td align="right">1166</td></tr><tr><td>domInteractive</td><td align="right">16</td><td align="right">13</td><td align="right">34</td><td align="right">4</td><td align="right">16</td><td align="right">25</td></tr><tr><td>firstPaint</td><td align="right">703</td><td align="right">80</td><td align="right">1183</td><td align="right">423</td><td align="right">1074</td><td align="right">1138</td></tr><tr><td>backgroundConnect</td><td align="right">8</td><td align="right">4</td><td align="right">31</td><td align="right">4</td><td align="right">8</td><td align="right">22</td></tr><tr><td>firstReactRender</td><td align="right">20</td><td align="right">14</td><td align="right">43</td><td align="right">6</td><td align="right">21</td><td align="right">34</td></tr><tr><td>getState</td><td align="right">15</td><td align="right">5</td><td align="right">43</td><td align="right">8</td><td align="right">20</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">0</td></tr><tr><td>loadScripts</td><td align="right">805</td><td align="right">714</td><td align="right">941</td><td align="right">54</td><td align="right">834</td><td align="right">911</td></tr><tr><td>setupStore</td><td align="right">8</td><td align="right">4</td><td align="right">21</td><td align="right">3</td><td align="right">9</td><td align="right">14</td></tr><tr><td rowspan="11">Webpack</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">2135</td><td align="right">1774</td><td align="right">2402</td><td align="right">156</td><td align="right">2244</td><td align="right">2349</td></tr><tr><td>load</td><td align="right">1644</td><td align="right">1381</td><td align="right">1846</td><td align="right">110</td><td align="right">1721</td><td align="right">1796</td></tr><tr><td>domContentLoaded</td><td align="right">1637</td><td align="right">1377</td><td align="right">1842</td><td align="right">109</td><td align="right">1717</td><td align="right">1785</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">169</td><td align="right">64</td><td align="right">433</td><td align="right">67</td><td align="right">190</td><td align="right">305</td></tr><tr><td>backgroundConnect</td><td align="right">26</td><td align="right">10</td><td align="right">76</td><td align="right">12</td><td align="right">31</td><td align="right">48</td></tr><tr><td>firstReactRender</td><td align="right">176</td><td align="right">54</td><td align="right">362</td><td align="right">101</td><td align="right">284</td><td align="right">347</td></tr><tr><td>getState</td><td align="right">14</td><td align="right">4</td><td align="right">160</td><td align="right">16</td><td align="right">15</td><td align="right">26</td></tr><tr><td>initialActions</td><td align="right">3</td><td align="right">1</td><td align="right">5</td><td align="right">1</td><td align="right">3</td><td align="right">5</td></tr><tr><td>loadScripts</td><td align="right">1632</td><td align="right">1375</td><td align="right">1841</td><td align="right">111</td><td align="right">1715</td><td align="right">1780</td></tr><tr><td>setupStore</td><td align="right">16</td><td align="right">6</td><td align="right">48</td><td align="right">7</td><td align="right">21</td><td align="right">30</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">1140</td><td align="right">1750</td><td align="right">143</td><td align="right">1400</td><td align="right">1686</td></tr><tr><td>load</td><td align="right">1201</td><td align="right">1017</td><td align="right">1578</td><td align="right">130</td><td align="right">1257</td><td align="right">1506</td></tr><tr><td>domContentLoaded</td><td align="right">1201</td><td align="right">1017</td><td align="right">1578</td><td align="right">130</td><td align="right">1257</td><td align="right">1506</td></tr><tr><td>domInteractive</td><td align="right">100</td><td align="right">39</td><td align="right">291</td><td align="right">34</td><td align="right">110</td><td align="right">163</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">24</td><td align="right">13</td><td align="right">423</td><td align="right">41</td><td align="right">22</td><td align="right">31</td></tr><tr><td>firstReactRender</td><td align="right">22</td><td align="right">19</td><td align="right">53</td><td align="right">5</td><td align="right">23</td><td align="right">29</td></tr><tr><td>getState</td><td align="right">9</td><td align="right">5</td><td align="right">167</td><td align="right">16</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">1182</td><td align="right">991</td><td align="right">1563</td><td align="right">127</td><td align="right">1238</td><td align="right">1482</td></tr><tr><td>setupStore</td><td align="right">11</td><td align="right">4</td><td align="right">253</td><td align="right">33</td><td align="right">6</td><td align="right">10</td></tr><tr><td rowspan="11">Webpack</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1542</td><td align="right">1346</td><td align="right">1950</td><td align="right">133</td><td align="right">1599</td><td align="right">1908</td></tr><tr><td>load</td><td align="right">1324</td><td align="right">1176</td><td align="right">1764</td><td align="right">121</td><td align="right">1412</td><td align="right">1578</td></tr><tr><td>domContentLoaded</td><td align="right">1324</td><td align="right">1176</td><td align="right">1764</td><td align="right">121</td><td align="right">1412</td><td align="right">1578</td></tr><tr><td>domInteractive</td><td align="right">79</td><td align="right">41</td><td align="right">144</td><td align="right">17</td><td align="right">88</td><td align="right">117</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">91</td><td align="right">9</td><td align="right">23</td><td align="right">37</td></tr><tr><td>firstReactRender</td><td align="right">34</td><td align="right">28</td><td align="right">50</td><td align="right">5</td><td align="right">36</td><td align="right">44</td></tr><tr><td>getState</td><td align="right">12</td><td align="right">5</td><td align="right">310</td><td align="right">30</td><td align="right">9</td><td align="right">21</td></tr><tr><td>initialActions</td><td align="right">0</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">1305</td><td align="right">1160</td><td align="right">1743</td><td align="right">121</td><td align="right">1391</td><td align="right">1556</td></tr><tr><td>setupStore</td><td align="right">9</td><td align="right">5</td><td align="right">100</td><td align="right">10</td><td align="right">8</td><td align="right">24</td></tr></tbody></table>Benchmark value 23 exceeds gate value 18 for chrome browserify home p95 backgroundConnect<br>
Benchmark value 11 exceeds gate value 9 for firefox browserify home mean setupStore<br>
Benchmark value 1686 exceeds gate value 1660 for firefox browserify home p95 uiStartup<br>
Benchmark value 1506 exceeds gate value 1495 for firefox browserify home p95 load<br>
Benchmark value 1506 exceeds gate value 1495 for firefox browserify home p95 domContentLoaded<br>
Benchmark value 1482 exceeds gate value 1475 for firefox browserify home p95 loadScripts<br>
<b>Sum of mean exceeds: 2ms | Sum of p95 exceeds: 60ms<br>
Sum of all benchmark exceeds: 62ms</b><br>
</details>

<details><summary>Bundle size diffs [🚨 Warning! Bundle size has increased!]</summary><ul><li>background: 0 Bytes (0%)</li>
<li>ui: 405 Bytes (0.01%)</li>
<li>common: 53 Bytes (0%)</li></ul></details>


author_association: COLLABORATOR
user: login: metamaskbot
created_at: 2025-05-19T12:38:16Z
body: <details><summary>Builds ready [ba54db2]</summary><ul><li>builds: <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/builds/metamask-chrome-12.17.3.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/builds-mv2/metamask-firefox-12.17.3.zip">firefox</a></li>
<li>builds (beta): <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15112524543/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/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/builds-flask/metamask-flask-chrome-12.17.3-flask.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/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/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/builds-test/metamask-chrome-12.17.3.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/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/313d025d-5fc5-4cea-aa23-36bcefdf2870/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/313d025d-5fc5-4cea-aa23-36bcefdf2870/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/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/build-viz/index.html">Build System</a></li>
<li>bundle size: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15112524543/bundle-size/bundle_size.json">Bundle Size Stats</a></li>
<li>user-actions-benchmark: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15112524543/benchmarks/benchmark-chrome-browserify-userActions.json">User Actions Stats</a></li>
<li>storybook: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15112524543/storybook-build/index.html">Storybook</a></li>
<li>typescript migration: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15112524543/ts-migration-dashboard/index.html">Dashboard</a></li>
<li><a href="https://app.circleci.com/pipelines/github/MetaMask/metamask-extension/jobs/4899686/artifacts/">all CircleCI artifacts</a></li>
<li><details>
       <summary>bundle viz:</summary>
       <ul><li>background: <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/background-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/background-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/background-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/background-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/background-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/background-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/background-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/background-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/background-8.html">8</a></li><li>common: <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/common-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/common-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/common-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/common-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/common-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/common-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/common-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/common-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/common-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/common-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/common-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/common-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/common-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/common-13.html">13</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/common-14.html">14</a></li><li>ui: <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/ui-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/ui-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/ui-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/ui-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/ui-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/ui-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/ui-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/ui-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/ui-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/ui-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/ui-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/ui-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/ui-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/313d025d-5fc5-4cea-aa23-36bcefdf2870/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/313d025d-5fc5-4cea-aa23-36bcefdf2870/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/313d025d-5fc5-4cea-aa23-36bcefdf2870/artifacts/0/build-artifacts/source-map-explorer/offscreen-0.html">0</a></li></ul>
     </details></li></ul></details>

<details><summary>UI Startup Metrics (1216 ± 60 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">1216</td><td align="right">1099</td><td align="right">1368</td><td align="right">60</td><td align="right">1255</td><td align="right">1325</td></tr><tr><td>load</td><td align="right">1043</td><td align="right">913</td><td align="right">1184</td><td align="right">59</td><td align="right">1080</td><td align="right">1153</td></tr><tr><td>domContentLoaded</td><td align="right">1036</td><td align="right">908</td><td align="right">1177</td><td align="right">60</td><td align="right">1077</td><td align="right">1148</td></tr><tr><td>domInteractive</td><td align="right">16</td><td align="right">13</td><td align="right">32</td><td align="right">3</td><td align="right">16</td><td align="right">25</td></tr><tr><td>firstPaint</td><td align="right">714</td><td align="right">80</td><td align="right">1182</td><td align="right">412</td><td align="right">1062</td><td align="right">1143</td></tr><tr><td>backgroundConnect</td><td align="right">7</td><td align="right">4</td><td align="right">23</td><td align="right">3</td><td align="right">8</td><td align="right">11</td></tr><tr><td>firstReactRender</td><td align="right">20</td><td align="right">16</td><td align="right">62</td><td align="right">7</td><td align="right">20</td><td align="right">27</td></tr><tr><td>getState</td><td align="right">15</td><td align="right">6</td><td align="right">52</td><td align="right">8</td><td align="right">21</td><td align="right">28</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">671</td><td align="right">940</td><td align="right">60</td><td align="right">835</td><td align="right">908</td></tr><tr><td>setupStore</td><td align="right">8</td><td align="right">5</td><td align="right">22</td><td align="right">3</td><td align="right">9</td><td align="right">13</td></tr><tr><td rowspan="11">Webpack</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">2169</td><td align="right">1719</td><td align="right">2545</td><td align="right">166</td><td align="right">2282</td><td align="right">2367</td></tr><tr><td>load</td><td align="right">1689</td><td align="right">1281</td><td align="right">2087</td><td align="right">139</td><td align="right">1769</td><td align="right">1873</td></tr><tr><td>domContentLoaded</td><td align="right">1682</td><td align="right">1277</td><td align="right">2076</td><td align="right">138</td><td align="right">1762</td><td align="right">1869</td></tr><tr><td>domInteractive</td><td align="right">15</td><td align="right">11</td><td align="right">47</td><td align="right">9</td><td align="right">13</td><td align="right">42</td></tr><tr><td>firstPaint</td><td align="right">161</td><td align="right">61</td><td align="right">322</td><td align="right">54</td><td align="right">185</td><td align="right">272</td></tr><tr><td>backgroundConnect</td><td align="right">26</td><td align="right">9</td><td align="right">74</td><td align="right">13</td><td align="right">32</td><td align="right">54</td></tr><tr><td>firstReactRender</td><td align="right">136</td><td align="right">43</td><td align="right">448</td><td align="right">97</td><td align="right">235</td><td align="right">330</td></tr><tr><td>getState</td><td align="right">12</td><td align="right">4</td><td align="right">46</td><td align="right">8</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">8</td><td align="right">1</td><td align="right">4</td><td align="right">5</td></tr><tr><td>loadScripts</td><td align="right">1677</td><td align="right">1274</td><td align="right">2060</td><td align="right">138</td><td align="right">1760</td><td align="right">1865</td></tr><tr><td>setupStore</td><td align="right">23</td><td align="right">7</td><td align="right">275</td><td align="right">37</td><td align="right">22</td><td align="right">41</td></tr><tr><td rowspan="22">Firefox</td><td rowspan="11">Browserify</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1490</td><td align="right">1305</td><td align="right">1943</td><td align="right">133</td><td align="right">1548</td><td align="right">1798</td></tr><tr><td>load</td><td align="right">1313</td><td align="right">1123</td><td align="right">1791</td><td align="right">124</td><td align="right">1378</td><td align="right">1584</td></tr><tr><td>domContentLoaded</td><td align="right">1313</td><td align="right">1123</td><td align="right">1791</td><td align="right">124</td><td align="right">1378</td><td align="right">1584</td></tr><tr><td>domInteractive</td><td align="right">111</td><td align="right">39</td><td align="right">315</td><td align="right">38</td><td align="right">128</td><td align="right">180</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">28</td><td align="right">16</td><td align="right">221</td><td align="right">23</td><td align="right">26</td><td align="right">59</td></tr><tr><td>firstReactRender</td><td align="right">26</td><td align="right">21</td><td align="right">68</td><td align="right">6</td><td align="right">26</td><td align="right">30</td></tr><tr><td>getState</td><td align="right">17</td><td align="right">6</td><td align="right">255</td><td align="right">41</td><td align="right">10</td><td align="right">18</td></tr><tr><td>initialActions</td><td align="right">0</td><td align="right">0</td><td align="right">34</td><td align="right">3</td><td align="right">0</td><td align="right">1</td></tr><tr><td>loadScripts</td><td align="right">1289</td><td align="right">1103</td><td align="right">1766</td><td align="right">122</td><td align="right">1355</td><td align="right">1561</td></tr><tr><td>setupStore</td><td align="right">7</td><td align="right">4</td><td align="right">40</td><td align="right">4</td><td align="right">7</td><td align="right">10</td></tr><tr><td rowspan="11">Webpack</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1575</td><td align="right">1354</td><td align="right">2330</td><td align="right">167</td><td align="right">1638</td><td align="right">1921</td></tr><tr><td>load</td><td align="right">1344</td><td align="right">1158</td><td align="right">1852</td><td align="right">140</td><td align="right">1425</td><td align="right">1621</td></tr><tr><td>domContentLoaded</td><td align="right">1343</td><td align="right">1158</td><td align="right">1852</td><td align="right">140</td><td align="right">1425</td><td align="right">1621</td></tr><tr><td>domInteractive</td><td align="right">83</td><td align="right">37</td><td align="right">359</td><td align="right">42</td><td align="right">87</td><td align="right">121</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">16</td><td align="right">46</td><td align="right">6</td><td align="right">24</td><td align="right">30</td></tr><tr><td>firstReactRender</td><td align="right">35</td><td align="right">28</td><td align="right">57</td><td align="right">5</td><td align="right">37</td><td align="right">44</td></tr><tr><td>getState</td><td align="right">13</td><td align="right">4</td><td align="right">200</td><td align="right">26</td><td align="right">9</td><td align="right">30</td></tr><tr><td>initialActions</td><td align="right">0</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">1324</td><td align="right">1145</td><td align="right">1830</td><td align="right">140</td><td align="right">1406</td><td align="right">1602</td></tr><tr><td>setupStore</td><td align="right">10</td><td align="right">5</td><td align="right">274</td><td align="right">27</td><td align="right">8</td><td align="right">18</td></tr></tbody></table>cc: @HowardBraham<br>
Benchmark value 1491 exceeds gate value 1405 for firefox browserify home mean uiStartup<br>
Benchmark value 1314 exceeds gate value 1245 for firefox browserify home mean load<br>
Benchmark value 1313 exceeds gate value 1239 for firefox browserify home mean domContentLoaded<br>
Benchmark value 111 exceeds gate value 110 for firefox browserify home mean domInteractive<br>
Benchmark value 28 exceeds gate value 25 for firefox browserify home mean backgroundConnect<br>
Benchmark value 26 exceeds gate value 25 for firefox browserify home mean firstReactRender<br>
Benchmark value 17 exceeds gate value 11 for firefox browserify home mean getState<br>
Benchmark value 1289 exceeds gate value 1230 for firefox browserify home mean loadScripts<br>
Benchmark value 1798 exceeds gate value 1660 for firefox browserify home p95 uiStartup<br>
Benchmark value 1584 exceeds gate value 1495 for firefox browserify home p95 load<br>
Benchmark value 1584 exceeds gate value 1495 for firefox browserify home p95 domContentLoaded<br>
Benchmark value 1561 exceeds gate value 1475 for firefox browserify home p95 loadScripts<br>
<b>Sum of mean exceeds: 299ms | Sum of p95 exceeds: 402ms<br>
Sum of all benchmark exceeds: 701ms</b><br>
</details>

<details><summary>Bundle size diffs [🚨 Warning! Bundle size has increased!]</summary><ul><li>background: 0 Bytes (0%)</li>
<li>ui: 405 Bytes (0.01%)</li>
<li>common: 59 Bytes (0%)</li></ul></details>


author_association: COLLABORATOR
user: login: metamaskbot
created_at: 2025-05-21T12:58:46Z
body: <details><summary>Builds ready [79bed4d]</summary><ul><li>builds: <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/builds/metamask-chrome-12.18.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/builds-mv2/metamask-firefox-12.18.0.zip">firefox</a></li>
<li>builds (beta): <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15162140482/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/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/builds-flask/metamask-flask-chrome-12.18.0-flask.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/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/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/builds-test/metamask-chrome-12.18.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/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/57855239-cb95-4c84-ba9e-ce3a7d5d6826/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/57855239-cb95-4c84-ba9e-ce3a7d5d6826/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/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/build-viz/index.html">Build System</a></li>
<li>bundle size: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15162140482/bundle-size/bundle_size.json">Bundle Size Stats</a></li>
<li>user-actions-benchmark: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15162140482/benchmarks/benchmark-chrome-browserify-userActions.json">User Actions Stats</a></li>
<li>storybook: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15162140482/storybook-build/index.html">Storybook</a></li>
<li>typescript migration: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15162140482/ts-migration-dashboard/index.html">Dashboard</a></li>
<li><a href="https://app.circleci.com/pipelines/github/MetaMask/metamask-extension/jobs/4904324/artifacts/">all CircleCI artifacts</a></li>
<li><details>
       <summary>bundle viz:</summary>
       <ul><li>background: <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/background-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/background-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/background-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/background-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/background-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/background-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/background-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/background-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/background-8.html">8</a></li><li>common: <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/common-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/common-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/common-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/common-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/common-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/common-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/common-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/common-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/common-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/common-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/common-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/common-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/common-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/common-13.html">13</a></li><li>ui: <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/ui-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/ui-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/ui-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/ui-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/ui-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/ui-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/ui-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/ui-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/ui-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/ui-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/ui-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/ui-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/ui-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/57855239-cb95-4c84-ba9e-ce3a7d5d6826/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/57855239-cb95-4c84-ba9e-ce3a7d5d6826/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/57855239-cb95-4c84-ba9e-ce3a7d5d6826/artifacts/0/build-artifacts/source-map-explorer/offscreen-0.html">0</a></li></ul>
     </details></li></ul></details>

<details><summary>UI Startup Metrics (1205 ± 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">1205</td><td align="right">1082</td><td align="right">1390</td><td align="right">63</td><td align="right">1251</td><td align="right">1322</td></tr><tr><td>load</td><td align="right">1045</td><td align="right">934</td><td align="right">1181</td><td align="right">57</td><td align="right">1092</td><td align="right">1164</td></tr><tr><td>domContentLoaded</td><td align="right">1038</td><td align="right">926</td><td align="right">1172</td><td align="right">58</td><td align="right">1088</td><td align="right">1156</td></tr><tr><td>domInteractive</td><td align="right">16</td><td align="right">13</td><td align="right">32</td><td align="right">4</td><td align="right">16</td><td align="right">25</td></tr><tr><td>firstPaint</td><td align="right">814</td><td align="right">155</td><td align="right">1179</td><td align="right">381</td><td align="right">1073</td><td align="right">1163</td></tr><tr><td>backgroundConnect</td><td align="right">8</td><td align="right">5</td><td align="right">33</td><td align="right">5</td><td align="right">8</td><td align="right">22</td></tr><tr><td>firstReactRender</td><td align="right">19</td><td align="right">16</td><td align="right">37</td><td align="right">3</td><td align="right">20</td><td align="right">24</td></tr><tr><td>getState</td><td align="right">14</td><td align="right">5</td><td align="right">39</td><td align="right">7</td><td align="right">19</td><td align="right">27</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">697</td><td align="right">930</td><td align="right">56</td><td align="right">840</td><td align="right">902</td></tr><tr><td>setupStore</td><td align="right">8</td><td align="right">5</td><td align="right">22</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">2173</td><td align="right">1728</td><td align="right">2707</td><td align="right">205</td><td align="right">2289</td><td align="right">2513</td></tr><tr><td>load</td><td align="right">1682</td><td align="right">1341</td><td align="right">2073</td><td align="right">147</td><td align="right">1788</td><td align="right">1941</td></tr><tr><td>domContentLoaded</td><td align="right">1672</td><td align="right">1338</td><td align="right">2061</td><td align="right">142</td><td align="right">1757</td><td align="right">1920</td></tr><tr><td>domInteractive</td><td align="right">15</td><td align="right">12</td><td align="right">54</td><td align="right">9</td><td align="right">13</td><td align="right">39</td></tr><tr><td>firstPaint</td><td align="right">159</td><td align="right">64</td><td align="right">526</td><td align="right">66</td><td align="right">179</td><td align="right">267</td></tr><tr><td>backgroundConnect</td><td align="right">30</td><td align="right">9</td><td align="right">342</td><td align="right">46</td><td align="right">29</td><td align="right">49</td></tr><tr><td>firstReactRender</td><td align="right">148</td><td align="right">43</td><td align="right">372</td><td align="right">110</td><td align="right">284</td><td align="right">345</td></tr><tr><td>getState</td><td align="right">12</td><td align="right">4</td><td align="right">48</td><td align="right">8</td><td align="right">15</td><td align="right">31</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">5</td></tr><tr><td>loadScripts</td><td align="right">1669</td><td align="right">1336</td><td align="right">2050</td><td align="right">141</td><td align="right">1753</td><td align="right">1908</td></tr><tr><td>setupStore</td><td align="right">47</td><td align="right">7</td><td align="right">308</td><td align="right">84</td><td align="right">24</td><td align="right">283</td></tr><tr><td rowspan="22">Firefox</td><td rowspan="11">Browserify</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1299</td><td align="right">1147</td><td align="right">1639</td><td align="right">114</td><td align="right">1318</td><td align="right">1543</td></tr><tr><td>load</td><td align="right">1150</td><td align="right">1006</td><td align="right">1473</td><td align="right">104</td><td align="right">1179</td><td align="right">1370</td></tr><tr><td>domContentLoaded</td><td align="right">1149</td><td align="right">1005</td><td align="right">1473</td><td align="right">104</td><td align="right">1179</td><td align="right">1369</td></tr><tr><td>domInteractive</td><td align="right">91</td><td align="right">35</td><td align="right">199</td><td align="right">26</td><td align="right">96</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">13</td><td align="right">156</td><td align="right">17</td><td align="right">20</td><td align="right">39</td></tr><tr><td>firstReactRender</td><td align="right">24</td><td align="right">20</td><td align="right">57</td><td align="right">6</td><td align="right">25</td><td align="right">34</td></tr><tr><td>getState</td><td align="right">10</td><td align="right">4</td><td align="right">190</td><td align="right">19</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">1131</td><td align="right">991</td><td align="right">1424</td><td align="right">101</td><td align="right">1163</td><td align="right">1348</td></tr><tr><td>setupStore</td><td align="right">6</td><td align="right">4</td><td align="right">25</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">1611</td><td align="right">1414</td><td align="right">2209</td><td align="right">166</td><td align="right">1684</td><td align="right">2025</td></tr><tr><td>load</td><td align="right">1389</td><td align="right">1219</td><td align="right">1975</td><td align="right">155</td><td align="right">1469</td><td align="right">1749</td></tr><tr><td>domContentLoaded</td><td align="right">1389</td><td align="right">1218</td><td align="right">1975</td><td align="right">155</td><td align="right">1469</td><td align="right">1747</td></tr><tr><td>domInteractive</td><td align="right">81</td><td align="right">37</td><td align="right">170</td><td align="right">20</td><td align="right">91</td><td align="right">121</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">56</td><td align="right">7</td><td align="right">24</td><td align="right">42</td></tr><tr><td>firstReactRender</td><td align="right">41</td><td align="right">29</td><td align="right">52</td><td align="right">5</td><td align="right">44</td><td align="right">49</td></tr><tr><td>getState</td><td align="right">11</td><td align="right">5</td><td align="right">256</td><td align="right">25</td><td align="right">10</td><td align="right">14</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">1369</td><td align="right">1194</td><td align="right">1953</td><td align="right">154</td><td align="right">1451</td><td align="right">1722</td></tr><tr><td>setupStore</td><td align="right">11</td><td align="right">6</td><td align="right">244</td><td align="right">24</td><td align="right">9</td><td align="right">16</td></tr></tbody></table>cc: @HowardBraham<br>
Benchmark value 815 exceeds gate value 800 for chrome browserify home mean firstPaint<br>
Benchmark value 22 exceeds gate value 18 for chrome browserify home p95 backgroundConnect<br>
Benchmark value 48 exceeds gate value 32 for chrome webpack home mean setupStore<br>
Benchmark value 2514 exceeds gate value 2454 for chrome webpack home p95 uiStartup<br>
Benchmark value 283 exceeds gate value 65 for chrome webpack home p95 setupStore<br>
Benchmark value 1390 exceeds gate value 1380 for firefox webpack home mean load<br>
Benchmark value 1389 exceeds gate value 1380 for firefox webpack home mean domContentLoaded<br>
Benchmark value 41 exceeds gate value 38 for firefox webpack home mean firstReactRender<br>
Benchmark value 1369 exceeds gate value 1360 for firefox webpack home mean loadScripts<br>
Benchmark value 2025 exceeds gate value 1935 for firefox webpack home p95 uiStartup<br>
Benchmark value 1749 exceeds gate value 1660 for firefox webpack home p95 load<br>
Benchmark value 1747 exceeds gate value 1660 for firefox webpack home p95 domContentLoaded<br>
Benchmark value 1722 exceeds gate value 1630 for firefox webpack home p95 loadScripts<br>
<b>Sum of mean exceeds: 62ms | Sum of p95 exceeds: 640ms<br>
Sum of all benchmark exceeds: 702ms</b><br>
</details>

<details><summary>Bundle size diffs [🚨 Warning! Bundle size has increased!]</summary><ul><li>background: 0 Bytes (0%)</li>
<li>ui: 405 Bytes (0.01%)</li>
<li>common: 59 Bytes (0%)</li></ul></details>


author_association: COLLABORATOR
user: login: metamaskbot
created_at: 2025-05-27T09:40:25Z
body: <details><summary>Builds ready [4f012e9]</summary><ul><li>builds: <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/builds/metamask-chrome-12.18.1.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/builds-mv2/metamask-firefox-12.18.1.zip">firefox</a></li>
<li>builds (beta): <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15271201580/builds-beta/metamask-beta-chrome-12.18.1-beta.0.zip">chrome</a></li>
<li>builds (flask): <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/builds-flask/metamask-flask-chrome-12.18.1-flask.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/builds-flask-mv2/metamask-flask-firefox-12.18.1-flask.0.zip">firefox</a></li>
<li>builds (test): <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/builds-test/metamask-chrome-12.18.1.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/builds-test-mv2/metamask-firefox-12.18.1.zip">firefox</a></li>
<li>builds (test-flask): <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/builds-test-flask/metamask-flask-chrome-12.18.1-flask.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/builds-test-flask-mv2/metamask-flask-firefox-12.18.1-flask.0.zip">firefox</a></li>
<li>build viz: <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/build-viz/index.html">Build System</a></li>
<li>bundle size: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15271201580/bundle-size/bundle_size.json">Bundle Size Stats</a></li>
<li>user-actions-benchmark: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15271201580/benchmarks/benchmark-chrome-browserify-userActions.json">User Actions Stats</a></li>
<li>storybook: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15271201580/storybook-build/index.html">Storybook</a></li>
<li>typescript migration: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15271201580/ts-migration-dashboard/index.html">Dashboard</a></li>
<li><a href="https://app.circleci.com/pipelines/github/MetaMask/metamask-extension/jobs/4911564/artifacts/">all CircleCI artifacts</a></li>
<li><details>
       <summary>bundle viz:</summary>
       <ul><li>background: <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/background-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/background-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/background-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/background-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/background-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/background-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/background-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/background-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/background-8.html">8</a></li><li>common: <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/common-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/common-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/common-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/common-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/common-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/common-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/common-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/common-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/common-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/common-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/common-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/common-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/common-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/common-13.html">13</a></li><li>ui: <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/ui-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/ui-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/ui-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/ui-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/ui-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/ui-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/ui-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/ui-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/ui-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/ui-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/ui-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/ui-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/ui-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/77bedbe1-06c9-4455-96e6-40e05fb206c7/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/77bedbe1-06c9-4455-96e6-40e05fb206c7/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/77bedbe1-06c9-4455-96e6-40e05fb206c7/artifacts/0/build-artifacts/source-map-explorer/offscreen-0.html">0</a></li></ul>
     </details></li></ul></details>

<details><summary>UI Startup Metrics (1215 ± 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">1215</td><td align="right">1091</td><td align="right">1377</td><td align="right">66</td><td align="right">1272</td><td align="right">1319</td></tr><tr><td>load</td><td align="right">1055</td><td align="right">939</td><td align="right">1167</td><td align="right">59</td><td align="right">1104</td><td align="right">1143</td></tr><tr><td>domContentLoaded</td><td align="right">1048</td><td align="right">922</td><td align="right">1161</td><td align="right">60</td><td align="right">1097</td><td align="right">1137</td></tr><tr><td>domInteractive</td><td align="right">17</td><td align="right">13</td><td align="right">51</td><td align="right">6</td><td align="right">16</td><td align="right">32</td></tr><tr><td>firstPaint</td><td align="right">834</td><td align="right">136</td><td align="right">1160</td><td align="right">379</td><td align="right">1096</td><td align="right">1136</td></tr><tr><td>backgroundConnect</td><td align="right">8</td><td align="right">4</td><td align="right">31</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">37</td><td align="right">4</td><td align="right">20</td><td align="right">28</td></tr><tr><td>getState</td><td align="right">15</td><td align="right">6</td><td align="right">110</td><td align="right">12</td><td align="right">19</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">809</td><td align="right">693</td><td align="right">923</td><td align="right">58</td><td align="right">853</td><td align="right">892</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">2159</td><td align="right">1730</td><td align="right">2615</td><td align="right">199</td><td align="right">2280</td><td align="right">2510</td></tr><tr><td>load</td><td align="right">1665</td><td align="right">1348</td><td align="right">1952</td><td align="right">145</td><td align="right">1769</td><td align="right">1900</td></tr><tr><td>domContentLoaded</td><td align="right">1659</td><td align="right">1344</td><td align="right">1944</td><td align="right">145</td><td align="right">1763</td><td align="right">1893</td></tr><tr><td>domInteractive</td><td align="right">15</td><td align="right">11</td><td align="right">51</td><td align="right">8</td><td align="right">13</td><td align="right">41</td></tr><tr><td>firstPaint</td><td align="right">176</td><td align="right">65</td><td align="right">364</td><td align="right">58</td><td align="right">215</td><td align="right">275</td></tr><tr><td>backgroundConnect</td><td align="right">23</td><td align="right">10</td><td align="right">47</td><td align="right">8</td><td align="right">27</td><td align="right">40</td></tr><tr><td>firstReactRender</td><td align="right">138</td><td align="right">43</td><td align="right">358</td><td align="right">101</td><td align="right">183</td><td align="right">337</td></tr><tr><td>getState</td><td align="right">21</td><td align="right">4</td><td align="right">375</td><td align="right">55</td><td align="right">15</td><td align="right">24</td></tr><tr><td>initialActions</td><td align="right">3</td><td align="right">1</td><td align="right">11</td><td align="right">1</td><td align="right">3</td><td align="right">5</td></tr><tr><td>loadScripts</td><td align="right">1656</td><td align="right">1342</td><td align="right">1934</td><td align="right">143</td><td align="right">1758</td><td align="right">1890</td></tr><tr><td>setupStore</td><td align="right">51</td><td align="right">6</td><td align="right">328</td><td align="right">93</td><td align="right">22</td><td align="right">307</td></tr><tr><td rowspan="22">Firefox</td><td rowspan="11">Browserify</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1315</td><td align="right">1143</td><td align="right">1837</td><td align="right">135</td><td align="right">1373</td><td align="right">1648</td></tr><tr><td>load</td><td align="right">1161</td><td align="right">1008</td><td align="right">1567</td><td align="right">119</td><td align="right">1216</td><td align="right">1423</td></tr><tr><td>domContentLoaded</td><td align="right">1161</td><td align="right">1008</td><td align="right">1567</td><td align="right">119</td><td align="right">1216</td><td align="right">1423</td></tr><tr><td>domInteractive</td><td align="right">93</td><td align="right">40</td><td align="right">270</td><td align="right">31</td><td align="right">98</td><td align="right">157</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">12</td><td align="right">83</td><td align="right">11</td><td align="right">20</td><td align="right">37</td></tr><tr><td>firstReactRender</td><td align="right">24</td><td align="right">20</td><td align="right">58</td><td align="right">6</td><td align="right">23</td><td align="right">31</td></tr><tr><td>getState</td><td align="right">10</td><td align="right">4</td><td align="right">242</td><td align="right">24</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">1143</td><td align="right">995</td><td align="right">1545</td><td align="right">118</td><td align="right">1196</td><td align="right">1390</td></tr><tr><td>setupStore</td><td align="right">6</td><td align="right">4</td><td align="right">35</td><td align="right">4</td><td align="right">6</td><td align="right">12</td></tr><tr><td rowspan="11">Webpack</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1562</td><td align="right">1359</td><td align="right">2094</td><td align="right">149</td><td align="right">1670</td><td align="right">1856</td></tr><tr><td>load</td><td align="right">1355</td><td align="right">1167</td><td align="right">1843</td><td align="right">140</td><td align="right">1467</td><td align="right">1590</td></tr><tr><td>domContentLoaded</td><td align="right">1354</td><td align="right">1167</td><td align="right">1843</td><td align="right">140</td><td align="right">1467</td><td align="right">1590</td></tr><tr><td>domInteractive</td><td align="right">79</td><td align="right">52</td><td align="right">162</td><td align="right">18</td><td align="right">84</td><td align="right">111</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">15</td><td align="right">53</td><td align="right">6</td><td align="right">22</td><td align="right">39</td></tr><tr><td>firstReactRender</td><td align="right">39</td><td align="right">27</td><td align="right">49</td><td align="right">4</td><td align="right">42</td><td align="right">47</td></tr><tr><td>getState</td><td align="right">9</td><td align="right">5</td><td align="right">32</td><td align="right">5</td><td align="right">9</td><td align="right">21</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">1336</td><td align="right">1156</td><td align="right">1822</td><td align="right">140</td><td align="right">1441</td><td align="right">1572</td></tr><tr><td>setupStore</td><td align="right">9</td><td align="right">5</td><td align="right">216</td><td align="right">21</td><td align="right">8</td><td align="right">10</td></tr></tbody></table>Benchmark value 835 exceeds gate value 800 for chrome browserify home mean firstPaint<br>
Benchmark value 24 exceeds gate value 18 for chrome browserify home p95 backgroundConnect<br>
Benchmark value 52 exceeds gate value 32 for chrome webpack home mean setupStore<br>
Benchmark value 2510 exceeds gate value 2454 for chrome webpack home p95 uiStartup<br>
Benchmark value 307 exceeds gate value 65 for chrome webpack home p95 setupStore<br>
Benchmark value 39 exceeds gate value 38 for firefox webpack home mean firstReactRender<br>
<b>Sum of mean exceeds: 56ms | Sum of p95 exceeds: 304ms<br>
Sum of all benchmark exceeds: 360ms</b><br>
</details>

<details><summary>Bundle size diffs [🚨 Warning! Bundle size has increased!]</summary><ul><li>background: 0 Bytes (0%)</li>
<li>ui: 357 Bytes (0%)</li>
<li>common: 59 Bytes (0%)</li></ul></details>


author_association: COLLABORATOR
user: login: metamaskbot
created_at: 2025-05-27T16:22:40Z
body: <details><summary>Builds ready [a8754f6]</summary><ul><li>builds: <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/builds/metamask-chrome-12.18.1.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/builds-mv2/metamask-firefox-12.18.1.zip">firefox</a></li>
<li>builds (beta): <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15279861214/builds-beta/metamask-beta-chrome-12.18.1-beta.0.zip">chrome</a></li>
<li>builds (flask): <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/builds-flask/metamask-flask-chrome-12.18.1-flask.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/builds-flask-mv2/metamask-flask-firefox-12.18.1-flask.0.zip">firefox</a></li>
<li>builds (test): <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/builds-test/metamask-chrome-12.18.1.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/builds-test-mv2/metamask-firefox-12.18.1.zip">firefox</a></li>
<li>builds (test-flask): <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/builds-test-flask/metamask-flask-chrome-12.18.1-flask.0.zip">chrome</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/builds-test-flask-mv2/metamask-flask-firefox-12.18.1-flask.0.zip">firefox</a></li>
<li>build viz: <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/build-viz/index.html">Build System</a></li>
<li>bundle size: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15279861214/bundle-size/bundle_size.json">Bundle Size Stats</a></li>
<li>user-actions-benchmark: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15279861214/benchmarks/benchmark-chrome-browserify-userActions.json">User Actions Stats</a></li>
<li>storybook: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15279861214/storybook-build/index.html">Storybook</a></li>
<li>typescript migration: <a href="https://diuv6g5fj9pvx.cloudfront.net/metamask-extension/15279861214/ts-migration-dashboard/index.html">Dashboard</a></li>
<li><a href="https://app.circleci.com/pipelines/github/MetaMask/metamask-extension/jobs/4912452/artifacts/">all CircleCI artifacts</a></li>
<li><details>
       <summary>bundle viz:</summary>
       <ul><li>background: <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/background-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/background-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/background-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/background-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/background-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/background-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/background-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/background-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/background-8.html">8</a></li><li>common: <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/common-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/common-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/common-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/common-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/common-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/common-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/common-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/common-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/common-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/common-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/common-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/common-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/common-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/common-13.html">13</a></li><li>ui: <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/ui-0.html">0</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/ui-1.html">1</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/ui-2.html">2</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/ui-3.html">3</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/ui-4.html">4</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/ui-5.html">5</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/ui-6.html">6</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/ui-7.html">7</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/ui-8.html">8</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/ui-9.html">9</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/ui-10.html">10</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/ui-11.html">11</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/ui-12.html">12</a>, <a href="https://output.circle-artifacts.com/output/job/4d58ffea-e292-4867-aca8-9ec480c8c4d3/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/4d58ffea-e292-4867-aca8-9ec480c8c4d3/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/4d58ffea-e292-4867-aca8-9ec480c8c4d3/artifacts/0/build-artifacts/source-map-explorer/offscreen-0.html">0</a></li></ul>
     </details></li></ul></details>

<details><summary>UI Startup Metrics (1244 ± 75 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">1244</td><td align="right">1105</td><td align="right">1482</td><td align="right">75</td><td align="right">1288</td><td align="right">1386</td></tr><tr><td>load</td><td align="right">1077</td><td align="right">942</td><td align="right">1327</td><td align="right">74</td><td align="right">1132</td><td align="right">1197</td></tr><tr><td>domContentLoaded</td><td align="right">1070</td><td align="right">938</td><td align="right">1320</td><td align="right">74</td><td align="right">1124</td><td align="right">1191</td></tr><tr><td>domInteractive</td><td align="right">17</td><td align="right">13</td><td align="right">31</td><td align="right">4</td><td align="right">16</td><td align="right">29</td></tr><tr><td>firstPaint</td><td align="right">761</td><td align="right">72</td><td align="right">1328</td><td align="right">433</td><td align="right">1114</td><td align="right">1198</td></tr><tr><td>backgroundConnect</td><td align="right">9</td><td align="right">4</td><td align="right">32</td><td align="right">5</td><td align="right">9</td><td align="right">22</td></tr><tr><td>firstReactRender</td><td align="right">20</td><td align="right">17</td><td align="right">41</td><td align="right">4</td><td align="right">20</td><td align="right">29</td></tr><tr><td>getState</td><td align="right">14</td><td align="right">6</td><td align="right">33</td><td align="right">7</td><td align="right">20</td><td align="right">27</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">824</td><td align="right">699</td><td align="right">976</td><td align="right">70</td><td align="right">878</td><td align="right">947</td></tr><tr><td>setupStore</td><td align="right">8</td><td align="right">5</td><td align="right">23</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">2090</td><td align="right">1671</td><td align="right">2561</td><td align="right">213</td><td align="right">2244</td><td align="right">2416</td></tr><tr><td>load</td><td align="right">1618</td><td align="right">1300</td><td align="right">1946</td><td align="right">153</td><td align="right">1721</td><td align="right">1848</td></tr><tr><td>domContentLoaded</td><td align="right">1612</td><td align="right">1296</td><td align="right">1932</td><td align="right">152</td><td align="right">1715</td><td align="right">1841</td></tr><tr><td>domInteractive</td><td align="right">15</td><td align="right">11</td><td align="right">74</td><td align="right">10</td><td align="right">13</td><td align="right">41</td></tr><tr><td>firstPaint</td><td align="right">170</td><td align="right">65</td><td align="right">660</td><td align="right">82</td><td align="right">195</td><td align="right">306</td></tr><tr><td>backgroundConnect</td><td align="right">21</td><td align="right">9</td><td align="right">53</td><td align="right">7</td><td align="right">25</td><td align="right">36</td></tr><tr><td>firstReactRender</td><td align="right">140</td><td align="right">43</td><td align="right">365</td><td align="right">102</td><td align="right">167</td><td align="right">325</td></tr><tr><td>getState</td><td align="right">13</td><td align="right">4</td><td align="right">312</td><td align="right">30</td><td align="right">12</td><td align="right">22</td></tr><tr><td>initialActions</td><td align="right">5</td><td align="right">1</td><td align="right">245</td><td align="right">24</td><td align="right">3</td><td align="right">5</td></tr><tr><td>loadScripts</td><td align="right">1609</td><td align="right">1294</td><td align="right">1922</td><td align="right">150</td><td align="right">1711</td><td align="right">1831</td></tr><tr><td>setupStore</td><td align="right">35</td><td align="right">7</td><td align="right">312</td><td align="right">74</td><td align="right">19</td><td align="right">303</td></tr><tr><td rowspan="22">Firefox</td><td rowspan="11">Browserify</td><td rowspan="11">Home</td><td>uiStartup</td><td align="right">1368</td><td align="right">1159</td><td align="right">2010</td><td align="right">123</td><td align="right">1416</td><td align="right">1574</td></tr><tr><td>load</td><td align="right">1207</td><td align="right">1023</td><td align="right">1569</td><td align="right">110</td><td align="right">1272</td><td align="right">1393</td></tr><tr><td>domContentLoaded</td><td align="right">1207</td><td align="right">1023</td><td align="right">1568</td><td align="right">110</td><td align="right">1272</td><td align="right">1392</td></tr><tr><td>domInteractive</td><td align="right">101</td><td align="right">38</td><td align="right">360</td><td align="right">39</td><td align="right">114</td><td align="right">155</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">13</td><td align="right">74</td><td align="right">8</td><td align="right">21</td><td align="right">37</td></tr><tr><td>firstReactRender</td><td align="right">25</td><td align="right">21</td><td align="right">75</td><td align="right">8</td><td align="right">24</td><td align="right">37</td></tr><tr><td>getState</td><td align="right">12</td><td align="right">5</td><td align="right">241</td><td align="right">30</td><td align="right">8</td><td align="right">13</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">1189</td><td align="right">1010</td><td align="right">1543</td><td align="right">109</td><td align="right">1258</td><td align="right">1376</td></tr><tr><td>setupStore</td><td align="right">7</td><td align="right">4</td><td align="right">37</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">1602</td><td align="right">1370</td><td align="right">2214</td><td align="right">184</td><td align="right">1703</td><td align="right">1970</td></tr><tr><td>load</td><td align="right">1378</td><td align="right">1184</td><td align="right">1938</td><td align="right">173</td><td align="right">1490</td><td align="right">1735</td></tr><tr><td>domContentLoaded</td><td align="right">1377</td><td align="right">1183</td><td align="right">1936</td><td align="right">173</td><td align="right">1490</td><td align="right">1735</td></tr><tr><td>domInteractive</td><td align="right">83</td><td align="right">39</td><td align="right">490</td><td align="right">45</td><td align="right">87</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">24</td><td align="right">17</td><td align="right">83</td><td align="right">9</td><td align="right">25</td><td align="right">41</td></tr><tr><td>firstReactRender</td><td align="right">42</td><td align="right">31</td><td align="right">57</td><td align="right">5</td><td align="right">44</td><td align="right">49</td></tr><tr><td>getState</td><td align="right">13</td><td align="right">5</td><td align="right">203</td><td align="right">20</td><td align="right">10</td><td align="right">32</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">1357</td><td align="right">1166</td><td align="right">1921</td><td align="right">173</td><td align="right">1467</td><td align="right">1719</td></tr><tr><td>setupStore</td><td align="right">9</td><td align="right">5</td><td align="right">79</td><td align="right">8</td><td align="right">8</td><td align="right">17</td></tr></tbody></table>Benchmark value 1245 exceeds gate value 1234 for chrome browserify home mean uiStartup<br>
Benchmark value 1078 exceeds gate value 1070 for chrome browserify home mean load<br>
Benchmark value 1070 exceeds gate value 1061 for chrome browserify home mean domContentLoaded<br>
Benchmark value 1386 exceeds gate value 1365 for chrome browserify home p95 uiStartup<br>
Benchmark value 1198 exceeds gate value 1190 for chrome browserify home p95 load<br>
Benchmark value 1191 exceeds gate value 1180 for chrome browserify home p95 domContentLoaded<br>
Benchmark value 1198 exceeds gate value 1180 for chrome browserify home p95 firstPaint<br>
Benchmark value 22 exceeds gate value 18 for chrome browserify home p95 backgroundConnect<br>
Benchmark value 947 exceeds gate value 940 for chrome browserify home p95 loadScripts<br>
Benchmark value 35 exceeds gate value 32 for chrome webpack home mean setupStore<br>
Benchmark value 303 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 13 exceeds gate value 11 for firefox browserify home mean getState<br>
Benchmark value 42 exceeds gate value 38 for firefox webpack home mean firstReactRender<br>
Benchmark value 1970 exceeds gate value 1935 for firefox webpack home p95 uiStartup<br>
Benchmark value 1735 exceeds gate value 1660 for firefox webpack home p95 load<br>
Benchmark value 1735 exceeds gate value 1660 for firefox webpack home p95 domContentLoaded<br>
Benchmark value 1719 exceeds gate value 1630 for firefox webpack home p95 loadScripts<br>
<b>Sum of mean exceeds: 38ms | Sum of p95 exceeds: 581ms<br>
Sum of all benchmark exceeds: 619ms</b><br>
</details>

<details><summary>Bundle size diffs [🚨 Warning! Bundle size has increased!]</summary><ul><li>background: 4.02 KiB (0.08%)</li>
<li>ui: 601 Bytes (0.01%)</li>
<li>common: 2.09 KiB (0.03%)</li></ul></details>


author_association: COLLABORATOR