Skip to content

Conversation

@metamaskbot
Copy link
Collaborator

@metamaskbot metamaskbot commented Nov 24, 2025

This PR syncs the stable branch to main for version 13.12.0.

Synchronization Process:

  • Fetches the latest changes from the remote repository
  • Resets the branch to match the stable branch
  • Attempts to merge changes from main into the branch
  • Handles merge conflicts if they occur

File Preservation:

Preserves specific files from the stable branch:

  • CHANGELOG.md
  • bitrise.yml
  • android/app/build.gradle
  • ios/MetaMask.xcodeproj/project.pbxproj
  • package.json

Indicates the next version candidate of main to 13.12.0


Note

Adds 13.10.1 release notes with key fixes and updates changelog comparison links.

  • Docs — CHANGELOG.md:
    • Add 13.10.1 release notes under Fixed: token balance fetching scope, dapp-swap fiat/conversion rates for native tokens, removal of an unnecessary extension permission, and missing native token balances in wallet.
    • Update comparison links: set [Unreleased] to compare from v13.10.1 and add [13.10.1] reference.

Written by Cursor Bugbot for commit d66f832. This will update automatically on new commits. Configure here.

metamaskbot and others added 10 commits November 21, 2025 06:59
…m fetching list of all accounts balances (#38098)

- fix: cp-13.10.1 prevent account list from fetching list of all
accounts balances (#38065)

<!--
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**

prevent token list from fetching balances for all accounts

<!--
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/38065?quickstart=1)

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: prevent token list from fetching balances for all
accounts

## **Related issues**

Fixes:

## **Manual testing steps**

1. Go to this page...
2.
3.

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [ ] 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).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] 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.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Pass `platform: 'extension'` to `TokenBalancesController` and switch
the hook’s `updateBalancesFoAccounts` flag to `false`, updating tests
accordingly.
> 
> - **Controllers**:
> - `TokenBalancesControllerInit` now passes `platform: 'extension'`
when constructing `TokenBalancesController`.
>   - Updated test to assert `platform: 'extension'` is provided.
> - **UI Hooks**:
> - `useAssetsUpdateAllAccountBalances` switches
`updateBalancesFoAccounts(enabledChainIds, false)` (from `true`).
> - Updated related tests to expect the new boolean argument and
re-render behavior.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
6236adc. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->


[b5eaa85](b5eaa85)

Co-authored-by: Salim TOUBAL <[email protected]>
<!--
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**

fix: dapp-swap comparison fiat rate fetching for native tokens

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry:

## **Related issues**

Fixes: MetaMask/MetaMask-planning#6327

## **Manual testing steps**

1. Trigger swap including native tokens
2. Check that fait conversion in metrics is correct

## **Screenshots/Recordings**
TODO

## **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.


<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Fetch fiat rates only for non-native tokens in the dapp-swap
comparison hook to correctly handle native assets.
> 
> - **Hooks**:
> - Update
`ui/pages/confirmations/hooks/transactions/dapp-swap-comparison/useDappSwapUSDValues.ts`
to filter out native addresses from `tokenAddresses` before calling
`fetchTokenExchangeRates('usd', ...)`, avoiding fiat rate requests for
native tokens.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
7ff0f9b. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
…ol native token (#38136)

- fix: cp-13.10.1 dapp swap fix conversion rate for pol native token
(#38102)

<!--
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**

Fix conversion rate for POL native token.

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry:

## **Related issues**

Fixes: https://github.com/MetaMask/MetaMask-planning/issues/6327

## **Manual testing steps**

1. Trigger swap including POL native token
2. Check that metrics are recorded correctly and dapp-swap UI shows
correct values

## **Screenshots/Recordings**
TODO

## **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.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Fixes USD rate lookup for Polygon native token by mapping native
address to `0x0000000000000000000000000000000000001010` and adds tests.
> 
> - **Hooks**:
> - Update
`ui/pages/confirmations/hooks/transactions/dapp-swap-comparison/useDappSwapUSDValues.ts`
to adjust fiat rate fetching:
> - When `chainId === CHAIN_IDS.POLYGON`, map the native asset address
to the rate from `0x0000000000000000000000000000000000001010`.
> - Wrap rate fetching in an async function to inject the
Polygon-specific mapping.
> - **Tests**:
>   - Enhance `useDappSwapUSDValues.test.ts`:
> - Allow `runHook` to accept custom `tokenAddresses` and
`mockConfirmation`.
> - Add Polygon-specific test asserting correct fiat rates for native
POL (`0x...0000`) and `0x0000000000000000000000000000000000001010`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
c7fe193. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->


[0aa98dc](0aa98dc)

Co-authored-by: Jyoti Puri <[email protected]>
…solve missing balance state (#38140)

- fix: cp-13.10.1 patch TokenBalancesController to resolve missing
balance state (#38126)

## **Description**

<!--
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/38126?quickstart=1)

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: fix missing native token balances in wallet balance

## **Related issues**

Fixes: #38114

## **Manual testing steps**

Onboard or existing user with AccountsAPI enabled
1. Go to a network with native + erc tokens
2. Notice aggregated wallet balance - it should have both native + erc
tokens aggregated together for the balance.

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

https://www.loom.com/share/aeccc8e3cef4479da0e9d44fc5ebf4fa

## **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.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Patches `TokenBalancesController` to use lowercase account addresses
for balance reads/writes and wires the patched
`@metamask/[email protected]` via Yarn patch.
> 
> - **Assets Controllers Patch
(`@metamask/[email protected]`)**:
> - Normalize `account` to lowercase in `TokenBalancesController` when
reading/updating `d.tokenBalances` (cjs/mjs builds), ensuring balance
updates are applied.
> - **Dependencies**:
> - Switch `@metamask/assets-controllers` in `package.json` to a Yarn
patch source and add patched entry in `yarn.lock`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
75c9d95. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->


[a2fe8c4](a2fe8c4)

Co-authored-by: Prithpal Sooriya <[email protected]>
This PR updates the change log for 13.10.1. (Hotfix - no test plan
generated.)

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Updates CHANGELOG with 13.10.1 fixes and adjusts version comparison
links.
> 
> - **Documentation** (`CHANGELOG.md`):
>   - **Add `13.10.1` – Fixed**:
>     - Prevent token list from fetching balances for all accounts.
>     - Correct dapp-swap comparison fiat rate for native tokens.
>     - Fix conversion rate for POL native token in dapp-swap.
>     - Remove unnecessary extension permission.
>     - Restore missing native token balances in wallet balance.
>   - **Links**:
>     - Update `[Unreleased]` compare link to start from `v13.10.1`.
>     - Add `[13.10.1]` compare link to `v13.10.0...v13.10.1`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
b15b274. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: metamaskbot <[email protected]>
Co-authored-by: Gauthier Petetin <[email protected]>
…ew warnings cp-13.10.1 (#38146)

- fix: Remove `tabs` permission to avoid new warnings cp-13.10.1
(#38075)

## **Description**

The recent addition of the `tabs` permission will result in new
permission warnings upon update, which is extremely disruptive and is
something we'd never do except as a last resort.

The permission wasn't actually needed, and has been removed. This
removal uncovered a bug in our Webpack build (the `tabs` permission was
erroneously only added for MV2 test builds, but we need it for MV3 test
builds as well), which has been fixed.

[![Open in GitHub

Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/38075?quickstart=1)

## **Changelog**

CHANGELOG entry: Remove unnecessary extension permission

## **Related issues**

N/A

## **Manual testing steps**

Test that the sidepanel still works in general. Particularly with dapp
confirmations, and the "Connected status" indicator, and current
selected dapp.

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [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).
- [ ] 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.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Removes the `tabs` permission from the MV3 base manifest.
> 
> - **Manifest (MV3)**:
> - Update `app/manifest/v3/_base.json` to remove `permissions` entry
`tabs`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
7778231. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->


[bba4201](bba4201)

Co-authored-by: Mark Stacey <[email protected]>
@github-actions
Copy link
Contributor

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.

@metamaskbot metamaskbot added the team-bots Bot team (for MetaMask Bot, Runway Bot, etc.) label Nov 24, 2025
@metamaskbot
Copy link
Collaborator Author

Builds ready [d66f832]
UI Startup Metrics (1190 ± 101 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1190983151510112261395
load100384612519210351191
domContentLoaded99784112379010301186
domInteractive27141472721102
firstPaint5279112473919831166
backgroundConnect2081952479212225
firstReactRender30195783646
getState351682134164
initialActions108114
loadScripts796647103489831975
setupStore1162941320
numNetworkReqs1257820573
BrowserifyPower User HomeuiStartup18401551316826320192374
load99187020051789831441
domContentLoaded97785519921769701429
domInteractive39162254831182
firstPaint5658115263849161320
backgroundConnect21720026112224239
firstReactRender79501411386105
getState17312832337179254
initialActions103112
loadScripts77565417891747641222
setupStore20952102644
numNetworkReqs1236527351155222
WebpackStandard HomeuiStartup805697105679825981
load63055685169642816
domContentLoaded62555284569639809
domInteractive2615106232297
firstPaint22874837172197630
backgroundConnect953041217
firstReactRender26194563137
getState281369123551
initialActions103111
loadScripts62255083667637801
setupStore1062941220
numNetworkReqs1257820572
WebpackPower User HomeuiStartup14561203244724116211957
load67258113771366591027
domContentLoaded66257313701366461020
domInteractive41182475030195
firstPaint24288781152234618
backgroundConnect1573361828
firstReactRender8351124129199
getState16212429440176252
initialActions103112
loadScripts65957113601346441011
setupStore22965143157
numNetworkReqs1436530153183266
FirefoxBrowserifyStandard HomeuiStartup12441088169211312971468
load104591012838210991210
domContentLoaded104490912838310991209
domInteractive60301753283135
firstPaint------
backgroundConnect3623111163771
firstReactRender22183942233
getState12615019921
initialActions103112
loadScripts102289212568010781185
setupStore11610711926
numNetworkReqs1156615653
BrowserifyPower User HomeuiStartup26711929391840929043692
load1193955177919512481627
domContentLoaded1192948177919612481627
domInteractive14234758135149477
firstPaint------
backgroundConnect221211132262233866
firstReactRender89441441799119
getState23684912228197850
initialActions3123337
loadScripts1147934175218511651601
setupStore103684116389553
numNetworkReqs91592214284197
WebpackStandard HomeuiStartup14051247200713114401708
load1185107215029412241398
domContentLoaded1185107215019412231398
domInteractive47261753349129
firstPaint------
backgroundConnect4019207254287
firstReactRender27206573038
getState136163191044
initialActions103122
loadScripts1162105714438712071345
setupStore12577131156
numNetworkReqs1256617663
WebpackPower User HomeuiStartup27602165343625429133373
load13711090187517715001741
domContentLoaded13701089187517714991741
domInteractive13030608132133482
firstPaint------
backgroundConnect14320656136186457
firstReactRender84401582093121
getState29773899282499838
initialActions4152738
loadScripts13321072183917314451708
setupStore90975613483471
numNetworkReqs915821940102189
📊 Page Load Benchmark Results

Current Commit: d66f832 | Date: 11/24/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±39ms) 🟡 | historical mean value: 1.05s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 736ms (±37ms) 🟢 | historical mean value: 731ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 79ms (±10ms) 🟢 | historical mean value: 79ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 39ms 1.03s 1.34s 1.09s 1.34s
domContentLoaded 736ms 37ms 712ms 1.00s 765ms 1.00s
firstPaint 79ms 10ms 64ms 164ms 88ms 164ms
firstContentfulPaint 79ms 10ms 64ms 164ms 88ms 164ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 53 Bytes (0%)
  • ui: 0 Bytes (0%)
  • common: 20 Bytes (0%)

@gauthierpetetin gauthierpetetin merged commit 0486119 into main Nov 24, 2025
85 of 86 checks passed
@gauthierpetetin gauthierpetetin deleted the stable-main-13.12.0 branch November 24, 2025 10:29
@github-actions github-actions bot locked and limited conversation to collaborators Nov 24, 2025
@metamaskbot metamaskbot added the release-13.12.0 Issue or pull request that will be included in release 13.12.0 label Nov 24, 2025
@gauthierpetetin gauthierpetetin changed the title release: sync stable to main for version 13.12.0 release: sync stable to main for version 13.10.1 Nov 25, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

release-13.12.0 Issue or pull request that will be included in release 13.12.0 team-bots Bot team (for MetaMask Bot, Runway Bot, etc.)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants