Skip to content

Conversation

@matthewwalsh0
Copy link
Member

@matthewwalsh0 matthewwalsh0 commented Nov 28, 2025

Description

Add TransactionPayController.

No functional changes yet.

Changelog

CHANGELOG entry: null

Related issues

Manual testing steps

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 TransactionPayController across init, messaging, state, tests, LavaMoat policies, and bumps dependencies to support it.

  • Controllers/Init:
    • Add TransactionPayControllerInit with default Relay strategy and delegation placeholder.
    • Create restricted messengers for TransactionPayController (init + runtime) and export via registry.
    • Wire TransactionPayController into controller list/types and metamask-controller boot sequence.
  • State/Telemetry:
    • Add TransactionPayController to Sentry redaction config and E2E state snapshots (transactionData).
  • Tests:
    • Add unit tests for messengers and controller init.
  • Policies (LavaMoat):
    • Add allowlists for @metamask/transaction-pay-controller and related transitive deps (network, json-rpc, block tracker, bridge, gas-fee, etc.).
  • Misc:
    • Minor TS comment for NetworkController registry type in transaction controller init.
  • Dependencies:
    • Bump @metamask/transaction-controller to ^62.3.1; add @metamask/transaction-pay-controller ^10.2.0; update several related MetaMask packages in yarn.lock.

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

@matthewwalsh0 matthewwalsh0 requested a review from a team as a code owner November 28, 2025 12:56
@matthewwalsh0 matthewwalsh0 added team-confirmations Push issues to confirmations team no-changelog no-changelog Indicates no external facing user changes, therefore no changelog documentation needed labels Nov 28, 2025
@matthewwalsh0 matthewwalsh0 force-pushed the feat/transaction-pay-controller branch from d7fc47d to fb87fc9 Compare November 28, 2025 13:01
@socket-security
Copy link

socket-security bot commented Nov 28, 2025

@socket-security
Copy link

socket-security bot commented Nov 28, 2025

All alerts resolved. Learn more about Socket for GitHub.

This PR previously contained dependency changes with security issues that have been resolved, removed, or ignored.

Ignoring alerts on:

View full report

@metamaskbot
Copy link
Collaborator

metamaskbot commented Nov 28, 2025

✨ Files requiring CODEOWNER review ✨

@MetaMask/confirmations (1 files, +1 -0)
  • 📁 app/
    • 📁 scripts/
      • 📁 controller-init/
        • 📁 confirmations/
          • 📄 transaction-controller-init.ts +1 -0

🧩 @MetaMask/extension-devs (6 files, +1271 -24)
  • 📁 lavamoat/
    • 📁 browserify/
      • 📁 beta/
        • 📄 policy.json +300 -4
      • 📁 experimental/
        • 📄 policy.json +300 -4
      • 📁 flask/
        • 📄 policy.json +300 -4
      • 📁 main/
        • 📄 policy.json +300 -4
    • 📁 webpack/
      • 📁 mv2/
        • 📄 policy.json +68 -6
      • 📁 mv3/
        • 📄 policy.json +3 -2

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

📜 @MetaMask/policy-reviewers (6 files, +1271 -24)
  • 📁 lavamoat/
    • 📁 browserify/
      • 📁 beta/
        • 📄 policy.json +300 -4
      • 📁 experimental/
        • 📄 policy.json +300 -4
      • 📁 flask/
        • 📄 policy.json +300 -4
      • 📁 main/
        • 📄 policy.json +300 -4
    • 📁 webpack/
      • 📁 mv2/
        • 📄 policy.json +68 -6
      • 📁 mv3/
        • 📄 policy.json +3 -2

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, +1 -0)
  • 📁 test/
    • 📁 e2e/
      • 📁 tests/
        • 📁 settings/
          • 📄 state-logs.json +1 -0

🔗 @MetaMask/supply-chain (6 files, +1271 -24)
  • 📁 lavamoat/
    • 📁 browserify/
      • 📁 beta/
        • 📄 policy.json +300 -4
      • 📁 experimental/
        • 📄 policy.json +300 -4
      • 📁 flask/
        • 📄 policy.json +300 -4
      • 📁 main/
        • 📄 policy.json +300 -4
    • 📁 webpack/
      • 📁 mv2/
        • 📄 policy.json +68 -6
      • 📁 mv3/
        • 📄 policy.json +3 -2

@matthewwalsh0
Copy link
Member Author

@SocketSecurity ignore-all

@matthewwalsh0
Copy link
Member Author

@metamaskbot update-policies

@metamaskbot
Copy link
Collaborator

Builds ready [fb87fc9]
📊 Page Load Benchmark Results

Current Commit: fb87fc9 | Date: 11/28/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.09s (±116ms) 🟡 | historical mean value: 1.05s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 781ms (±114ms) 🟢 | historical mean value: 728ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 77ms (±11ms) 🟢 | historical mean value: 78ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.09s 116ms 1.01s 1.38s 1.30s 1.38s
domContentLoaded 781ms 114ms 694ms 1.06s 989ms 1.06s
firstPaint 77ms 11ms 60ms 164ms 88ms 164ms
firstContentfulPaint 77ms 11ms 60ms 164ms 88ms 164ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 486.46 KiB (10.41%)
  • ui: 10 Bytes (0%)
  • common: 357.76 KiB (4.05%)

@metamaskbot
Copy link
Collaborator

Policy update failed. You can review the logs or retry the policy update here

1 similar comment
@metamaskbot
Copy link
Collaborator

Policy update failed. You can review the logs or retry the policy update here

@matthewwalsh0
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 metamaskbot requested review from a team as code owners November 28, 2025 14:11
@metamaskbot
Copy link
Collaborator

Builds ready [66c58a1]
UI Startup Metrics (1226 ± 99 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1226103015419912891385
load103086213069010841187
domContentLoaded102485313029010781180
domInteractive2615106202179
firstPaint51589124240810051159
backgroundConnect21719525112224239
firstReactRender30195983448
getState3617125154257
initialActions105112
loadScripts813645106888854973
setupStore1162631218
numNetworkReqs1257820572
BrowserifyPower User HomeuiStartup21361756307027222942721
load1028892172914710201442
domContentLoaded1014884171614810051418
domInteractive3518159263396
firstPaint5159117333989471402
backgroundConnect267204741120236663
firstReactRender6041105146493
getState19614474380206234
initialActions106112
loadScripts80267414981467961201
setupStore2095092439
numNetworkReqs1967540972212395
WebpackStandard HomeuiStartup8447191147828751012
load65958099379698824
domContentLoaded65457598578689818
domInteractive2716111222393
firstPaint21591992150212603
backgroundConnect1153061028
firstReactRender28217783343
getState251463113449
initialActions107112
loadScripts65157297676687810
setupStore1163141319
numNetworkReqs1257720572
WebpackPower User HomeuiStartup17441280295829920092274
load7135921331115726971
domContentLoaded7025861324115711961
domInteractive42173364440137
firstPaint334111991232428910
backgroundConnect62761014619563
firstReactRender6646113107385
getState19814480497193247
initialActions105113
loadScripts6995841313113709951
setupStore24683152657
numNetworkReqs1667342383219403
FirefoxBrowserifyStandard HomeuiStartup12901055179016813861629
load1051912152510211211202
domContentLoaded1051912152510211211202
domInteractive58311903482128
firstPaint------
backgroundConnect47202064043148
firstReactRender23185462337
getState1167981024
initialActions103112
loadScripts102689813639010971186
setupStore14519626935
numNetworkReqs1156616661
BrowserifyPower User HomeuiStartup27682051554265128444383
load12901020302537113072494
domContentLoaded12901020302537113072493
domInteractive12735602122117487
firstPaint------
backgroundConnect140261732219134301
firstReactRender61391412262122
getState29660947208407808
initialActions3162727
loadScripts12481005285834212402335
setupStore15871010218153705
numNetworkReqs99603196177244
WebpackStandard HomeuiStartup16371399210216217241981
load13471159168210214131547
domContentLoaded13471159168210214131546
domInteractive802816533102133
firstPaint------
backgroundConnect56201973569131
firstReactRender312190103244
getState177185241529
initialActions103122
loadScripts1314114216529213801466
setupStore187127201469
numNetworkReqs1256917765
WebpackPower User HomeuiStartup30992233829693031815008
load15711100626867714172929
domContentLoaded15701100626867714172929
domInteractive13231111117399480
firstPaint------
backgroundConnect154271159188165353
firstReactRender66412873066108
getState276691261227324767
initialActions207123
loadScripts14951085608360813802852
setupStore1277731164146539
numNetworkReqs100633216079237
📊 Page Load Benchmark Results

Current Commit: 66c58a1 | Date: 11/28/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±73ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 737ms (±70ms) 🟢 | historical mean value: 726ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 77ms (±11ms) 🟢 | historical mean value: 78ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 73ms 1.01s 1.35s 1.27s 1.35s
domContentLoaded 737ms 70ms 698ms 1.03s 938ms 1.03s
firstPaint 77ms 11ms 60ms 168ms 88ms 168ms
firstContentfulPaint 77ms 11ms 60ms 168ms 88ms 168ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 486.69 KiB (10.41%)
  • ui: -1.22 KiB (-0.02%)
  • common: 358.41 KiB (4.06%)

@matthewwalsh0 matthewwalsh0 force-pushed the feat/transaction-pay-controller branch from b54d4c0 to bfce406 Compare November 30, 2025 00:06
@metamaskbot
Copy link
Collaborator

Builds ready [bfce406]
UI Startup Metrics (1240 ± 102 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup12401002151210213051412
load104185913279410881223
domContentLoaded103585413199310821204
domInteractive2615112202287
firstPaint4809212383859681123
backgroundConnect21619924611222239
firstReactRender30195583547
getState3716137194079
initialActions106114
loadScripts8266481112928681002
setupStore1262341422
numNetworkReqs1257820573
BrowserifyPower User HomeuiStartup20651665325727322722567
load1028889178714410331387
domContentLoaded1014881178114510211375
domInteractive37171573133127
firstPaint5229214613719461080
backgroundConnect24920374793234514
firstReactRender5538142135973
getState19813866986196309
initialActions105112
loadScripts80468315231418061157
setupStore20115072334
numNetworkReqs1426442482201279
WebpackStandard HomeuiStartup809685115989839960
load62555187869645755
domContentLoaded62054587369640749
domInteractive2614134222087
firstPaint260104878192228711
backgroundConnect962741118
firstReactRender2920126133340
getState271285123449
initialActions105111
loadScripts61754286567638741
setupStore1165471229
numNetworkReqs1257821576
WebpackPower User HomeuiStartup16411239269427419022129
load6835891337109689915
domContentLoaded6735831330110681910
domInteractive36172053232128
firstPaint289100939194307690
backgroundConnect57665413319537
firstReactRender6244131126785
getState17812968154181213
initialActions102012
loadScripts6705811319108679902
setupStore23967132551
numNetworkReqs1706542580213370
FirefoxBrowserifyStandard HomeuiStartup13081114177714113951584
load1080954151310211381305
domContentLoaded1080954151310211381305
domInteractive58291773182125
firstPaint------
backgroundConnect47221673146115
firstReactRender22185242332
getState136162201021
initialActions102112
loadScripts105393914319011081243
setupStore126119161035
numNetworkReqs1156616763
BrowserifyPower User HomeuiStartup26662148455249727384196
load1211984248722812241532
domContentLoaded1210984248722812241531
domInteractive11733478102112417
firstPaint------
backgroundConnect1112355086117277
firstReactRender63382302864116
getState259531075195313726
initialActions2037523
loadScripts1170961237219611781513
setupStore1519829192152669
numNetworkReqs98562455580239
WebpackStandard HomeuiStartup15511226207315716371854
load12641061156910413231490
domContentLoaded12631061156810413231490
domInteractive57251533079109
firstPaint------
backgroundConnect51181993351128
firstReactRender28218392939
getState12796121225
initialActions102122
loadScripts1234104514919312981421
setupStore146119161234
numNetworkReqs1256916755
WebpackPower User HomeuiStartup29792143559577829794666
load14821119294642315052576
domContentLoaded14811119294542215052576
domInteractive12031161617799407
firstPaint------
backgroundConnect158241883248135498
firstReactRender64382543561127
getState313711761282441873
initialActions2054523
loadScripts14211096283537414672475
setupStore17351027219172659
numNetworkReqs995925152124244
📊 Page Load Benchmark Results

Current Commit: bfce406 | Date: 11/30/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±64ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 738ms (±61ms) 🟢 | historical mean value: 724ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 78ms (±11ms) 🟢 | historical mean value: 81ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 64ms 1.01s 1.36s 1.26s 1.36s
domContentLoaded 738ms 61ms 704ms 1.03s 934ms 1.03s
firstPaint 78ms 11ms 64ms 168ms 84ms 168ms
firstContentfulPaint 78ms 11ms 64ms 168ms 84ms 168ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 486.46 KiB (10.4%)
  • ui: 10 Bytes (0%)
  • common: 357.81 KiB (4.05%)

@matthewwalsh0 matthewwalsh0 requested review from a team as code owners November 30, 2025 01:03
@metamaskbot
Copy link
Collaborator

Builds ready [df5eb57]
UI Startup Metrics (1259 ± 123 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup12591030166912313391470
load1055868140211111311248
domContentLoaded1048859139810911201240
domInteractive261597202282
firstPaint52782127742310041221
backgroundConnect21719726212223245
firstReactRender311863103652
getState3517122183963
initialActions107113
loadScripts83865711501049081026
setupStore1263551322
numNetworkReqs1257921574
BrowserifyPower User HomeuiStartup20781660292729722862738
load1016858158216610221510
domContentLoaded100085215721659971494
domInteractive36171592933118
firstPaint72211116024139901514
backgroundConnect23619371667239279
firstReactRender5940114136387
getState19214565951202225
initialActions104112
loadScripts79366313401577891247
setupStore1864472133
numNetworkReqs1556142182201399
WebpackStandard HomeuiStartup803692128589822972
load632564104384645810
domContentLoaded628559102483633805
domInteractive2615130232193
firstPaint238781049190226605
backgroundConnect95315924
firstReactRender27194463237
getState25135293340
initialActions105112
loadScripts625557101281631797
setupStore1062731218
numNetworkReqs1257720573
WebpackPower User HomeuiStartup16831302226927919412222
load673591101895676968
domContentLoaded663585101295666961
domInteractive36191573134133
firstPaint29297981212289712
backgroundConnect78867016321563
firstReactRender624591107080
getState18413068972186224
initialActions104112
loadScripts660583100393664951
setupStore23868132451
numNetworkReqs1656741982214406
FirefoxBrowserifyStandard HomeuiStartup13021069171514414011569
load1076921140510311361277
domContentLoaded1076915140510311361277
domInteractive59301783383132
firstPaint------
backgroundConnect52212064064161
firstReactRender22184652335
getState156176271079
initialActions103112
loadScripts104590413388911051238
setupStore156212291035
numNetworkReqs1156715658
BrowserifyPower User HomeuiStartup27212001507965828254538
load12471015253433712222454
domContentLoaded12461015253433712222452
domInteractive12133551106110435
firstPaint------
backgroundConnect157241689243127564
firstReactRender64371772866133
getState330711300259499845
initialActions2134327
loadScripts1187993240625011721563
setupStore1549777181157609
numNetworkReqs99583206277236
WebpackStandard HomeuiStartup14701259197414615661749
load1218106315749712861400
domContentLoaded1217106215749712851400
domInteractive58262474084132
firstPaint------
backgroundConnect45211843048108
firstReactRender27207983037
getState157183211442
initialActions103122
loadScripts1192104215009412611377
setupStore146118171344
numNetworkReqs1156315753
WebpackPower User HomeuiStartup29172151498869530884418
load14791178286140015602534
domContentLoaded14791178286140015592534
domInteractive1103052310799412
firstPaint------
backgroundConnect134271080162128306
firstReactRender60411842062109
getState23973815182287676
initialActions301031027
loadScripts14191140271634315292419
setupStore1487684175202547
numNetworkReqs101572576277246
📊 Page Load Benchmark Results

Current Commit: df5eb57 | Date: 11/30/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±40ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 726ms (±37ms) 🟢 | historical mean value: 724ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 78ms (±14ms) 🟢 | historical mean value: 81ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 40ms 1.02s 1.34s 1.07s 1.34s
domContentLoaded 726ms 37ms 706ms 1.01s 747ms 1.01s
firstPaint 78ms 14ms 60ms 200ms 92ms 200ms
firstContentfulPaint 78ms 14ms 60ms 200ms 92ms 200ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 486.46 KiB (10.4%)
  • ui: 10 Bytes (0%)
  • common: 357.81 KiB (4.05%)

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.

e2e files LGTM

@matthewwalsh0 matthewwalsh0 added this pull request to the merge queue Dec 1, 2025
Merged via the queue into main with commit bfed73b Dec 1, 2025
334 of 335 checks passed
@matthewwalsh0 matthewwalsh0 deleted the feat/transaction-pay-controller branch December 1, 2025 11:57
@github-actions github-actions bot locked and limited conversation to collaborators Dec 1, 2025
@metamaskbot metamaskbot added the release-13.13.0 Issue or pull request that will be included in release 13.13.0 label Dec 1, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

no-changelog no-changelog Indicates no external facing user changes, therefore no changelog documentation needed release-13.13.0 Issue or pull request that will be included in release 13.13.0 size-M team-confirmations Push issues to confirmations team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants