Skip to content

Conversation

@lwin-kyaw
Copy link
Contributor

@lwin-kyaw lwin-kyaw commented Dec 2, 2025

Description

This PR allows rewards opted in users to claim points from shield subscription.

Open in GitHub Codespaces

Changelog

CHANGELOG entry: link/claims rewards points from shield subscription

Related issues

Fixes: #38038

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 rewards with Shield subscriptions (including linking and approval flows), moves post-transaction handling into SubscriptionService, adds cohort tracking, and updates deps/policies.

  • Subscription Service:
    • Adds handlePostTransaction with post-tx cohort assignment and metrics; moves Shield approval handling into #handleShieldSubscriptionApproveTransaction.
    • Includes reward integration: #getRewardSubscriptionId, #getPrimaryCaipAccountId, and linkRewardToExistingSubscription; passes rewardSubscriptionId to startShieldSubscriptionWithCard and crypto approval submit.
    • Expands messenger actions to include rewards (RewardsController:getSeasonMetadata, RewardsController:getActualSubscriptionId) and AppStateController:setPendingShieldCohort.
  • Controllers:
    • AppStateController: exposes/registers setPendingShieldCohort action.
    • MetaMaskController: removes _onShieldSubscriptionApprovalTransaction; delegates post-tx handling to subscriptionService.handlePostTransaction; removes COHORT_NAMES import and crypto start wiring.
    • Subscription messenger: adds rewards and new actions (e.g., submitShieldSubscriptionCryptoApproval, linkRewards).
  • UI:
    • Removes startSubscriptionWithCrypto action.
    • Adds linkRewardToShieldSubscription thunk.
  • Tests:
    • Extends subscription-service.test.ts to cover reward ID inclusion, season checks, and linking behavior.
  • Dependencies/Policies:
    • Switches to preview @metamask/subscription-controller and bumps @metamask/transaction-controller; updates LavaMoat policies accordingly.
    • Adds rewards.uat-api.cx.metamask.io to privacy-snapshot.json.

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

@metamaskbot metamaskbot added the team-onboarding Onboarding team label Dec 2, 2025
@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.

@lwin-kyaw lwin-kyaw added area-shield team-shield Shield team and removed team-onboarding Onboarding team labels Dec 2, 2025
this.subscriptionService.updateSubscriptionCardPaymentMethod.bind(
this.subscriptionService,
),
startSubscriptionWithCrypto:
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Removing since, this API is not being used by JSON RPC Engine.

@github-actions github-actions bot added the size-M label Dec 2, 2025
};
}

export function startSubscriptionWithCrypto(params: {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Removing since, this action is not being used by frontend.

@metamaskbot
Copy link
Collaborator

Builds ready [c67beb1]
UI Startup Metrics (1323 ± 121 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup13231035165412114041529
load1114881139711311931323
domContentLoaded1108873139111211841308
domInteractive2716119212389
firstPaint52586135243410621249
backgroundConnect22420127313233250
firstReactRender31205783549
getState341594134158
initialActions105113
loadScripts89066911501089691096
setupStore1372741522
numNetworkReqs1257519569
BrowserifyPower User HomeuiStartup20241747266815820672382
load1038877162011710721311
domContentLoaded1024873160811810561298
domInteractive3618156253799
firstPaint5309213083789681150
backgroundConnect25119975785240496
firstReactRender5940109166297
getState20213477292208263
initialActions107113
loadScripts81067813781148371080
setupStore21104592342
numNetworkReqs926623822100126
WebpackStandard HomeuiStartup825707109882861972
load64156990573651811
domContentLoaded63656589873648803
domInteractive2715121232195
firstPaint20273903132199643
backgroundConnect1063551117
firstReactRender27205463237
getState271258103445
initialActions104112
loadScripts63356389071646795
setupStore1063241217
numNetworkReqs1257520572
WebpackPower User HomeuiStartup15481223225722516422023
load647558112197649887
domContentLoaded637552111598636880
domInteractive35171593231131
firstPaint28196957183280641
backgroundConnect77758916620555
firstReactRender58459196279
getState18213871457186230
initialActions103112
loadScripts634550110896635873
setupStore1864491943
numNetworkReqs1606733863216295
FirefoxBrowserifyStandard HomeuiStartup13241096189516914161713
load1094943151810911591259
domContentLoaded1093943151710911591258
domInteractive62331723086115
firstPaint------
backgroundConnect49241743551141
firstReactRender23176362334
getState136151171038
initialActions102022
loadScripts1067927146110211231232
setupStore146126161138
numNetworkReqs1257118664
BrowserifyPower User HomeuiStartup25941936477945526583862
load1183955246822512371526
domContentLoaded1183955246222512371525
domInteractive1163347891113386
firstPaint------
backgroundConnect147271007167143544
firstReactRender5636144185896
getState27370884204303719
initialActions217126
loadScripts1140920221917811411485
setupStore1927773230243723
numNetworkReqs92623214584201
WebpackStandard HomeuiStartup14701230189113415331747
load1214107514419712831404
domContentLoaded1213107514419612831404
domInteractive56292043279114
firstPaint------
backgroundConnect48221913050115
firstReactRender24184052736
getState136115151327
initialActions105124
loadScripts1189106014099012611358
setupStore15690131433
numNetworkReqs1257017765
WebpackPower User HomeuiStartup29812134542177929074602
load14971156316943415202726
domContentLoaded14971156316843315202725
domInteractive1183143098119382
firstPaint------
backgroundConnect173281465245131738
firstReactRender61392673260125
getState293691113253395870
initialActions3153526
loadScripts14161071298335114622537
setupStore1206765165124572
numNetworkReqs926322736109178
📊 Page Load Benchmark Results

Current Commit: c67beb1 | 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: 730ms (±60ms) 🟢 | historical mean value: 723ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 77ms (±13ms) 🟢 | 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.24s 1.35s
domContentLoaded 730ms 60ms 695ms 1.01s 925ms 1.01s
firstPaint 77ms 13ms 56ms 196ms 88ms 196ms
firstContentfulPaint 77ms 13ms 56ms 196ms 88ms 196ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 999 Bytes (0.02%)
  • ui: 100 Bytes (0%)
  • common: 1.57 KiB (0.02%)

@metamaskbot
Copy link
Collaborator

Builds ready [0ee67f0]
📊 Page Load Benchmark Results

Current Commit: 0ee67f0 | Date: 12/3/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.06s (±79ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 744ms (±74ms) 🟢 | historical mean value: 722ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 76ms (±13ms) 🟢 | historical mean value: 78ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.06s 79ms 1.01s 1.38s 1.31s 1.38s
domContentLoaded 744ms 74ms 695ms 1.03s 994ms 1.03s
firstPaint 76ms 13ms 60ms 184ms 84ms 184ms
firstContentfulPaint 76ms 13ms 60ms 184ms 84ms 184ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: -12 Bytes (0%)
  • ui: -391 Bytes (0%)
  • common: 316.45 KiB (3.51%)

@lwin-kyaw lwin-kyaw marked this pull request as ready for review December 3, 2025 03:42
@github-actions github-actions bot added size-L and removed size-M labels Dec 3, 2025
*
* @param transactionMeta - The transaction metadata.
*/
async _onShieldSubscriptionApprovalTransaction(transactionMeta) {
Copy link
Contributor Author

@lwin-kyaw lwin-kyaw Dec 3, 2025

Choose a reason for hiding this comment

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

Refactored this to SubscriptionService handleShieldSubscriptionApprovalTransaction

@lwin-kyaw
Copy link
Contributor Author

@metamaskbot update-policies

@metamaskbot
Copy link
Collaborator

Builds ready [1e7fcf1]
📊 Page Load Benchmark Results

Current Commit: 1e7fcf1 | Date: 12/3/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.03s (±65ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 725ms (±76ms) 🟢 | historical mean value: 722ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 87ms (±125ms) 🟢 | historical mean value: 78ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.03s 65ms 997ms 1.40s 1.23s 1.40s
domContentLoaded 725ms 76ms 690ms 1.26s 919ms 1.26s
firstPaint 87ms 125ms 60ms 1.33s 88ms 1.33s
firstContentfulPaint 87ms 125ms 60ms 1.33s 88ms 1.33s
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 2.33 KiB (0.05%)
  • ui: 6 Bytes (0%)
  • common: 315.03 KiB (3.5%)

@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 a review from a team as a code owner December 3, 2025 04:27
@metamaskbot
Copy link
Collaborator

metamaskbot commented Dec 3, 2025

✨ Files requiring CODEOWNER review ✨

🕵️ @MetaMask/extension-privacy-reviewers (1 files, +1 -0)
  • 📄 privacy-snapshot.json +1 -0

📜 @MetaMask/policy-reviewers (5 files, +385 -5)
  • 📁 lavamoat/
    • 📁 browserify/
      • 📁 beta/
        • 📄 policy.json +96 -1
      • 📁 experimental/
        • 📄 policy.json +96 -1
      • 📁 flask/
        • 📄 policy.json +96 -1
      • 📁 main/
        • 📄 policy.json +96 -1
    • 📁 webpack/
      • 📁 mv2/
        • 📄 policy.json +1 -1

Tip

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

@metamaskbot
Copy link
Collaborator

Builds ready [45fd45e]
UI Startup Metrics (1250 ± 130 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1250988160113013481488
load1048852133011311201268
domContentLoaded1041847129211111131261
domInteractive2715176252186
firstPaint683115132242810691229
backgroundConnect21419233219220245
firstReactRender321884123860
getState3616124204395
initialActions106112
loadScripts83364910721058931022
setupStore1364971425
numNetworkReqs1257720573
BrowserifyPower User HomeuiStartup19281537237221321282352
load93783714501289301298
domContentLoaded92282713991269121268
domInteractive31161372429103
firstPaint61514214563679071277
backgroundConnect20918367262205234
firstReactRender5339199185773
getState17913362950191221
initialActions103112
loadScripts73864412011227321069
setupStore1794871938
numNetworkReqs1596830952202263
WebpackStandard HomeuiStartup788674105286826955
load61954190581643790
domContentLoaded61453489980639785
domInteractive2614107232198
firstPaint24792798182214677
backgroundConnect953051017
firstReactRender26194063136
getState23124692942
initialActions103112
loadScripts61253189179637782
setupStore1052741116
numNetworkReqs1257720572
WebpackPower User HomeuiStartup15861274225819816902008
load68459990178706880
domContentLoaded67459289579695873
domInteractive35181472932118
firstPaint340109900220611723
backgroundConnect101859017933544
firstReactRender59429296574
getState1707978366177210
initialActions102012
loadScripts67159088677693863
setupStore22963132547
numNetworkReqs926816424100155
FirefoxBrowserifyStandard HomeuiStartup13101057171614313721607
load108191012989111491276
domContentLoaded108091012979111491276
domInteractive57311252679114
firstPaint------
backgroundConnect46201383044126
firstReactRender22184852334
getState1072741018
initialActions102012
loadScripts105389412618211071208
setupStore145185221035
numNetworkReqs1156416661
BrowserifyPower User HomeuiStartup25732018435644226723985
load1210984240823912041635
domContentLoaded1209978240823912041634
domInteractive1163844986112368
firstPaint------
backgroundConnect149291019156154523
firstReactRender5637122145991
getState24544837202308802
initialActions3028327
loadScripts1163965238921911661537
setupStore1688734198192660
numNetworkReqs935827742100181
WebpackStandard HomeuiStartup15741309202815616581913
load12861114153610213431474
domContentLoaded12861113153610213421474
domInteractive63281523283130
firstPaint------
backgroundConnect54211703257131
firstReactRender27207073138
getState1972153513119
initialActions204123
loadScripts1255109015079513111414
setupStore217208281857
numNetworkReqs1256716762
WebpackPower User HomeuiStartup29042159548665829124659
load14701208280734814192534
domContentLoaded14701207280634814192532
domInteractive1143539889104359
firstPaint------
backgroundConnect169331105202159685
firstReactRender6041212206494
getState262591113217302775
initialActions3145637
loadScripts14091171266027913852147
setupStore16511812194214665
numNetworkReqs93622705179235
📊 Page Load Benchmark Results

Current Commit: 45fd45e | Date: 12/3/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.03s (±44ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 719ms (±40ms) 🟢 | historical mean value: 722ms ⬇️ (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 44ms 1.01s 1.35s 1.06s 1.35s
domContentLoaded 719ms 40ms 698ms 1.02s 745ms 1.02s
firstPaint 75ms 10ms 60ms 152ms 84ms 152ms
firstContentfulPaint 75ms 10ms 60ms 152ms 84ms 152ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 2.33 KiB (0.05%)
  • ui: 6 Bytes (0%)
  • common: 315.03 KiB (3.5%)

@lwin-kyaw lwin-kyaw requested a review from a team as a code owner December 3, 2025 06:53
"raw.githubusercontent.com",
"registry.npmjs.org",
"responsive-rpc.test",
"rewards.uat-api.cx.metamask.io",
Copy link
Contributor Author

@lwin-kyaw lwin-kyaw Dec 3, 2025

Choose a reason for hiding this comment

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

With rewards being integrated to shield, we call rewards api to fetch rewards details (such as subscription_id, season status, etc) during the shield subscription e2e tests.

cc: @MetaMask/extension-privacy-reviewers @MetaMask/rewards

"@metamask/eth-json-rpc-middleware>safe-stable-stringify": true
}
},
"@metamask/subscription-controller>@metamask/polling-controller>@metamask/network-controller>@metamask/eth-json-rpc-middleware": {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@metamask/subscription-controller uses @metamask/polling-controller to do the subscription status polling.

cc: @MetaMask/policy-reviewers

"uuid": true
}
},
"@metamask/subscription-controller>@metamask/polling-controller>@metamask/network-controller": {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@metamask/subscription-controller uses @metamask/polling-controller to do the subscription status polling.

cc: @MetaMask/policy-reviewers

"@metamask/eth-json-rpc-middleware>safe-stable-stringify": true
}
},
"@metamask/subscription-controller>@metamask/polling-controller>@metamask/network-controller>@metamask/eth-json-rpc-middleware": {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@metamask/subscription-controller uses @metamask/polling-controller to do the subscription status polling.

cc: @MetaMask/policy-reviewers

"uuid": true
}
},
"@metamask/subscription-controller>@metamask/polling-controller>@metamask/network-controller>@metamask/eth-json-rpc-provider": {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@metamask/subscription-controller uses @metamask/polling-controller to do the subscription status polling.

cc: @MetaMask/policy-reviewers

"uuid": true
}
},
"@metamask/subscription-controller>@metamask/polling-controller>@metamask/network-controller": {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@metamask/subscription-controller uses @metamask/polling-controller to do the subscription status polling.

cc: @MetaMask/policy-reviewers

"@metamask/eth-json-rpc-middleware>safe-stable-stringify": true
}
},
"@metamask/subscription-controller>@metamask/polling-controller>@metamask/network-controller>@metamask/eth-json-rpc-middleware": {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@metamask/subscription-controller uses @metamask/polling-controller to do the subscription status polling.

cc: @MetaMask/policy-reviewers

"uuid": true
}
},
"@metamask/subscription-controller>@metamask/polling-controller>@metamask/network-controller>@metamask/eth-json-rpc-provider": {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@metamask/subscription-controller uses @metamask/polling-controller to do the subscription status polling.

cc: @MetaMask/policy-reviewers

"uuid": true
}
},
"@metamask/subscription-controller>@metamask/polling-controller>@metamask/network-controller": {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@metamask/subscription-controller uses @metamask/polling-controller to do the subscription status polling.

cc: @MetaMask/policy-reviewers

"@metamask/eth-json-rpc-middleware>safe-stable-stringify": true
}
},
"@metamask/subscription-controller>@metamask/polling-controller>@metamask/network-controller>@metamask/eth-json-rpc-middleware": {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@metamask/subscription-controller uses @metamask/polling-controller to do the subscription status polling.

cc: @MetaMask/policy-reviewers

"uuid": true
}
},
"@metamask/subscription-controller>@metamask/polling-controller>@metamask/network-controller>@metamask/eth-json-rpc-provider": {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@metamask/subscription-controller uses @metamask/polling-controller to do the subscription status polling.

cc: @MetaMask/policy-reviewers

"uuid": true
}
},
"@metamask/subscription-controller>@metamask/polling-controller>@metamask/network-controller": {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@metamask/subscription-controller uses @metamask/polling-controller to do the subscription status polling.

cc: @MetaMask/policy-reviewers

"uuid": true
}
},
"@metamask/subscription-controller>@metamask/polling-controller>@metamask/network-controller>@metamask/eth-json-rpc-provider": {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@metamask/subscription-controller uses @metamask/polling-controller to do the subscription status polling.

cc: @MetaMask/policy-reviewers

"uuid": true
}
},
"@metamask/subscription-controller>@metamask/transaction-controller>@metamask/gas-fee-controller": {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@metamask/subscription-controller uses @metamask/transaction-controller to reference/import the type-definitions required for the crypto subscriptions.

cc: @MetaMask/policy-reviewers

"@metamask/controller-utils": true,
"@metamask/subscription-controller>@metamask/polling-controller": true,
"@metamask/transaction-controller": true,
"@metamask/subscription-controller>@metamask/transaction-controller": true,
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@metamask/subscription-controller uses @metamask/transaction-controller to reference/import the type-definitions required for the crypto subscriptions.

cc: @MetaMask/policy-reviewers

"uuid": true
}
},
"@metamask/subscription-controller>@metamask/transaction-controller": {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@metamask/subscription-controller uses @metamask/transaction-controller to reference/import the type-definitions required for the crypto subscriptions.

cc: @MetaMask/policy-reviewers

"uuid": true
}
},
"@metamask/subscription-controller>@metamask/transaction-controller>@metamask/gas-fee-controller": {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@metamask/subscription-controller uses @metamask/transaction-controller to reference/import the type-definitions required for the crypto subscriptions.

cc: @MetaMask/policy-reviewers

"uuid": true
}
},
"@metamask/subscription-controller>@metamask/transaction-controller": {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@metamask/subscription-controller uses @metamask/transaction-controller to reference/import the type-definitions required for the crypto subscriptions.

cc: @MetaMask/policy-reviewers

"uuid": true
}
},
"@metamask/subscription-controller>@metamask/transaction-controller>@metamask/gas-fee-controller": {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@metamask/subscription-controller uses @metamask/transaction-controller to reference/import the type-definitions required for the crypto subscriptions.

cc: @MetaMask/policy-reviewers

"@metamask/controller-utils": true,
"@metamask/subscription-controller>@metamask/polling-controller": true,
"@metamask/transaction-controller": true,
"@metamask/subscription-controller>@metamask/transaction-controller": true,
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@metamask/subscription-controller uses @metamask/transaction-controller to reference/import the type-definitions required for the crypto subscriptions.

cc: @MetaMask/policy-reviewers

"uuid": true
}
},
"@metamask/subscription-controller>@metamask/transaction-controller": {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@metamask/subscription-controller uses @metamask/transaction-controller to reference/import the type-definitions required for the crypto subscriptions.

cc: @MetaMask/policy-reviewers

"uuid": true
}
},
"@metamask/subscription-controller>@metamask/transaction-controller": {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@metamask/subscription-controller uses @metamask/transaction-controller to reference/import the type-definitions required for the crypto subscriptions.

cc: @MetaMask/policy-reviewers

"@metamask/controller-utils": true,
"@metamask/subscription-controller>@metamask/polling-controller": true,
"@metamask/transaction-controller": true,
"@metamask/subscription-controller>@metamask/transaction-controller": true,
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@metamask/subscription-controller uses @metamask/transaction-controller to reference/import the type-definitions required for the crypto subscriptions.

cc: @MetaMask/policy-reviewers

@metamaskbot
Copy link
Collaborator

Builds ready [b174e08]
UI Startup Metrics (1259 ± 108 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup12591049162810813401451
load105687814119911181248
domContentLoaded105187314069911131243
domInteractive2615100192382
firstPaint52397126238810001177
backgroundConnect22719828016236259
firstReactRender3119144163255
getState3615122184082
initialActions1012113
loadScripts8316621176978821012
setupStore1173141221
numNetworkReqs1257620571
BrowserifyPower User HomeuiStartup20541779248016121182426
load1042921166812310571332
domContentLoaded1029916165212410431327
domInteractive35171812833103
firstPaint4968716663789701152
backgroundConnect264207768106239524
firstReactRender60401161664101
getState210134694101214344
initialActions106112
loadScripts81170314091218121113
setupStore2095392343
numNetworkReqs95682182699148
WebpackStandard HomeuiStartup814690102478839999
load63456485170659812
domContentLoaded62955884470654799
domInteractive2615125232294
firstPaint19386849114196341
backgroundConnect1053861126
firstReactRender2820129123138
getState251350103442
initialActions104112
loadScripts62655583668652790
setupStore1052341217
numNetworkReqs1257219570
WebpackPower User HomeuiStartup16351283230123718252056
load685593115897694940
domContentLoaded674585115098683932
domInteractive38172353635138
firstPaint321102784197450690
backgroundConnect68861915720558
firstReactRender60448296579
getState19214369389186260
initialActions104112
loadScripts671583114096681922
setupStore22871142450
numNetworkReqs1626739066219295
FirefoxBrowserifyStandard HomeuiStartup13481077183414914381645
load1112929167410711661293
domContentLoaded1112929167410711651293
domInteractive63323024085134
firstPaint------
backgroundConnect51201613364127
firstReactRender22183742334
getState12799131127
initialActions103122
loadScripts108291315649511351247
setupStore165214311039
numNetworkReqs1256417662
BrowserifyPower User HomeuiStartup26272091468155926524386
load1213987273031012291603
domContentLoaded1212987272931012281603
domInteractive1113540482112337
firstPaint------
backgroundConnect173281419247166714
firstReactRender5937192216295
getState27056943214319731
initialActions207123
loadScripts1139963226217211571494
setupStore1519764192144646
numNetworkReqs90551883598179
WebpackStandard HomeuiStartup14801223207415915711781
load12251069159911812881440
domContentLoaded12251068159811912871440
domInteractive54271553279128
firstPaint------
backgroundConnect44201772544101
firstReactRender24196872537
getState137148201123
initialActions106123
loadScripts11991051157411212651417
setupStore14755101238
numNetworkReqs1157016758
WebpackPower User HomeuiStartup30072054535476430384744
load15451163321848015682832
domContentLoaded15441163321848015682832
domInteractive133311010150114405
firstPaint------
backgroundConnect1802713082671581124
firstReactRender63391982563123
getState293631010242351854
initialActions203123
loadScripts14501113305737215202683
setupStore1205774165117592
numNetworkReqs936230841111174
📊 Page Load Benchmark Results

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

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.03s (±42ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 720ms (±61ms) 🟢 | historical mean value: 723ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 88ms (±125ms) 🟢 | historical mean value: 78ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.03s 42ms 1.01s 1.33s 1.05s 1.33s
domContentLoaded 720ms 61ms 699ms 1.26s 728ms 1.26s
firstPaint 88ms 125ms 60ms 1.33s 88ms 1.33s
firstContentfulPaint 88ms 125ms 60ms 1.33s 88ms 1.33s
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 2.33 KiB (0.05%)
  • ui: 22 Bytes (0%)
  • common: 315.03 KiB (3.5%)

@metamaskbot
Copy link
Collaborator

Builds ready [c88a95d]
UI Startup Metrics (1253 ± 110 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup12531023155211013271459
load104686712279211071209
domContentLoaded104086212209111001203
domInteractive2715160222381
firstPaint52110012303969931143
backgroundConnect22020025311224244
firstReactRender322065103654
getState3617111164361
initialActions1010112
loadScripts827663101289892989
setupStore1263651425
numNetworkReqs1257620572
BrowserifyPower User HomeuiStartup20461612265021121502457
load1026883159312010451340
domContentLoaded1011875158412010241313
domInteractive34171192233103
firstPaint54216113843819841248
backgroundConnect259203744104240537
firstReactRender5338103105874
getState18913569073189242
initialActions105112
loadScripts79668013651187981092
setupStore1965282240
numNetworkReqs1516728250199245
WebpackStandard HomeuiStartup807690100572840952
load63256486368648784
domContentLoaded62856085768642779
domInteractive2615105222192
firstPaint23393742155230629
backgroundConnect953251019
firstReactRender2821211193138
getState251354103144
initialActions104113
loadScripts62555884766640774
setupStore1052031217
numNetworkReqs1257219569
WebpackPower User HomeuiStartup16291282215323417642095
load678586106091693914
domContentLoaded668581105092678910
domInteractive35171412734113
firstPaint2941031060205321706
backgroundConnect42756811118300
firstReactRender60458686476
getState201129737117185660
initialActions106112
loadScripts665579104190676900
setupStore23964132748
numNetworkReqs1616840565220292
FirefoxBrowserifyStandard HomeuiStartup13811057205918714971749
load1130914156212511831389
domContentLoaded1129914156112511831389
domInteractive63311873485138
firstPaint------
backgroundConnect56223244376126
firstReactRender23185462435
getState136135181040
initialActions103122
loadScripts1093897141610511401320
setupStore165230281139
numNetworkReqs1156616663
BrowserifyPower User HomeuiStartup27392135455238728903475
load12771063216518512981694
domContentLoaded12771063216518512971694
domInteractive13640715111138385
firstPaint------
backgroundConnect168402438263134476
firstReactRender62401161767110
getState26144935209303809
initialActions2039427
loadScripts12361039206117512561667
setupStore1549791188170628
numNetworkReqs93613365280239
WebpackStandard HomeuiStartup15381317191413216071784
load1268110215219813321462
domContentLoaded1267110215219813311461
domInteractive61271663484133
firstPaint------
backgroundConnect45161282345102
firstReactRender26198492739
getState167213291425
initialActions204123
loadScripts1240108314539313091413
setupStore187174211652
numNetworkReqs1256616761
WebpackPower User HomeuiStartup29962318483870629394748
load15051178290837515902591
domContentLoaded15051178290837515892591
domInteractive122311074136116399
firstPaint------
backgroundConnect2033416052691651001
firstReactRender62391452363125
getState331551792308525902
initialActions207123
loadScripts14141131287628215112003
setupStore18571218251251741
numNetworkReqs92622524195209
📊 Page Load Benchmark Results

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

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.03s (±38ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 714ms (±36ms) 🟢 | historical mean value: 723ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 76ms (±12ms) 🟢 | historical mean value: 78ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.03s 38ms 1.00s 1.31s 1.06s 1.31s
domContentLoaded 714ms 36ms 693ms 975ms 739ms 975ms
firstPaint 76ms 12ms 56ms 176ms 84ms 176ms
firstContentfulPaint 76ms 12ms 56ms 176ms 84ms 176ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 2.51 KiB (0.05%)
  • ui: 6 Bytes (0%)
  • common: 315.03 KiB (3.5%)

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Upgrade @metamask/subscription-controller to version 5.0.0

3 participants