Skip to content

Conversation

@mikesposito
Copy link
Member

@mikesposito mikesposito commented Nov 24, 2025

Description

The @metamask/profile-metrics-controller package is being added to the extension. The package ships two new components and their messengers:

  • ProfileMetricsController
  • ProfileMetricsService

Preview build coming from MetaMask/core#7196

Open in GitHub Codespaces

Changelog

CHANGELOG entry: null

Related issues

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.

Note

Integrates @metamask/profile-metrics-controller (controller + service) with messengers, initialization, state wiring, LavaMoat policies, and adds E2E/unit tests and fixtures.

  • Controllers/Services
    • Add ProfileMetricsController and ProfileMetricsService to controller list/types and initialization (app/scripts/controller-init/*, metamask-controller.js).
    • Wire controller state into persisted/mem stores and ControllerFlatState.
  • Messengers
    • Introduce restricted messengers: getProfileMetricsControllerMessenger and getProfileMetricsServiceMessenger, plus registry entries (messengers/index.ts).
  • Initialization
    • New inits: profile-metrics-controller-init.ts (feature-flag + MetaMetrics gated, interval config) and profile-metrics-service-init.ts (bind fetch, set SDK env).
  • Security/Build
    • Update LavaMoat Browserify/Webpack policies to allow profile-metrics modules and deps.
    • Add dependency @metamask/profile-metrics-controller in package.json.
  • Tests/Fixtures
    • Add unit tests for messengers and inits.
    • Add E2E tests validating API calls based on feature flag and MetaMetrics opt-in.
    • Update E2E fixtures/state snapshots to include ProfileMetricsController state.

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

@metamaskbot metamaskbot added the team-core-platform Core Platform team label Nov 24, 2025
@mikesposito
Copy link
Member Author

@metamaskbot update-policies

@metamaskbot
Copy link
Collaborator

Builds ready [79faff7]
📊 Page Load Benchmark Results

Current Commit: 79faff7 | Date: 11/24/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±72ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 732ms (±70ms) 🟢 | historical mean value: 725ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 77ms (±12ms) 🟢 | historical mean value: 78ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 72ms 1.00s 1.32s 1.29s 1.32s
domContentLoaded 732ms 70ms 696ms 1.00s 975ms 1.00s
firstPaint 77ms 12ms 60ms 184ms 88ms 184ms
firstContentfulPaint 77ms 12ms 60ms 184ms 88ms 184ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 11.84 KiB (0.25%)
  • ui: 45.96 KiB (0.66%)
  • common: 550 Bytes (0.01%)

@metamaskbot
Copy link
Collaborator

Policies updated.
👀 Please review the diff for suspicious new powers.

🧠 Learn how: https://lavamoat.github.io/guides/policy-diff/#what-to-look-for-when-reviewing-a-policy-diff

@metamaskbot
Copy link
Collaborator

metamaskbot commented Nov 24, 2025

✨ Files requiring CODEOWNER review ✨

🕵️ @MetaMask/extension-privacy-reviewers (1 files, +8 -0)
  • 📁 test/
    • 📁 e2e/
      • 📁 tests/
        • 📁 settings/
          • 📄 state-logs.json +8 -0

📜 @MetaMask/policy-reviewers (5 files, +160 -0)
  • 📁 lavamoat/
    • 📁 browserify/
      • 📁 beta/
        • 📄 policy.json +37 -0
      • 📁 experimental/
        • 📄 policy.json +37 -0
      • 📁 flask/
        • 📄 policy.json +37 -0
      • 📁 main/
        • 📄 policy.json +37 -0
    • 📁 webpack/
      • 📁 mv2/
        • 📄 policy.json +12 -0

Tip

Follow the policy review process outlined in the LavaMoat Policy Review Process doc before expecting an approval from Policy Reviewers.


🧪 @MetaMask/qa (1 files, +8 -0)
  • 📁 test/
    • 📁 e2e/
      • 📁 tests/
        • 📁 settings/
          • 📄 state-logs.json +8 -0

@metamaskbot
Copy link
Collaborator

Builds ready [643579d]
UI Startup Metrics (1231 ± 114 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup12311032152511412981471
load1044871129010311031254
domContentLoaded1038866128510210991248
domInteractive2715130252097
firstPaint5019412893939701170
backgroundConnect21419325810219233
firstReactRender30185193546
getState341777114057
initialActions105112
loadScripts83166110731008841032
setupStore1262941220
numNetworkReqs1257721574
BrowserifyPower User HomeuiStartup18021532230115218942052
load97286215261469591421
domContentLoaded95985415211459451392
domInteractive38162254331163
firstPaint5059514323719001258
backgroundConnect21519925611222240
firstReactRender83431362098120
getState16613026026181226
initialActions1012213
loadScripts75965713161457421191
setupStore21996122742
numNetworkReqs1447030154179284
WebpackStandard HomeuiStartup8146841124878481005
load63856185875676809
domContentLoaded63355484374672803
domInteractive2615113232192
firstPaint24596860177226696
backgroundConnect953051117
firstReactRender26195773038
getState261156113447
initialActions102111
loadScripts63155183373670793
setupStore1053241217
numNetworkReqs1257720573
WebpackPower User HomeuiStartup14781267202915415931723
load69460312661236871016
domContentLoaded68459612601246741002
domInteractive46193045735220
firstPaint28584757182340694
backgroundConnect1473441722
firstReactRender84461091594103
getState15412720415162183
initialActions103112
loadScripts6815941250122671999
setupStore21759132353
numNetworkReqs1456731255188261
FirefoxBrowserifyStandard HomeuiStartup12281059156112212801501
load102689812377810931168
domContentLoaded102589812377810881168
domInteractive56301623179128
firstPaint------
backgroundConnect3522125173773
firstReactRender22184762135
getState1056881019
initialActions103012
loadScripts100688612087510611140
setupStore135165181133
numNetworkReqs1156815660
BrowserifyPower User HomeuiStartup23891852319224325442759
load1102903172115010951473
domContentLoaded1102902172115010931473
domInteractive11432544102103411
firstPaint------
backgroundConnect922633653111226
firstReactRender82371572195120
getState25837848218374733
initialActions3117227
loadScripts1074889169814710631451
setupStore1336775175122631
numNetworkReqs92612144279203
WebpackStandard HomeuiStartup14371272193112914921720
load1221106414879912891393
domContentLoaded1221106414879912881392
domInteractive54271853477126
firstPaint------
backgroundConnect4120123194389
firstReactRender26206152735
getState116163161017
initialActions103122
loadScripts1197104914529512661362
setupStore136160191235
numNetworkReqs1156416661
WebpackPower User HomeuiStartup26422139339528128493136
load13691111187319615321772
domContentLoaded13691111187319615311772
domInteractive1102946310497406
firstPaint------
backgroundConnect1012544974113276
firstReactRender82401642293122
getState24860895229333782
initialActions3129338
loadScripts13321095184619214781738
setupStore86659911581381
numNetworkReqs895619137106175
📊 Page Load Benchmark Results

Current Commit: 643579d | Date: 11/24/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.03s (±74ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 723ms (±71ms) 🟢 | historical mean value: 723ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 75ms (±10ms) 🟢 | historical mean value: 78ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.03s 74ms 985ms 1.33s 1.27s 1.33s
domContentLoaded 723ms 71ms 685ms 1.01s 940ms 1.01s
firstPaint 75ms 10ms 60ms 160ms 84ms 160ms
firstContentfulPaint 75ms 10ms 60ms 160ms 84ms 160ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 11.86 KiB (0.25%)
  • ui: 45.77 KiB (0.65%)
  • common: 550 Bytes (0.01%)

@metamaskbot
Copy link
Collaborator

Builds ready [4509806]
UI Startup Metrics (1230 ± 106 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup12301019158810612851441
load104286012789610871225
domContentLoaded103684512739510781216
domInteractive2715114232292
firstPaint4869413144009671229
backgroundConnect2131972608217229
firstReactRender30195493647
getState3416111124052
initialActions106112
loadScripts8296491060938691007
setupStore1172231220
numNetworkReqs1257720572
BrowserifyPower User HomeuiStartup18371573255618519292245
load99187717511669691505
domContentLoaded97786717411659511472
domInteractive38172344528180
firstPaint5428915754049211387
backgroundConnect21920125210225238
firstReactRender81431351791117
getState16812723325186217
initialActions107112
loadScripts77367215301657461263
setupStore19970102333
numNetworkReqs1246531654175202
WebpackStandard HomeuiStartup8497201097878821062
load65957789178693857
domContentLoaded65457288478690850
domInteractive29171122423102
firstPaint24591873173227673
backgroundConnect962941017
firstReactRender2920100103342
getState271465113548
initialActions105112
loadScripts65257087576688841
setupStore1173041421
numNetworkReqs1257821576
WebpackPower User HomeuiStartup14301223180614215331658
load6725931058102670961
domContentLoaded6625861050103658957
domInteractive42172094535178
firstPaint26282779162268657
backgroundConnect1473151725
firstReactRender82431181592104
getState14912320616157184
initialActions102011
loadScripts6605851038101656946
setupStore21954122549
numNetworkReqs1486531658191302
FirefoxBrowserifyStandard HomeuiStartup------
load------
domContentLoaded------
domInteractive------
firstPaint------
backgroundConnect------
firstReactRender------
getState------
initialActions------
loadScripts------
setupStore------
numNetworkReqs------
BrowserifyPower User HomeuiStartup24261850307525725962911
load1118967162315011121561
domContentLoaded1117967162315111121561
domInteractive11732574106112395
firstPaint------
backgroundConnect1013162184112258
firstReactRender84391502197117
getState26369842227363809
initialActions218126
loadScripts1082949160314010831389
setupStore1506838204130686
numNetworkReqs91612284576204
WebpackStandard HomeuiStartup14641268197612615081730
load1243109115509413041409
domContentLoaded1243109115499413031409
domInteractive64262274384153
firstPaint------
backgroundConnect4318222264486
firstReactRender27207272834
getState1056781217
initialActions102122
loadScripts1217107615339012771371
setupStore145158191145
numNetworkReqs1156815655
WebpackPower User HomeuiStartup26222009318325927763087
load13421123197017713941754
domContentLoaded13421122197017713941753
domInteractive11829572122101442
firstPaint------
backgroundConnect1012545166121225
firstReactRender84382162395120
getState29377949258451854
initialActions4060837
loadScripts13031108192417013161730
setupStore1237641162106553
numNetworkReqs91581984085185
📊 Page Load Benchmark Results

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

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±69ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 724ms (±91ms) 🟢 | historical mean value: 723ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 90ms (±158ms) 🟢 | historical mean value: 78ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 69ms 1000ms 1.68s 1.05s 1.68s
domContentLoaded 724ms 91ms 689ms 1.60s 736ms 1.60s
firstPaint 90ms 158ms 60ms 1.66s 84ms 1.66s
firstContentfulPaint 90ms 158ms 60ms 1.66s 84ms 1.66s
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 12.23 KiB (0.26%)
  • ui: 45.92 KiB (0.66%)
  • common: 550 Bytes (0.01%)

@metamaskbot
Copy link
Collaborator

Builds ready [47d05e5]
📊 Page Load Benchmark Results

Current Commit: 47d05e5 | Date: 11/25/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±70ms) 🟡 | historical mean value: 1.03s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 726ms (±67ms) 🟢 | historical mean value: 721ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 75ms (±12ms) 🟢 | historical mean value: 81ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 70ms 1000ms 1.32s 1.25s 1.32s
domContentLoaded 726ms 67ms 692ms 990ms 930ms 990ms
firstPaint 75ms 12ms 56ms 180ms 84ms 180ms
firstContentfulPaint 75ms 12ms 56ms 180ms 84ms 180ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 13.67 KiB (0.29%)
  • ui: 56.01 KiB (0.8%)
  • common: 917 Bytes (0.01%)

@mikesposito
Copy link
Member Author

@metamaskbot update-policies

@metamaskbot
Copy link
Collaborator

Policies updated.
👀 Please review the diff for suspicious new powers.

🧠 Learn how: https://lavamoat.github.io/guides/policy-diff/#what-to-look-for-when-reviewing-a-policy-diff

@metamaskbot
Copy link
Collaborator

Builds ready [3e50238]
UI Startup Metrics (1338 ± 119 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup13381082168311913841580
load1047852127410210931256
domContentLoaded1040845125810010871238
domInteractive2615101222195
firstPaint58089127741110381246
backgroundConnect21819527214224241
firstReactRender422383124571
getState67231692783122
initialActions109123
loadScripts8286531041988651028
setupStore1474661826
numNetworkReqs41281483430142
BrowserifyPower User HomeuiStartup21211845326724721632647
load1044924174512710641352
domContentLoaded1028905173512910471330
domInteractive35181823132133
firstPaint65792140640110101274
backgroundConnect25120357683233530
firstReactRender954618226112140
getState19313065657207258
initialActions107112
loadScripts81670214721258311126
setupStore241191142851
numNetworkReqs101652885395273
WebpackStandard HomeuiStartup86071412911188761134
load63855793487690843
domContentLoaded63455292786685837
domInteractive2614118222186
firstPaint20074711122194570
backgroundConnect954761017
firstReactRender3322100123751
getState4918113246598
initialActions104112
loadScripts63155092584683828
setupStore176318321543
numNetworkReqs41281483430143
WebpackPower User HomeuiStartup18531333240224620162326
load686590104798699924
domContentLoaded676584104199686919
domInteractive36181582934119
firstPaint3081081050218354747
backgroundConnect79766016723571
firstReactRender914513821108122
getState18013269058184226
initialActions103112
loadScripts673582103397683908
setupStore21753132349
numNetworkReqs1546740577196385
FirefoxBrowserifyStandard HomeuiStartup14071161207518514971787
load1053910141710411031228
domContentLoaded1052909141610511031228
domInteractive54301482982112
firstPaint------
backgroundConnect65282424677162
firstReactRender27186383144
getState2912223282667
initialActions203123
loadScripts102489413879710641212
setupStore28131132527101
numNetworkReqs39281262732120
BrowserifyPower User HomeuiStartup26982021483254927964239
load1144949275325311251540
domContentLoaded1143949275325311181540
domInteractive1143146299105418
firstPaint------
backgroundConnect12330539100131356
firstReactRender92373314794150
getState28955944218391781
initialActions2048523
loadScripts1107928247321510921499
setupStore1757792191214662
numNetworkReqs100593116276242
WebpackStandard HomeuiStartup16021364208916316811973
load12571097159810913131513
domContentLoaded12571097159810913061513
domInteractive59272814480140
firstPaint------
backgroundConnect61181783366146
firstReactRender31215673547
getState2411136192360
initialActions204122
loadScripts12301083157610012731456
setupStore29111882923104
numNetworkReqs40281282832124
WebpackPower User HomeuiStartup32852262579269235864781
load15351204314033416172244
domContentLoaded15351203314033416162244
domInteractive12433552111115461
firstPaint------
backgroundConnect175511214198170514
firstReactRender92463073198131
getState343901863306474858
initialActions411021137
loadScripts14631178228121615861939
setupStore1549768182165631
numNetworkReqs101573036279243
📊 Page Load Benchmark Results

Current Commit: 3e50238 | Date: 11/25/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±54ms) 🟡 | historical mean value: 1.03s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 733ms (±51ms) 🟢 | historical mean value: 721ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 78ms (±10ms) 🟢 | historical mean value: 81ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 54ms 1.02s 1.33s 1.10s 1.33s
domContentLoaded 733ms 51ms 704ms 1.01s 760ms 1.01s
firstPaint 78ms 10ms 64ms 152ms 92ms 152ms
firstContentfulPaint 78ms 10ms 64ms 152ms 92ms 152ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 50.43 KiB (1.08%)
  • ui: 55.95 KiB (0.8%)
  • common: 1.04 KiB (0.01%)

@mikesposito
Copy link
Member Author

@metamaskbot update-policies

@metamaskbot
Copy link
Collaborator

Builds ready [3ddfd9a]
📊 Page Load Benchmark Results

Current Commit: 3ddfd9a | Date: 11/25/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.07s (±74ms) 🟡 | historical mean value: 1.03s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 753ms (±72ms) 🟢 | historical mean value: 718ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 80ms (±12ms) 🟢 | historical mean value: 78ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.07s 74ms 1.02s 1.37s 1.29s 1.37s
domContentLoaded 753ms 72ms 711ms 1.04s 965ms 1.04s
firstPaint 80ms 12ms 64ms 188ms 92ms 188ms
firstContentfulPaint 80ms 12ms 64ms 188ms 92ms 188ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 20.61 KiB (0.44%)
  • ui: 55.88 KiB (0.8%)
  • common: 1.56 KiB (0.02%)

@metamaskbot
Copy link
Collaborator

Policies updated.
👀 Please review the diff for suspicious new powers.

🧠 Learn how: https://lavamoat.github.io/guides/policy-diff/#what-to-look-for-when-reviewing-a-policy-diff

@metamaskbot
Copy link
Collaborator

Builds ready [5a6a98d]
UI Startup Metrics (1313 ± 124 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup13131066169412413621561
load104486413119510781225
domContentLoaded103885813029410721217
domInteractive2615116222185
firstPaint58998131841610451212
backgroundConnect21619726112223243
firstReactRender37236794256
getState59202062768115
initialActions104113
loadScripts8296561063918651009
setupStore1363651520
numNetworkReqs41281473431142
BrowserifyPower User HomeuiStartup20881788302423722142581
load1004884157112910081340
domContentLoaded98987815571299911332
domInteractive35161733431135
firstPaint60310714074049541335
backgroundConnect25319659294230523
firstReactRender884314223108123
getState18613367058203251
initialActions104112
loadScripts78567613391287911136
setupStore21668112642
numNetworkReqs103642945497265
WebpackStandard HomeuiStartup88574512651079331159
load66656693791736848
domContentLoaded66156393090722842
domInteractive2716150242288
firstPaint228102840168211732
backgroundConnect1064251022
firstReactRender38221772336101
getState4517101215897
initialActions1010112
loadScripts65856192288720833
setupStore1354261423
numNetworkReqs41281463430142
WebpackPower User HomeuiStartup18511308275128420552350
load6925941352117691979
domContentLoaded6815881345118679974
domInteractive38182023435130
firstPaint276106921181259672
backgroundConnect63866614722537
firstReactRender934514623114125
getState18713268873187231
initialActions103112
loadScripts6795861335116677965
setupStore20958122251
numNetworkReqs1576640578199386
FirefoxBrowserifyStandard HomeuiStartup15181241253919716041854
load1141975206913711891344
domContentLoaded1139975206913711891344
domInteractive66311543387132
firstPaint------
backgroundConnect73223114986179
firstReactRender301978113458
getState2711196222758
initialActions203122
loadScripts1109958203913111571294
setupStore2813181252592
numNetworkReqs40281282732120
BrowserifyPower User HomeuiStartup26321868508957927084064
load1135960229422611121483
domContentLoaded1134960228722511101483
domInteractive12134895120118384
firstPaint------
backgroundConnect1202049086133350
firstReactRender87412272996132
getState23764913192242718
initialActions218126
loadScripts1092938227420910731459
setupStore1679716174181628
numNetworkReqs102573106379247
WebpackStandard HomeuiStartup16761378213318517892072
load13011107162312413651557
domContentLoaded13011107161712413651557
domInteractive63272063788134
firstPaint------
backgroundConnect65172704272153
firstReactRender3522104133860
getState2612128212596
initialActions203123
loadScripts12701090153611313411486
setupStore2992003522131
numNetworkReqs40281322732121
WebpackPower User HomeuiStartup31572366943398632534922
load15441151718070814882813
domContentLoaded15441151717970814882813
domInteractive136301197186106397
firstPaint------
backgroundConnect1772714062471591068
firstReactRender934027138101186
getState309611835271421811
initialActions301031023
loadScripts14811133698666014512754
setupStore12710850161162550
numNetworkReqs102603086379250
📊 Page Load Benchmark Results

Current Commit: 5a6a98d | Date: 11/25/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.06s (±38ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 739ms (±36ms) 🟢 | historical mean value: 722ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 79ms (±11ms) 🟢 | historical mean value: 79ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.06s 38ms 1.02s 1.34s 1.08s 1.34s
domContentLoaded 739ms 36ms 709ms 1.00s 760ms 1.00s
firstPaint 79ms 11ms 60ms 172ms 88ms 172ms
firstContentfulPaint 79ms 11ms 60ms 172ms 88ms 172ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 20.61 KiB (0.44%)
  • ui: 56.16 KiB (0.8%)
  • common: 1.98 KiB (0.02%)

@mikesposito
Copy link
Member Author

@metamaskbot update-policies

@mikesposito mikesposito changed the title feat: add @metamask/user-profile-controller feat: add @metamask/profile-metrics-controller Nov 25, 2025
@metamaskbot
Copy link
Collaborator

Policies updated.
👀 Please review the diff for suspicious new powers.

🧠 Learn how: https://lavamoat.github.io/guides/policy-diff/#what-to-look-for-when-reviewing-a-policy-diff

@metamaskbot
Copy link
Collaborator

Builds ready [df5cb5e]
📊 Page Load Benchmark Results

Current Commit: df5cb5e | Date: 12/2/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.06s (±70ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 743ms (±68ms) 🟢 | historical mean value: 725ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 79ms (±14ms) 🟢 | historical mean value: 79ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.06s 70ms 1.02s 1.44s 1.27s 1.44s
domContentLoaded 743ms 68ms 708ms 1.10s 946ms 1.10s
firstPaint 79ms 14ms 60ms 200ms 88ms 200ms
firstContentfulPaint 79ms 14ms 60ms 200ms 88ms 200ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 114.57 KiB (2.21%)
  • ui: -2.19 KiB (-0.03%)
  • common: 42.21 KiB (0.47%)

@mikesposito
Copy link
Member Author

@metamaskbot update-policies

@metamaskbot
Copy link
Collaborator

No policy changes

@metamaskbot
Copy link
Collaborator

Builds ready [e430975]
📊 Page Load Benchmark Results

Current Commit: e430975 | Date: 12/2/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±62ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 729ms (±60ms) 🟢 | historical mean value: 724ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 76ms (±11ms) 🟢 | historical mean value: 79ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 62ms 1.00s 1.35s 1.25s 1.35s
domContentLoaded 729ms 60ms 693ms 1.01s 927ms 1.01s
firstPaint 76ms 11ms 60ms 160ms 88ms 160ms
firstContentfulPaint 76ms 11ms 60ms 160ms 88ms 160ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 122.57 KiB (2.37%)
  • ui: 8 Bytes (0%)
  • common: 44 Bytes (0%)

@github-actions
Copy link
Contributor

github-actions bot commented Dec 2, 2025

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
Copy link
Collaborator

Builds ready [ef50503]
UI Startup Metrics (1271 ± 120 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup12711033162812013331509
load1057878137510511131280
domContentLoaded1051864137110511071272
domInteractive2715150232285
firstPaint55180133241810111199
backgroundConnect22019825713227250
firstReactRender301971113456
getState41161542644108
initialActions107113
loadScripts83865811411008911044
setupStore1274051420
numNetworkReqs1257720572
BrowserifyPower User HomeuiStartup21881858296223823162707
load1015896138310510261300
domContentLoaded1000890137310610081289
domInteractive3317126213391
firstPaint57215513603809721094
backgroundConnect25120664887233510
firstReactRender6038114166397
getState20212972592208264
initialActions107113
loadScripts79168511461027991070
setupStore221059102543
numNetworkReqs1436530561199267
WebpackStandard HomeuiStartup84369713141008811034
load664565106997704875
domContentLoaded659561106397701866
domInteractive2815158242393
firstPaint21576871145211645
backgroundConnect1063251325
firstReactRender28219393239
getState24124693143
initialActions104112
loadScripts656559105395699857
setupStore1062631116
numNetworkReqs1257520571
WebpackPower User HomeuiStartup16721245234225418012196
load643564105785648838
domContentLoaded633558105285640832
domInteractive3216140243298
firstPaint315102881207568738
backgroundConnect62757614419521
firstReactRender60458086674
getState18614069372186218
initialActions105112
loadScripts630556104383638822
setupStore20953132047
numNetworkReqs1756533169226315
FirefoxBrowserifyStandard HomeuiStartup13591076181517014601722
load1111926142810611811291
domContentLoaded1111926142810611801291
domInteractive61311813283135
firstPaint------
backgroundConnect53221943666123
firstReactRender25196272538
getState147115161230
initialActions102122
loadScripts107891014099911491252
setupStore135113171127
numNetworkReqs1256917661
BrowserifyPower User HomeuiStartup27042075490656828644214
load12371006268528912821671
domContentLoaded12371006268328912821671
domInteractive11834599101109374
firstPaint------
backgroundConnect161361191200152619
firstReactRender5934152186294
getState26971964203312739
initialActions207123
loadScripts1191976237823712121629
setupStore15111818196130683
numNetworkReqs95533305391236
WebpackStandard HomeuiStartup15681324225017116481923
load1288111715769813481496
domContentLoaded1288111715769813481496
domInteractive67232313683130
firstPaint------
backgroundConnect52162433952128
firstReactRender25197372638
getState196209301476
initialActions103122
loadScripts1260110114798813251422
setupStore187113181666
numNetworkReqs1256617760
WebpackPower User HomeuiStartup31182230574283531895032
load15431210319647615142851
domContentLoaded15421210319647615072851
domInteractive12036506105112406
firstPaint------
backgroundConnect2483115073391931162
firstReactRender66382543364142
getState310641214265410899
initialActions3079926
loadScripts14311159316931614731879
setupStore1148711144116480
numNetworkReqs936024740113184
📊 Page Load Benchmark Results

Current Commit: ef50503 | Date: 12/2/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±72ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 735ms (±68ms) 🟢 | historical mean value: 722ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 78ms (±12ms) 🟢 | historical mean value: 79ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 72ms 1.01s 1.33s 1.26s 1.33s
domContentLoaded 735ms 68ms 700ms 999ms 940ms 999ms
firstPaint 78ms 12ms 64ms 184ms 84ms 184ms
firstContentfulPaint 78ms 12ms 64ms 184ms 84ms 184ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 122.75 KiB (2.37%)
  • ui: 259 Bytes (0%)
  • common: 237 Bytes (0%)

@metamaskbot
Copy link
Collaborator

Builds ready [353c946]
UI Startup Metrics (1252 ± 105 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup12521032157710513141438
load104486913248910891210
domContentLoaded103786613178810841203
domInteractive2616113202280
firstPaint57090134141710481152
backgroundConnect21919525312226241
firstReactRender312063103556
getState3617100164462
initialActions103112
loadScripts826665108384862983
setupStore1252951421
numNetworkReqs1257720571
BrowserifyPower User HomeuiStartup20111625264421521922391
load98885517251419801333
domContentLoaded97484717021419661327
domInteractive32171602430101
firstPaint63110717513859451236
backgroundConnect23419059975229461
firstReactRender5841102136391
getState19914866170210250
initialActions105113
loadScripts77166514571357531132
setupStore1896482137
numNetworkReqs1586530956206266
WebpackStandard HomeuiStartup8257001107828651003
load64756195683673812
domContentLoaded64355895083668800
domInteractive27151172421100
firstPaint22783964165205621
backgroundConnect1053351222
firstReactRender27196373239
getState261465113446
initialActions106112
loadScripts64055694181666798
setupStore1062941219
numNetworkReqs1257419569
WebpackPower User HomeuiStartup15611256217720316101993
load6855851173101701903
domContentLoaded6745781153101689897
domInteractive39182493536121
firstPaint276851161195284700
backgroundConnect44763311419336
firstReactRender57439686275
getState18513670674185218
initialActions103112
loadScripts671576114399687888
setupStore20659112246
numNetworkReqs1676630260216282
FirefoxBrowserifyStandard HomeuiStartup13051090155311313791499
load108893913108711531246
domContentLoaded108793913098611501246
domInteractive58311422983132
firstPaint------
backgroundConnect44231182344103
firstReactRender23185152334
getState137146161026
initialActions102122
loadScripts105792212867711201186
setupStore135139171335
numNetworkReqs1156816658
BrowserifyPower User HomeuiStartup26102026462250526654023
load1217976272128312251628
domContentLoaded1217975272028312251628
domInteractive1203556896118356
firstPaint------
backgroundConnect158251246212143660
firstReactRender58371441959105
getState28858946227373816
initialActions3157627
loadScripts1155959199716911631460
setupStore15211789179190577
numNetworkReqs89512494282205
WebpackStandard HomeuiStartup15691343202415516351931
load12831121155510013141506
domContentLoaded12831120155510013141506
domInteractive68251372985123
firstPaint------
backgroundConnect56181903862150
firstReactRender26208582937
getState1962123413106
initialActions102122
loadScripts1251107015239412891446
setupStore207196271750
numNetworkReqs1256717764
WebpackPower User HomeuiStartup29942136530774129484637
load14911136308243114702828
domContentLoaded14911136308243114702828
domInteractive1133453993117294
firstPaint------
backgroundConnect1912213212571631005
firstReactRender67391993267145
getState312671068259465895
initialActions208126
loadScripts14051122280230514312172
setupStore16061160225176619
numNetworkReqs904919734110172
📊 Page Load Benchmark Results

Current Commit: 353c946 | Date: 12/3/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±63ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 728ms (±60ms) 🟢 | historical mean value: 723ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 77ms (±12ms) 🟢 | historical mean value: 78ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 63ms 1.01s 1.34s 1.24s 1.34s
domContentLoaded 728ms 60ms 698ms 1.02s 925ms 1.02s
firstPaint 77ms 12ms 60ms 184ms 88ms 184ms
firstContentfulPaint 77ms 12ms 60ms 184ms 88ms 184ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 121.11 KiB (2.34%)
  • ui: 161 Bytes (0%)
  • common: 244 Bytes (0%)

@mikesposito mikesposito enabled auto-merge December 3, 2025 10:56
@mikesposito mikesposito disabled auto-merge December 3, 2025 11:57
@mikesposito mikesposito enabled auto-merge December 3, 2025 13:37
@metamaskbot
Copy link
Collaborator

Builds ready [d61b9ae]
UI Startup Metrics (1247 ± 121 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup12471010166812113291438
load1040860129510011021225
domContentLoaded103385212899910971218
domInteractive2615115202285
firstPaint55182127641610301193
backgroundConnect21419031815218232
firstReactRender2820121122954
getState3413113173967
initialActions103113
loadScripts826653107395882992
setupStore1152541221
numNetworkReqs1056616559
BrowserifyPower User HomeuiStartup20201713258520021102409
load1002884135811510001319
domContentLoaded98986613521179891311
domInteractive3217117213196
firstPaint4749013913589441037
backgroundConnect23619973378226413
firstReactRender5538101126081
getState19612973780208245
initialActions106112
loadScripts78466711371127791100
setupStore20115882239
numNetworkReqs1246427054147232
WebpackStandard HomeuiStartup806693116075834972
load63056398371658779
domContentLoaded62555897571655773
domInteractive2615128232195
firstPaint22777742163214636
backgroundConnect1054461225
firstReactRender27197483238
getState261484113444
initialActions104111
loadScripts62355696570652766
setupStore1163761226
numNetworkReqs1056616557
WebpackPower User HomeuiStartup16111266239225717112176
load661561104191677886
domContentLoaded651555103391666877
domInteractive35171702832109
firstPaint30278914201304813
backgroundConnect57764514618559
firstReactRender614797106787
getState210140744112194648
initialActions105112
loadScripts649553102389664866
setupStore19966122049
numNetworkReqs1656939763218282
FirefoxBrowserifyStandard HomeuiStartup13441128175314214341602
load1114957157010211761280
domContentLoaded1113956157010211761275
domInteractive62311543185127
firstPaint------
backgroundConnect51221473358134
firstReactRender23185142335
getState127162161020
initialActions1027322
loadScripts108394014599211361231
setupStore13587131134
numNetworkReqs1256717660
BrowserifyPower User HomeuiStartup24691944427442125013866
load1143937250118611401436
domContentLoaded1143930250118611401436
domInteractive1083544069112278
firstPaint------
backgroundConnect13129965159111598
firstReactRender5434105135794
getState274761004213351745
initialActions2023226
loadScripts1104918235916511001375
setupStore17213782195192644
numNetworkReqs90592264096189
WebpackStandard HomeuiStartup15481291202714116301858
load1277110616309313231437
domContentLoaded1277110616309413231437
domInteractive67272303786131
firstPaint------
backgroundConnect51211752961119
firstReactRender2921145133142
getState137133141327
initialActions103122
loadScripts1247105015658612971384
setupStore156110161242
numNetworkReqs1256716761
WebpackPower User HomeuiStartup30172209575579629094831
load15121121326846715452796
domContentLoaded15121121326746615452796
domInteractive1132946997111395
firstPaint------
backgroundConnect1952612202541621031
firstReactRender66383393765147
getState301641041233506798
initialActions2138423
loadScripts14211103310435515072651
setupStore1295788171127613
numNetworkReqs925828742100192
📊 Page Load Benchmark Results

Current Commit: d61b9ae | Date: 12/3/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±60ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 728ms (±70ms) 🟢 | historical mean value: 729ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 89ms (±126ms) 🟢 | historical mean value: 78ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 60ms 1.01s 1.43s 1.08s 1.43s
domContentLoaded 728ms 70ms 701ms 1.27s 759ms 1.27s
firstPaint 89ms 126ms 56ms 1.34s 88ms 1.34s
firstContentfulPaint 89ms 126ms 56ms 1.34s 88ms 1.34s
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 94.15 KiB (1.81%)
  • ui: -47 Bytes (0%)
  • common: 64 Bytes (0%)

Copy link
Contributor

@mcmire mcmire 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

Builds ready [c162dab]
UI Startup Metrics (1242 ± 111 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup12421021157311113121452
load1038867139410010911213
domContentLoaded103386313899910851207
domInteractive2615103212290
firstPaint5388912544059951201
backgroundConnect21719628213224240
firstReactRender332062103955
getState39151342044102
initialActions105112
loadScripts821661117796863983
setupStore1274161326
numNetworkReqs1157417561
BrowserifyPower User HomeuiStartup20141664249021722122420
load1005880157712710431294
domContentLoaded993874157112710301287
domInteractive291699182879
firstPaint61010315874049701241
backgroundConnect266199854126225526
firstReactRender51407165761
getState200148695100193280
initialActions104112
loadScripts78666813591258201068
setupStore1775991639
numNetworkReqs79652492773145
WebpackStandard HomeuiStartup830696126482869963
load644566105979674793
domContentLoaded639561105278669787
domInteractive2816215282192
firstPaint254901057200226679
backgroundConnect1066771117
firstReactRender2920147143340
getState261370113546
initialActions104112
loadScripts636558104377667779
setupStore1062741317
numNetworkReqs1157017560
WebpackPower User HomeuiStartup16451264229027418632216
load678572106197693882
domContentLoaded670566105397688872
domInteractive33171332631110
firstPaint31190936197360678
backgroundConnect89861517558564
firstReactRender6246126146687
getState208149844106209260
initialActions102112
loadScripts667564104495686862
setupStore16658111446
numNetworkReqs80632523373157
FirefoxBrowserifyStandard HomeuiStartup13691122187314514761629
load112496814089211851320
domContentLoaded112396814089211841320
domInteractive63322293586134
firstPaint------
backgroundConnect52231843850150
firstReactRender25185572639
getState147213211228
initialActions105122
loadScripts109495113908511511252
setupStore145171191337
numNetworkReqs1256816660
BrowserifyPower User HomeuiStartup30652015495988939634686
load1368973271347513912521
domContentLoaded1367968271147513912520
domInteractive1033235774109323
firstPaint------
backgroundConnect2702619943902871190
firstReactRender67361943081133
getState3359112322954701037
initialActions2040427
loadScripts1202957238125712671892
setupStore15561054227150721
numNetworkReqs875218033112158
WebpackStandard HomeuiStartup15621304188713816561843
load1279107716059913321471
domContentLoaded1278107716059913321470
domInteractive762918635101133
firstPaint------
backgroundConnect54201943762146
firstReactRender29218393039
getState157119181364
initialActions103122
loadScripts1248106215438912981399
setupStore13581121244
numNetworkReqs1256616762
WebpackPower User HomeuiStartup33432342599392843664940
load16991195313157421262883
domContentLoaded16991195313157421252883
domInteractive109301093120125291
firstPaint------
backgroundConnect2362912683311991160
firstReactRender76393044680186
getState308772365316366862
initialActions2033323
loadScripts15691172296746115832670
setupStore1216118020991635
numNetworkReqs865625334108160
📊 Page Load Benchmark Results

Current Commit: c162dab | Date: 12/3/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 975ms (±65ms) 🟢 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 681ms (±62ms) 🟢 | historical mean value: 727ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 74ms (±12ms) 🟢 | historical mean value: 78ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 975ms 65ms 937ms 1.27s 1.21s 1.27s
domContentLoaded 681ms 62ms 646ms 952ms 900ms 952ms
firstPaint 74ms 12ms 60ms 184ms 84ms 184ms
firstContentfulPaint 74ms 12ms 60ms 184ms 84ms 184ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 94.19 KiB (1.81%)
  • ui: -47 Bytes (0%)
  • common: 417 Bytes (0%)

@naugtur naugtur requested review from a team and removed request for a team December 4, 2025 11:12
Copy link
Contributor

@cryptodev-2s cryptodev-2s left a comment

Choose a reason for hiding this comment

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

LGTM!

Copy link
Member

@seaona seaona left a comment

Choose a reason for hiding this comment

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

QA files LGTM

Copy link
Member

@Gudahtt Gudahtt left a comment

Choose a reason for hiding this comment

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

State log/policy changes look good 👍

@mikesposito mikesposito added this pull request to the merge queue Dec 4, 2025
github-merge-queue bot pushed a commit that referenced this pull request Dec 4, 2025
<!--
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**

<!--
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?
-->
The `@metamask/profile-metrics-controller` package is being added to the
extension. The package ships two new components and their messengers:
- `ProfileMetricsController`
- `ProfileMetricsService`

Preview build coming from MetaMask/core#7196

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

## **Related issues**

* Related to https://consensyssoftware.atlassian.net/browse/WPC-179

## **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]
> Integrates `@metamask/profile-metrics-controller` (controller +
service) with messengers, initialization, state wiring, LavaMoat
policies, and adds E2E/unit tests and fixtures.
> 
> - **Controllers/Services**
> - Add `ProfileMetricsController` and `ProfileMetricsService` to
controller list/types and initialization
(`app/scripts/controller-init/*`, `metamask-controller.js`).
> - Wire controller state into persisted/mem stores and
`ControllerFlatState`.
> - **Messengers**
> - Introduce restricted messengers:
`getProfileMetricsControllerMessenger` and
`getProfileMetricsServiceMessenger`, plus registry entries
(`messengers/index.ts`).
> - **Initialization**
> - New inits: `profile-metrics-controller-init.ts` (feature-flag +
MetaMetrics gated, interval config) and
`profile-metrics-service-init.ts` (bind `fetch`, set SDK env).
> - **Security/Build**
> - Update LavaMoat Browserify/Webpack policies to allow profile-metrics
modules and deps.
> - Add dependency `@metamask/profile-metrics-controller` in
`package.json`.
> - **Tests/Fixtures**
>   - Add unit tests for messengers and inits.
> - Add E2E tests validating API calls based on feature flag and
MetaMetrics opt-in.
> - Update E2E fixtures/state snapshots to include
`ProfileMetricsController` state.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
c162dab. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: MetaMask Bot <[email protected]>
Co-authored-by: Mark Stacey <[email protected]>
Co-authored-by: Elliot Winkler <[email protected]>
Merged via the queue into main with commit 7604bc8 Dec 4, 2025
176 checks passed
@mikesposito mikesposito deleted the mikesposito/user-profile-controller branch December 4, 2025 15:31
@metamaskbot metamaskbot added the release-13.13.0 Issue or pull request that will be included in release 13.13.0 label Dec 4, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pna25 2025 release-13.13.0 Issue or pull request that will be included in release 13.13.0 size-L team-core-platform Core Platform team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants