Skip to content

Conversation

@runway-github
Copy link
Contributor

@runway-github runway-github bot commented Sep 22, 2025

Description

This PR bumps the Solana snap to version 2.3.10.

Changelog

CHANGELOG entry: Added a mechanism on the Solana snap to time out
websocket subscriptions
(#525)
CHANGELOG entry: Offloaded the assets and transactions sync from account
creation on the Solana snap
(#528)
CHANGELOG entry: Enforced proper assets state sync between the Solana
snap and the client
(#529)

Related issues

Fixes:

Manual testing steps

  1. Go to this page...

Screenshots/Recordings

Before

After

Pre-merge author checklist

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. 6a30757

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

This PR bumps the Solana snap to version `2.3.10`.

CHANGELOG entry: Added a mechanism on the Solana snap to time out
websocket subscriptions
([#525](MetaMask/snap-solana-wallet#525))
CHANGELOG entry: Offloaded the assets and transactions sync from account
creation on the Solana snap
([#528](MetaMask/snap-solana-wallet#528))
CHANGELOG entry: Enforced proper assets state sync between the Solana
snap and the client
([#529](MetaMask/snap-solana-wallet#529))

Fixes:

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

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

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

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

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

- [ ] 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.
@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-runway-bot-deprecated DEPRECATED: please use "team-bots" instead label Sep 22, 2025
@socket-security
Copy link

socket-security bot commented Sep 22, 2025

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updated@​metamask/​solana-wallet-snap@​2.3.6 ⏵ 2.3.10100 +110088 +198 -1100

View full report

cursor[bot]

This comment was marked as outdated.

Copy link
Contributor

@gauthierpetetin gauthierpetetin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: 93dc192 | Date: 9/22/2025

📄 https://metamask.github.io/test-dapp/

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.28s (±64ms) 🟡
  • domContentLoaded-> current mean value: 961ms (±51ms) 🟢
  • firstContentfulPaint-> current mean value: 89ms (±25ms) 🟢
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.28s 64ms 1.25s 1.86s 1.33s 1.86s
domContentLoaded 961ms 51ms 932ms 1.43s 1.02s 1.43s
firstPaint 89ms 25ms 72ms 220ms 148ms 220ms
firstContentfulPaint 89ms 25ms 72ms 220ms 148ms 220ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [003cc46]
UI Startup Metrics (1200 ± 61 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1200107314136112351290
load104292912195410761130
domContentLoaded103592412075310661120
domInteractive17134261737
firstPaint71677118941210521118
backgroundConnect2362242637240252
firstReactRender23164562437
getState1253561424
initialActions51606611
loadScripts80670297353835892
setupStore962531014
WebpackHomeuiStartup19511478253826621522404
load15651178193120017021845
domContentLoaded15561171192519816921837
domInteractive161193131342
firstPaint1736144262210294
backgroundConnect3015324313056
firstReactRender75343205673260
getState3343177513279
initialActions7217117616
loadScripts15521169191019716891826
setupStore2563055913246
FirefoxBrowserifyHomeuiStartup14361215183313015031780
load1240105515549212931403
domContentLoaded1239105415549212931402
domInteractive1123342266125260
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3420104133863
firstReactRender27235742933
getState73859615
initialActions31193412
loadScripts1214103515168912701385
setupStore10510312931
WebpackHomeuiStartup15851367205713716821821
load13511159170011914331558
domContentLoaded13511159170011914331558
domInteractive98303135395251
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect31205173643
firstReactRender44355954752
getState63122710
initialActions411321338
loadScripts13281140168212014161539
setupStore10514213914
Benchmark value 237 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 6 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 253 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 11 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 33 exceeds gate value 29 for chrome webpack home mean getState
Benchmark value 279 exceeds gate value 195 for chrome webpack home p95 getState
Benchmark value 16 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 246 exceeds gate value 65 for chrome webpack home p95 setupStore
Benchmark value 1436 exceeds gate value 1405 for firefox browserify home mean uiStartup
Benchmark value 1240 exceeds gate value 1239 for firefox browserify home mean domContentLoaded
Benchmark value 112 exceeds gate value 110 for firefox browserify home mean domInteractive
Benchmark value 35 exceeds gate value 25 for firefox browserify home mean backgroundConnect
Benchmark value 28 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 4 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 11 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 1780 exceeds gate value 1660 for firefox browserify home p95 uiStartup
Benchmark value 260 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 12 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 31 exceeds gate value 27 for firefox browserify home p95 setupStore
Benchmark value 31 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 45 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 5 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 251 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 52 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 8 exceeds gate value 2 for firefox webpack home p95 initialActions
Sum of mean exceeds: 304ms | Sum of p95 exceeds: 820.8ms
Sum of all benchmark exceeds: 1124.8ms

@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: e18f21f | Date: 9/22/2025

📄 https://metamask.github.io/test-dapp/

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.27s (±47ms) 🟡
  • domContentLoaded-> current mean value: 961ms (±39ms) 🟢
  • firstContentfulPaint-> current mean value: 92ms (±41ms) 🟢
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.27s 47ms 1.24s 1.67s 1.33s 1.67s
domContentLoaded 961ms 39ms 934ms 1.28s 1.01s 1.28s
firstPaint 92ms 41ms 68ms 400ms 168ms 400ms
firstContentfulPaint 92ms 41ms 68ms 400ms 168ms 400ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [fcc6df6]
UI Startup Metrics (1214 ± 67 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1214109013896712611309
load105793711956411091152
domContentLoaded104993111856311021143
domInteractive17134371740
firstPaint665121118243110671155
backgroundConnect2372262637242251
firstReactRender23164862439
getState1154671327
initialActions40153511
loadScripts82071194063876911
setupStore961721013
WebpackHomeuiStartup20241504255725922022497
load16191209196119217391905
domContentLoaded16101204193919117281886
domInteractive171198141444
firstPaint1657736255192265
backgroundConnect3516343443268
firstReactRender82353245983278
getState3143046915274
initialActions62334611
loadScripts16061201192719017251872
setupStore206308461323
FirefoxBrowserifyHomeuiStartup13701169190711514211584
load1183102614637812321313
domContentLoaded1182102614627712321312
domInteractive1003247160102230
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect322198143464
firstReactRender26225942831
getState738712612
initialActions41405312
loadScripts1158100514447712101286
setupStore11523625833
WebpackHomeuiStartup16521381205715917751944
load14171168176814415361678
domContentLoaded14171167176814415351678
domInteractive1094135464103281
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect33206284049
firstReactRender45335544752
getState7311011713
initialActions411181239
loadScripts13931151174714415171657
setupStore95445918
Benchmark value 238 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 24 exceeds gate value 23 for chrome browserify home mean firstReactRender
Benchmark value 4 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 252 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 11 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 31 exceeds gate value 29 for chrome webpack home mean getState
Benchmark value 2497 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 274 exceeds gate value 195 for chrome webpack home p95 getState
Benchmark value 11 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 33 exceeds gate value 25 for firefox browserify home mean backgroundConnect
Benchmark value 27 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 4 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 12 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 230 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 12 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 33 exceeds gate value 27 for firefox browserify home p95 setupStore
Benchmark value 1652 exceeds gate value 1615 for firefox webpack home mean uiStartup
Benchmark value 1418 exceeds gate value 1380 for firefox webpack home mean load
Benchmark value 1417 exceeds gate value 1380 for firefox webpack home mean domContentLoaded
Benchmark value 110 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 34 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 45 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 5 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 1393 exceeds gate value 1360 for firefox webpack home mean loadScripts
Benchmark value 1944 exceeds gate value 1935 for firefox webpack home p95 uiStartup
Benchmark value 1678 exceeds gate value 1660 for firefox webpack home p95 load
Benchmark value 1678 exceeds gate value 1660 for firefox webpack home p95 domContentLoaded
Benchmark value 281 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 52 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 9 exceeds gate value 2 for firefox webpack home p95 initialActions
Benchmark value 1657 exceeds gate value 1630 for firefox webpack home p95 loadScripts
Sum of mean exceeds: 424ms | Sum of p95 exceeds: 626.8ms
Sum of all benchmark exceeds: 1050.8ms

@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: e140029 | Date: 9/22/2025

📄 https://metamask.github.io/test-dapp/

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.30s (±87ms) 🟡
  • domContentLoaded-> current mean value: 982ms (±77ms) 🟢
  • firstContentfulPaint-> current mean value: 90ms (±22ms) 🟢
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.30s 87ms 1.25s 1.87s 1.37s 1.87s
domContentLoaded 982ms 77ms 941ms 1.42s 1.04s 1.42s
firstPaint 90ms 22ms 68ms 200ms 152ms 200ms
firstContentfulPaint 90ms 22ms 68ms 200ms 152ms 200ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [2b62faa]
UI Startup Metrics (1201 ± 68 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1201106413586812481327
load104590012026810951177
domContentLoaded103889511946710891165
domInteractive17134871636
firstPaint63473119942610461131
backgroundConnect2342202536238246
firstReactRender23164452536
getState1253561629
initialActions40244510
loadScripts81267496166865932
setupStore952331115
WebpackHomeuiStartup20731503261225922382536
load16431217197819117591938
domContentLoaded16331206196419017441925
domInteractive191297171559
firstPaint1716239969199331
backgroundConnect3518340333663
firstReactRender97353358089317
getState4543298717281
initialActions9217023712
loadScripts16251203195219217371912
setupStore177286281624
FirefoxBrowserifyHomeuiStartup14651229199612115241702
load1265108115238413261428
domContentLoaded1265108115238413261427
domInteractive1133537565121268
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3621107143969
firstReactRender28235952936
getState9211617745
initialActions41899413
loadScripts1239106414538212931399
setupStore104648924
WebpackHomeuiStartup15381351206214416251789
load13151148169712514081552
domContentLoaded13141148169612514071552
domInteractive100303005696263
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect31218583640
firstReactRender42345444550
getState7312914612
initialActions5118719310
loadScripts12921128166912613851534
setupStore11517720916
Benchmark value 234 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 5 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 247 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 10 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 45 exceeds gate value 29 for chrome webpack home mean getState
Benchmark value 9 exceeds gate value 7 for chrome webpack home mean initialActions
Benchmark value 2537 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 59 exceeds gate value 57 for chrome webpack home p95 domInteractive
Benchmark value 281 exceeds gate value 195 for chrome webpack home p95 getState
Benchmark value 12 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 1466 exceeds gate value 1405 for firefox browserify home mean uiStartup
Benchmark value 1266 exceeds gate value 1245 for firefox browserify home mean load
Benchmark value 1266 exceeds gate value 1239 for firefox browserify home mean domContentLoaded
Benchmark value 114 exceeds gate value 110 for firefox browserify home mean domInteractive
Benchmark value 37 exceeds gate value 25 for firefox browserify home mean backgroundConnect
Benchmark value 28 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 5 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 1239 exceeds gate value 1230 for firefox browserify home mean loadScripts
Benchmark value 10 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 1702 exceeds gate value 1660 for firefox browserify home p95 uiStartup
Benchmark value 268 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 45 exceeds gate value 24 for firefox browserify home p95 getState
Benchmark value 13 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 101 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 31 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 42 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 6 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 263 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 10 exceeds gate value 2 for firefox webpack home p95 initialActions
Sum of mean exceeds: 403ms | Sum of p95 exceeds: 675.8ms
Sum of all benchmark exceeds: 1078.8ms

@xavier-brochard xavier-brochard requested a review from a team as a code owner September 23, 2025 06:42
@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: a2c2c47 | Date: 9/23/2025

📄 https://metamask.github.io/test-dapp/

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.28s (±66ms) 🟡
  • domContentLoaded-> current mean value: 965ms (±55ms) 🟢
  • firstContentfulPaint-> current mean value: 84ms (±18ms) 🟢
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.28s 66ms 1.25s 1.90s 1.32s 1.90s
domContentLoaded 965ms 55ms 935ms 1.47s 1.00s 1.47s
firstPaint 84ms 18ms 68ms 216ms 112ms 216ms
firstContentfulPaint 84ms 18ms 68ms 216ms 112ms 216ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [5815805]
UI Startup Metrics (1230 ± 68 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1230108414436812771323
load106794912546011121158
domContentLoaded106094512336011051150
domInteractive18135371739
firstPaint673162124542910781134
backgroundConnect2412232879244260
firstReactRender24164872542
getState1455991832
initialActions40385512
loadScripts82672098457870914
setupStore962131017
WebpackHomeuiStartup19761510243025621842387
load15771239186918216881837
domContentLoaded15691230185118116791821
domInteractive161174101342
firstPaint1596431052182252
backgroundConnect3013315302752
firstReactRender85343406977310
getState2753126512273
initialActions4219258
loadScripts15651228184017916751809
setupStore147237231325
FirefoxBrowserifyHomeuiStartup13531174175811014201586
load1183103214498512461331
domContentLoaded1183103114488512461330
domInteractive1123230760121278
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect29197493242
firstReactRender272211592830
getState7212414615
initialActions3047538
loadScripts1160101614218312261311
setupStore959711725
WebpackHomeuiStartup15941391196614316911859
load13661172164212314701562
domContentLoaded13651172164212314681562
domInteractive96342894898250
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect31215473645
firstReactRender43325544551
getState63122711
initialActions511251637
loadScripts13421141162012414481541
setupStore10512512916
Benchmark value 242 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 24 exceeds gate value 23 for chrome browserify home mean firstReactRender
Benchmark value 5 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 260 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 12 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 273 exceeds gate value 195 for chrome webpack home p95 getState
Benchmark value 8 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 113 exceeds gate value 110 for firefox browserify home mean domInteractive
Benchmark value 29 exceeds gate value 25 for firefox browserify home mean backgroundConnect
Benchmark value 27 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 3 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 278 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 8 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 32 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 43 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 5 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 250 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 51 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 7 exceeds gate value 2 for firefox webpack home p95 initialActions
Sum of mean exceeds: 263ms | Sum of p95 exceeds: 520.8ms
Sum of all benchmark exceeds: 783.8ms

xavier-brochard and others added 3 commits September 23, 2025 12:14
…35552)

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

As a follow-up of [this
PR](#35425), which
separated the logic for setting up the Websocket, from the test steps,
now this PR separates the logic for handling mocked wss requests from
the setup websocket server.

This means that now we can pass an array of websocket mocks.


Note, that the websocket mocks are different from the regular Http
mocks, they look like this:

```
export interface WebSocketMessageMock {
  messageIncludes: string | string[];
  response: object;
  delay?: number;
  logMessage?: string;
}
```

and the logic for handling the mocks is also different, as we are
handling this in our local websocket server. Meaning:

1. From Mocktt default mocks --> we check if we need a Websocket Solana
server, if so, we re-route any wss to the local wss
2. We setup the local Websocket server
3. We add 'onMessage' listeners to intercept the requests we want to
mock, and we send back the desired response



[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/35552?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`
4. 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:

## **Manual testing steps**

1. Go to this page...
2.
5.

## **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).
- [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.
<!--
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 enables the Solana websocket by default in all specs, and passes
the default solana mocks.
It enables tests to pass custom solana websocket mocks too.


Previous related work:

- #35552 
- #35425


[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/36165?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:

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/MMQA-1008

## **Manual testing steps**

1. Check ci


## **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).
- [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.
@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: ae48d28 | Date: 9/23/2025

📄 https://metamask.github.io/test-dapp/

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.28s (±81ms) 🟡
  • domContentLoaded-> current mean value: 966ms (±78ms) 🟢
  • firstContentfulPaint-> current mean value: 85ms (±16ms) 🟢
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.28s 81ms 1.24s 1.77s 1.35s 1.77s
domContentLoaded 966ms 78ms 932ms 1.45s 1.02s 1.45s
firstPaint 85ms 16ms 68ms 144ms 128ms 144ms
firstContentfulPaint 85ms 16ms 68ms 144ms 128ms 144ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [5cfb23e]
UI Startup Metrics (1193 ± 64 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1193107813966412261323
load103693012186010631152
domContentLoaded102992412116010551146
domInteractive17135161636
firstPaint716133121841410551165
backgroundConnect2352192658237250
firstReactRender23165962336
getState1252851424
initialActions40717510
loadScripts80268897260834914
setupStore95304918
WebpackHomeuiStartup20011489248025221382435
load16001205201219117141879
domContentLoaded15921201200219017061862
domInteractive1911109201375
firstPaint1606536766174307
backgroundConnect3012332322856
firstReactRender102333409190322
getState3843078214282
initialActions8227827613
loadScripts15881199199118917041849
setupStore206298481326
FirefoxBrowserifyHomeuiStartup13231169171211113841561
load1154102714418812151305
domContentLoaded1154102714418812151305
domInteractive952425043101207
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3118147173349
firstReactRender26225042832
getState63798613
initialActions3112238
loadScripts1131101314198711891278
setupStore947611745
WebpackHomeuiStartup15491371202315116371895
load13221162163912114231549
domContentLoaded13211161163912114231548
domInteractive1013335958100260
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect31195383646
firstReactRender42355644549
getState52152610
initialActions8120926317
loadScripts12991138161712214041521
setupStore10512913817
Benchmark value 235 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 5 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 250 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 10 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 18 exceeds gate value 17 for chrome browserify home p95 setupStore
Benchmark value 39 exceeds gate value 29 for chrome webpack home mean getState
Benchmark value 8 exceeds gate value 7 for chrome webpack home mean initialActions
Benchmark value 75 exceeds gate value 57 for chrome webpack home p95 domInteractive
Benchmark value 282 exceeds gate value 195 for chrome webpack home p95 getState
Benchmark value 13 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 31 exceeds gate value 25 for firefox browserify home mean backgroundConnect
Benchmark value 26 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 3 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 10 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 207 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 8 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 45 exceeds gate value 27 for firefox browserify home p95 setupStore
Benchmark value 101 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 31 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 42 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 8 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 260 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 17 exceeds gate value 2 for firefox webpack home p95 initialActions
Sum of mean exceeds: 267ms | Sum of p95 exceeds: 507.8ms
Sum of all benchmark exceeds: 774.8ms

seaona
seaona previously approved these changes Sep 23, 2025
@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: 12efb3d | Date: 9/23/2025

📄 https://metamask.github.io/test-dapp/

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.31s (±52ms) 🟡
  • domContentLoaded-> current mean value: 995ms (±49ms) 🟢
  • firstContentfulPaint-> current mean value: 96ms (±41ms) 🟢
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.31s 52ms 1.28s 1.60s 1.44s 1.60s
domContentLoaded 995ms 49ms 964ms 1.27s 1.11s 1.27s
firstPaint 96ms 41ms 72ms 316ms 204ms 316ms
firstContentfulPaint 96ms 41ms 72ms 316ms 204ms 316ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [8a465e7]
UI Startup Metrics (1230 ± 69 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1230107414556912641358
load106893712296311001195
domContentLoaded106093112196310941185
domInteractive17135261736
firstPaint657104123643210671185
backgroundConnect2422282679245262
firstReactRender24164262639
getState1353471629
initialActions40395512
loadScripts82769997161863944
setupStore1064141016
WebpackHomeuiStartup20351525248225322082469
load16301222195119617581894
domContentLoaded16211216194719517491877
domInteractive181299151457
firstPaint1626550678190312
backgroundConnect3215334313249
firstReactRender89343267483309
getState3943278414284
initialActions7215515614
loadScripts16171214193719417461863
setupStore156295291325
FirefoxBrowserifyHomeuiStartup14881275205212415411733
load1280110615518413421428
domContentLoaded1280110615518413411428
domInteractive1063437950114201
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3922138204285
firstReactRender28244133034
getState839713717
initialActions5010814412
loadScripts1250108715328513001405
setupStore11410314933
WebpackHomeuiStartup15591370198714416701820
load13331164163512314341550
domContentLoaded13331163163512314341550
domInteractive102313155695258
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect31205873541
firstReactRender42336144550
getState62152710
initialActions4077837
loadScripts13111136161112514081528
setupStore95535916
Benchmark value 242 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 25 exceeds gate value 23 for chrome browserify home mean firstReactRender
Benchmark value 5 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 1196 exceeds gate value 1190 for chrome browserify home p95 load
Benchmark value 1185 exceeds gate value 1180 for chrome browserify home p95 domContentLoaded
Benchmark value 1185 exceeds gate value 1180 for chrome browserify home p95 firstPaint
Benchmark value 262 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 12 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 945 exceeds gate value 940 for chrome browserify home p95 loadScripts
Benchmark value 40 exceeds gate value 29 for chrome webpack home mean getState
Benchmark value 2470 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 284 exceeds gate value 195 for chrome webpack home p95 getState
Benchmark value 14 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 1488 exceeds gate value 1405 for firefox browserify home mean uiStartup
Benchmark value 1281 exceeds gate value 1245 for firefox browserify home mean load
Benchmark value 1280 exceeds gate value 1239 for firefox browserify home mean domContentLoaded
Benchmark value 40 exceeds gate value 25 for firefox browserify home mean backgroundConnect
Benchmark value 29 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 6 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 1251 exceeds gate value 1230 for firefox browserify home mean loadScripts
Benchmark value 12 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 1733 exceeds gate value 1660 for firefox browserify home p95 uiStartup
Benchmark value 201 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 85 exceeds gate value 70 for firefox browserify home p95 backgroundConnect
Benchmark value 12 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 33 exceeds gate value 27 for firefox browserify home p95 setupStore
Benchmark value 103 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 31 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 43 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 4 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 258 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 7 exceeds gate value 2 for firefox webpack home p95 initialActions
Sum of mean exceeds: 473ms | Sum of p95 exceeds: 604.8ms
Sum of all benchmark exceeds: 1077.8ms

@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: e473284 | Date: 9/23/2025

📄 https://metamask.github.io/test-dapp/

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.34s (±185ms) 🟡
  • domContentLoaded-> current mean value: 1.02s (±183ms) 🟢
  • firstContentfulPaint-> current mean value: 106ms (±134ms) 🟢
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.34s 185ms 1.28s 3.00s 1.41s 3.00s
domContentLoaded 1.02s 183ms 959ms 2.68s 1.23s 2.68s
firstPaint 106ms 134ms 72ms 1.38s 244ms 1.38s
firstContentfulPaint 106ms 134ms 72ms 1.38s 244ms 1.38s
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: 3596947 | Date: 9/23/2025

📄 https://metamask.github.io/test-dapp/

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.34s (±165ms) 🟡
  • domContentLoaded-> current mean value: 1.02s (±160ms) 🟢
  • firstContentfulPaint-> current mean value: 98ms (±54ms) 🟢
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.34s 165ms 1.27s 2.28s 1.90s 2.28s
domContentLoaded 1.02s 160ms 952ms 1.92s 1.58s 1.92s
firstPaint 98ms 54ms 72ms 424ms 248ms 424ms
firstContentfulPaint 98ms 54ms 72ms 424ms 248ms 424ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [4f730b7]
UI Startup Metrics (1222 ± 82 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1222107015248212841369
load105690912748011251192
domContentLoaded104690212658111181183
domInteractive17134451732
firstPaint730157127040710571175
backgroundConnect23822531512240261
firstReactRender2816139182760
getState1353261728
initialActions40425512
loadScripts817673101380887956
setupStore962031115
WebpackHomeuiStartup20801583280627022262533
load16611273210620617911935
domContentLoaded16521259208220617811923
domInteractive1912171211478
firstPaint1706249971194330
backgroundConnect3420292283371
firstReactRender95383256290291
getState3153246915271
initialActions62243711
loadScripts16481256207020517761911
setupStore167268261524
FirefoxBrowserifyHomeuiStartup14131196187210814921607
load1236104216659912891418
domContentLoaded1236104216659912881418
domInteractive1183244970126261
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3419123173777
firstReactRender26225552831
getState63425612
initialActions3112238
loadScripts1210102416409512571348
setupStore85526822
WebpackHomeuiStartup15351375190013616261819
load13101169163912113841560
domContentLoaded13101168163812113841560
domInteractive100363055591273
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect34215273842
firstReactRender433510884552
getState63142610
initialActions3060637
loadScripts12861143161812313561541
setupStore10512412922
Benchmark value 239 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 28 exceeds gate value 23 for chrome browserify home mean firstReactRender
Benchmark value 5 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 1370 exceeds gate value 1365 for chrome browserify home p95 uiStartup
Benchmark value 1192 exceeds gate value 1190 for chrome browserify home p95 load
Benchmark value 1183 exceeds gate value 1180 for chrome browserify home p95 domContentLoaded
Benchmark value 261 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 60 exceeds gate value 45 for chrome browserify home p95 firstReactRender
Benchmark value 12 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 956 exceeds gate value 940 for chrome browserify home p95 loadScripts
Benchmark value 32 exceeds gate value 29 for chrome webpack home mean getState
Benchmark value 2534 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 79 exceeds gate value 57 for chrome webpack home p95 domInteractive
Benchmark value 271 exceeds gate value 195 for chrome webpack home p95 getState
Benchmark value 11 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 1413 exceeds gate value 1405 for firefox browserify home mean uiStartup
Benchmark value 118 exceeds gate value 110 for firefox browserify home mean domInteractive
Benchmark value 34 exceeds gate value 25 for firefox browserify home mean backgroundConnect
Benchmark value 27 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 3 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 261 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 77 exceeds gate value 70 for firefox browserify home p95 backgroundConnect
Benchmark value 8 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 34 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 43 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 4 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 273 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 52 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 7 exceeds gate value 2 for firefox webpack home p95 initialActions
Sum of mean exceeds: 286ms | Sum of p95 exceeds: 679.8ms
Sum of all benchmark exceeds: 965.8ms

Copy link
Contributor

@gauthierpetetin gauthierpetetin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@gauthierpetetin gauthierpetetin merged commit 1db247d into release/13.3.1 Sep 23, 2025
141 of 142 checks passed
@gauthierpetetin gauthierpetetin deleted the cherry-pick-13-3-1-6a30757 branch September 23, 2025 17:09
@github-actions github-actions bot locked and limited conversation to collaborators Sep 23, 2025
@metamaskbot metamaskbot added the release-13.3.1 Issue or pull request that will be included in release 13.3.1 label Sep 23, 2025
@metamaskbot
Copy link
Collaborator

No release label on PR. Adding release label release-13.3.1 on PR, as PR was cherry-picked in branch 13.3.1.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

release-13.3.1 Issue or pull request that will be included in release 13.3.1 team-runway-bot-deprecated DEPRECATED: please use "team-bots" instead

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants