Skip to content

Conversation

@lwin-kyaw
Copy link
Contributor

@lwin-kyaw lwin-kyaw commented Nov 14, 2025

Description

This PR updates

  • Shield confirmation msgs, copywriting
  • add marketing deep link for shield
  • Fixes confirmation release blocker introduced by side panel changes here
  • Enables shield flag in all builds
  • Fixes paused state subscription release blocker

Open in GitHub Codespaces

Changelog

CHANGELOG entry: update Shield confirmation msgs

Related issues

Fixes:

Manual testing steps

  1. Go to this page...

Screenshots/Recordings

Screenshot 2025-11-14 at 2 10 26 PM

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

Updates Shield copy and paused-state UX, refactors metrics with common props and new restart tracking, adds deep link to show entry modal, classifies approve tx, and enables the Shield feature flag.

  • Shield UX copy & i18n:
    • Replace “membership” with “plan” across Shield strings; refine coverage/renewal/tooltips; split paused-state messages/actions by payment type; minor text tweaks (e.g., Save 17%).
  • Metrics:
    • Add getShieldCommonTrackingProps; update all Shield capture hooks to use it.
    • Replace ShieldErrorStateClicked with ShieldMembershipErrorStateClicked and adjust event emissions.
    • Move subscription restart request tracking from background to UI (captureShieldSubscriptionRestartRequestEvent).
  • Deep links & Settings:
    • Add SHIELD_QUERY_PARAMS.showShieldEntryModal; when true, route to SETTINGS_ROUTE and show entry modal or redirect to Shield tab if subscribed.
    • Export SETTINGS_ROUTE via deep-links.
  • Toasts & Banners:
    • Paused toast now shows type-specific descriptions/actions (card/crypto/unexpected).
    • Settings Shield banner uses new paused/ending-soon copy and actions; adds "Contact support" flow with user identifiers.
  • Transactions:
    • Classify TransactionType.shieldSubscriptionApprove in metrics.
    • Crypto approval flow now navigates to confirmation after approval creation is detected.
  • Builds:
    • Enable METAMASK_SHIELD_ENABLED: 'true' in config.
  • Misc UI:
    • Use color={TextColor.textAlternative} for billing label; small refactors/imports.

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

@github-actions
Copy link
Contributor

CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes.

@metamaskbot metamaskbot added the team-onboarding Onboarding team label Nov 14, 2025
tuna1207
tuna1207 previously approved these changes Nov 14, 2025
@metamaskbot
Copy link
Collaborator

Builds ready [9268760]
UI Startup Metrics (1239 ± 97 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1239106915729713121384
load108594113168911541225
domContentLoaded107893513108811501216
domInteractive2314101162071
firstPaint69581123842811011202
backgroundConnect2352202779239248
firstReactRender26174862839
getState2085482435
initialActions107112
loadScripts850704107789917987
setupStore1062631115
numNetworkReqs1367419672
BrowserifyPower User HomeuiStartup22371961288026322632880
load11871007175121613561751
domContentLoaded1166990172221713451722
domInteractive662326565125265
firstPaint740155176554913591765
backgroundConnect2572452859259285
firstReactRender844315030108150
getState24018134445280344
initialActions104124
loadScripts930761145520710991455
setupStore291581153181
numNetworkReqs1188717530151175
WebpackStandard HomeuiStartup83470711861028301125
load61756295990607890
domContentLoaded61055893786602873
domInteractive181280141556
firstPaint21361915202201799
backgroundConnect261075142956
firstReactRender30186383447
getState1152631417
initialActions101011
loadScripts60755692784600862
setupStore1141931315
numNetworkReqs1367519871
WebpackPower User HomeuiStartup1025843171927612851719
load624536933145704933
domContentLoaded602521875126673875
domInteractive321399328099
firstPaint33959933284537933
backgroundConnect681124775159247
firstReactRender38354123841
getState1268014722142147
initialActions101011
loadScripts599519867123665867
setupStore1052661126
numNetworkReqs826512923108129
FirefoxBrowserifyStandard HomeuiStartup14671292193712415171726
load1242111215398413011407
domContentLoaded1242111215398413011406
domInteractive1103428952118233
firstPaint------
backgroundConnect4124121184789
firstReactRender26204972646
getState127104101120
initialActions103122
loadScripts1216109215118012811374
setupStore167246301144
numNetworkReqs1266516759
BrowserifyPower User HomeuiStartup34662581503989648765039
load16361307240037021052400
domContentLoaded16361307240037021042400
domInteractive379124800248724800
firstPaint------
backgroundConnect756122156748814451567
firstReactRender85511261998126
getState19411451094234510
initialActions218238
loadScripts15741265229434620632294
setupStore833420945111209
numNetworkReqs1228022759220227
WebpackStandard HomeuiStartup16141451214614316411950
load13741213169911013851664
domContentLoaded13741213169911013851663
domInteractive54301372265104
firstPaint------
backgroundConnect51201392757118
firstReactRender352484153577
getState167187231251
initialActions103122
loadScripts1344119816669913661580
setupStore13772101234
numNetworkReqs1366917765
WebpackPower User HomeuiStartup32692563461056337534610
load16831409219426419362194
domContentLoaded16831409219426419362194
domInteractive22166533176495533
firstPaint------
backgroundConnect4699212053358471205
firstReactRender874812619100126
getState14610018421163184
initialActions213133
loadScripts16401384215724919032157
setupStore10525507108113507
numNetworkReqs1288122651167226
📊 Page Load Benchmark Results

Current Commit: 9268760 | Date: 11/14/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.03s (±37ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 717ms (±35ms) 🟢 | historical mean value: 727ms ⬇️ (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 37ms 1.01s 1.31s 1.05s 1.31s
domContentLoaded 717ms 35ms 699ms 984ms 736ms 984ms
firstPaint 76ms 12ms 60ms 180ms 84ms 180ms
firstContentfulPaint 76ms 12ms 60ms 180ms 84ms 180ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 58 Bytes (0%)
  • ui: 80 Bytes (0%)
  • common: 70 Bytes (0%)

@metamaskbot
Copy link
Collaborator

Builds ready [6e37825]
UI Startup Metrics (1225 ± 87 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1225107914998712901368
load106590813458511311199
domContentLoaded105890213288511221191
domInteractive2315124192071
firstPaint67490133842710771198
backgroundConnect2332202577237249
firstReactRender2417109102533
getState2184682539
initialActions102112
loadScripts831682108383900965
setupStore1072931117
numNetworkReqs1367219669
BrowserifyPower User HomeuiStartup21181828296729022432967
load1085888172324113461723
domContentLoaded1067876168823813361688
domInteractive501813644119136
firstPaint867179171646913521716
backgroundConnect21019426316217263
firstReactRender75451713093171
getState23617136764280367
initialActions102112
loadScripts874683144722711211447
setupStore251557112857
numNetworkReqs1239319835148198
WebpackStandard HomeuiStartup82668912841098251129
load615559106897607908
domContentLoaded608554105594598895
domInteractive171165121450
firstPaint23262942231205860
backgroundConnect251276153459
firstReactRender3018176173437
getState1162331216
initialActions103111
loadScripts605552104492596884
setupStore1162431215
numNetworkReqs1367519872
WebpackPower User HomeuiStartup1122918180730514701807
load66858010211298211021
domContentLoaded653570982119783982
domInteractive37131334082133
firstPaint23970985261293985
backgroundConnect621025382161253
firstReactRender39354224142
getState14210016020154160
initialActions101011
loadScripts649568972115773972
setupStore1262572425
numNetworkReqs836113328128133
FirefoxBrowserifyStandard HomeuiStartup14891321217312915151770
load1246113614677912801422
domContentLoaded1246113614667912801421
domInteractive1073640656105222
firstPaint------
backgroundConnect4525203245190
firstReactRender26225152739
getState148202201223
initialActions204123
loadScripts1220111814247212591384
setupStore158189191330
numNetworkReqs1266415759
BrowserifyPower User HomeuiStartup32502545453661537024536
load15001286193421818101934
domContentLoaded14991285193421818091934
domInteractive355142715202669715
firstPaint------
backgroundConnect50911113723728261372
firstReactRender81501001293100
getState256112572155406572
initialActions223033
loadScripts14561213185821817811858
setupStore1133836080165360
numNetworkReqs1207623252136232
WebpackStandard HomeuiStartup16401449205513516681970
load13961241169710214171654
domContentLoaded13961241169310214171654
domInteractive58292153464143
firstPaint------
backgroundConnect49232242854113
firstReactRender352389153580
getState127103121218
initialActions206123
loadScripts1368122516669613941599
setupStore15681141252
numNetworkReqs1366616762
WebpackPower User HomeuiStartup33482595423545335694235
load16861433195018418921950
domContentLoaded16861432195018418921950
domInteractive305146622174525622
firstPaint------
backgroundConnect54515810232687991023
firstReactRender844913422104134
getState17612625333177253
initialActions217127
loadScripts16341386192318918541923
setupStore9931485105109485
numNetworkReqs1287022750165227
📊 Page Load Benchmark Results

Current Commit: 6e37825 | Date: 11/14/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.03s (±39ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 715ms (±36ms) 🟢 | historical mean value: 727ms ⬇️ (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 39ms 998ms 1.31s 1.06s 1.31s
domContentLoaded 715ms 36ms 690ms 976ms 742ms 976ms
firstPaint 76ms 12ms 56ms 180ms 84ms 180ms
firstContentfulPaint 76ms 12ms 56ms 180ms 84ms 180ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 58 Bytes (0%)
  • ui: 80 Bytes (0%)
  • common: 54 Bytes (0%)

@lwin-kyaw lwin-kyaw requested review from a team as code owners November 14, 2025 08:18
@metamaskbot
Copy link
Collaborator

metamaskbot commented Nov 14, 2025

✨ Files requiring CODEOWNER review ✨

@MetaMask/confirmations (2 files, +3 -1)
  • 📁 app/
    • 📁 scripts/
      • 📁 lib/
        • 📁 transaction/
          • 📄 metrics.ts +1 -0
  • 📁 ui/
    • 📁 pages/
      • 📁 confirmations/
        • 📁 components/
          • 📁 confirm/
            • 📁 info/
              • 📁 shield-subscription-approve/
                • 📄 billing-details.tsx +2 -1

🔐 @MetaMask/web3auth (2 files, +170 -68)
  • 📁 ui/
    • 📁 hooks/
      • 📁 subscription/
        • 📄 useSubscription.ts +97 -13
    • 📁 pages/
      • 📁 settings/
        • 📁 transaction-shield-tab/
          • 📄 transaction-shield.tsx +73 -55

@github-actions github-actions bot added size-M and removed size-XS labels Nov 14, 2025
@metamaskbot
Copy link
Collaborator

Builds ready [b850534]
UI Startup Metrics (1205 ± 104 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup12051055191110412571357
load1050922174110011031171
domContentLoaded104491917209910971165
domInteractive211473131961
firstPaint66276174842710591171
backgroundConnect2332112537237245
firstReactRender26184972746
getState2074172333
initialActions104112
loadScripts818701148898871933
setupStore1062741118
numNetworkReqs1367620673
BrowserifyPower User HomeuiStartup22211864284826023382848
load11691013154219114091542
domContentLoaded1149993152919614041529
domInteractive651719159138191
firstPaint616127149241310371492
backgroundConnect2532432678259267
firstReactRender74551001382100
getState24216844773294447
initialActions102112
loadScripts917760128919211551289
setupStore331663124163
numNetworkReqs1228919034157190
WebpackStandard HomeuiStartup83170012211098261157
load617557100698608931
domContentLoaded60955297793602898
domInteractive171269121550
firstPaint21157984225196901
backgroundConnect261174142957
firstReactRender3018157153438
getState1162331315
initialActions103111
loadScripts60655096690600888
setupStore1153941216
numNetworkReqs1367420672
WebpackPower User HomeuiStartup1060891161621312661616
load647566875104748875
domContentLoaded62555385691722856
domInteractive38131774676177
firstPaint29565860263562860
backgroundConnect5591996447199
firstReactRender38344223942
getState1367816928155169
initialActions102112
loadScripts62155184287712842
setupStore13639102439
numNetworkReqs796112523108125
FirefoxBrowserifyStandard HomeuiStartup14051268192311514261710
load1193109614297812181375
domContentLoaded1192109514297812171375
domInteractive1023731435110163
firstPaint------
backgroundConnect4025130184586
firstReactRender25194672344
getState1178081123
initialActions103122
loadScripts1168107614037211931339
setupStore146240241130
numNetworkReqs1467820773
BrowserifyPower User HomeuiStartup33182480469080144724690
load15831328225327718872253
domContentLoaded15831328225327718862253
domInteractive36515610892556211089
firstPaint------
backgroundConnect554108139043710231390
firstReactRender926712116108121
getState1639522032183220
initialActions224134
loadScripts15241266216628218532166
setupStore1093922160165221
numNetworkReqs1226523861212238
WebpackStandard HomeuiStartup16311391203014417161954
load13771208163110914271600
domContentLoaded13761207163110914271600
domInteractive973221935108181
firstPaint------
backgroundConnect53241392761113
firstReactRender322487113548
getState188200271351
initialActions203122
loadScripts13441189157610314011544
setupStore16798151351
numNetworkReqs1366817864
WebpackPower User HomeuiStartup34212618452058540124520
load17061366219524719082195
domContentLoaded17061365219524719082195
domInteractive337124947245616947
firstPaint------
backgroundConnect55915411293229151129
firstReactRender84641101392110
getState19111247279201472
initialActions213133
loadScripts16651340217524818712175
setupStore13431542144123542
numNetworkReqs1247623147152231
📊 Page Load Benchmark Results

Current Commit: b850534 | Date: 11/14/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±43ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 722ms (±38ms) 🟢 | historical mean value: 727ms ⬇️ (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 43ms 1.01s 1.32s 1.05s 1.32s
domContentLoaded 722ms 38ms 702ms 985ms 739ms 985ms
firstPaint 77ms 12ms 60ms 188ms 84ms 188ms
firstContentfulPaint 77ms 12ms 60ms 188ms 84ms 188ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚀 Bundle size reduced!]
  • background: -206 Bytes (0%)
  • ui: 931 Bytes (0.01%)
  • common: -446 Bytes (0%)

hieu-w and others added 3 commits November 14, 2025 17:22
<!--
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?
-->

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/37833?quickstart=1)

## **Changelog**

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

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

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

CHANGELOG entry:

## **Related issues**

Fixes:

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



https://github.com/user-attachments/assets/34016a2e-3938-4fd1-ae4d-357193434bea


<!-- [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]
> Updates Shield plan note text and increases displayed savings from 16%
to 17% across en and en_GB locales.
> 
> - **Localization (i18n)**:
>   - **Transaction Shield plan copy**:
> - Update `shieldPlanCryptoMonthlyNote` message to "Total monthly fees
pre-approved for a year".
>     - Change `shieldPlanSave` from `Save 16%` to `Save 17%`.
> - Affected files: `app/_locales/en/messages.json`,
`app/_locales/en_GB/messages.json`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
bb797c3. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
@metamaskbot
Copy link
Collaborator

Builds ready [5fd017b]
UI Startup Metrics (1234 ± 107 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup12341058185110712921369
load108193116749911351205
domContentLoaded107492716639911281198
domInteractive231481162170
firstPaint724174168041710911197
backgroundConnect2322192788236247
firstReactRender26185862740
getState21759102541
initialActions106112
loadScripts848682143498904977
setupStore1062431117
numNetworkReqs1367520672
BrowserifyPower User HomeuiStartup21651946233912922952339
load1143992147218214081472
domContentLoaded1125976146018613991460
domInteractive591617155108171
firstPaint591220147043210091470
backgroundConnect25223927710259277
firstReactRender74461252084125
getState22816341461266414
initialActions106126
loadScripts893746122518011611225
setupStore28144683246
numNetworkReqs1249218328161183
WebpackStandard HomeuiStartup8727421215988781106
load63457594374633834
domContentLoaded62657092170627817
domInteractive191282141554
firstPaint18860845155190593
backgroundConnect291499163768
firstReactRender3519324313762
getState1263041317
initialActions104112
loadScripts62356891167624806
setupStore1264041518
numNetworkReqs1367519870
WebpackPower User HomeuiStartup1047890163223213081632
load665572993139806993
domContentLoaded652562968134787968
domInteractive36131714542171
firstPaint34676909288576909
backgroundConnect37171093278109
firstReactRender37354013840
getState1429315619153156
initialActions101011
loadScripts648560958131777958
setupStore106266926
numNetworkReqs78631232090123
FirefoxBrowserifyStandard HomeuiStartup14851304219714415411760
load12521124184211013091463
domContentLoaded12521123184111013081463
domInteractive56343354551156
firstPaint------
backgroundConnect402391134870
firstReactRender25214042636
getState137205201125
initialActions207123
loadScripts12281104181610712851433
setupStore168216221433
numNetworkReqs1266915757
BrowserifyPower User HomeuiStartup32202477448064237494480
load15731316231029717732310
domContentLoaded15731316231029717732310
domInteractive346131805205578805
firstPaint------
backgroundConnect45316312743197031274
firstReactRender78441011696101
getState2049750190217501
initialActions213133
loadScripts15081272228229717062282
setupStore943720138109201
numNetworkReqs1217822654186226
WebpackStandard HomeuiStartup16241407214114516302045
load13771237177810513901629
domContentLoaded13771237177710513901629
domInteractive5130127225997
firstPaint------
backgroundConnect51261342559117
firstReactRender362493163478
getState128136131220
initialActions103123
loadScripts1348120016949713641565
setupStore157101171252
numNetworkReqs1366917866
WebpackPower User HomeuiStartup33292775436754239274367
load17261540212119218972121
domContentLoaded17261540212119218962121
domInteractive273132587165475587
firstPaint------
backgroundConnect422125964305722964
firstReactRender956112925120129
getState1688130258190302
initialActions213023
loadScripts16781494206619418512066
setupStore14141584157108584
numNetworkReqs1267723053179230
📊 Page Load Benchmark Results

Current Commit: 5fd017b | Date: 11/14/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±41ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 726ms (±39ms) 🟢 | historical mean value: 727ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 77ms (±13ms) 🟢 | historical mean value: 78ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 41ms 1.01s 1.35s 1.09s 1.35s
domContentLoaded 726ms 39ms 702ms 1.03s 759ms 1.03s
firstPaint 77ms 13ms 60ms 196ms 84ms 196ms
firstContentfulPaint 77ms 13ms 60ms 196ms 84ms 196ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚀 Bundle size reduced!]
  • background: -206 Bytes (0%)
  • ui: 931 Bytes (0.01%)
  • common: -493 Bytes (-0.01%)

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Bug: Incomplete Subscription Restart Metrics

The removal of ShieldMembershipRestartRequest event tracking from trackSubscriptionRequestEvent causes metrics loss. Previously, this event was tracked for any subscription request when subscription_state !== 'none' (renewals, resubscriptions after expiration, payment method changes). Now it only tracks in useUnCancelSubscription, missing renewal scenarios that go through startSubscriptionWithCard or crypto approval flows. This breaks metrics tracking for subscription restart scenarios beyond explicit uncancellation.

app/scripts/services/subscription/subscription-service.ts#L235-L255

} = appStateControllerState;
const accountTypeAndCategory = this.#getAccountTypeAndCategoryForMetrics();
const trackingProps = getSubscriptionRequestTrackingProps(
subscriptionControllerState,
defaultSubscriptionPaymentOptions,
shieldSubscriptionMetricsProps,
transactionMeta,
);
this.#messenger.call('MetaMetricsController:trackEvent', {
event: MetaMetricsEventName.ShieldSubscriptionRequest,
category: MetaMetricsEventCategory.Shield,
properties: {
...accountTypeAndCategory,
...trackingProps,
...extrasProps,
status: requestStatus,
},
});

Fix in Cursor Fix in Web


lwin-kyaw and others added 3 commits November 14, 2025 17:53
<!--
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?
-->

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/37835?quickstart=1)

## **Changelog**

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

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

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

CHANGELOG entry:

## **Related issues**

Fixes:

## **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]
> Updates Transaction Shield English localizations to use “plan”
terminology and clarifies monthly authorization/billing tooltip in both
`en` and `en_GB`.
> 
> - **Localization (en, en_GB)**
> - Terminology: Replace "membership" with "plan" across Transaction
Shield strings (e.g., `shieldConfirmMembership`,
`shieldTxMembershipActive`, `shieldTxMembershipCancel`,
`shieldTxMembershipRenew`, `shieldTxMembershipId`).
> - Notifications/Status: Update payment failure/paused/cancellation
copy (e.g.,
`pushNotificationShieldSubscriptionPaymentFailedDescriptionShort`,
`shieldCoverageAlertMessagePaused`, `shieldTxMembershipErrorPaused`,
`shieldTxMembershipCancelNotification`).
> - Timing: Change ending text to "Plan ends on $1"
(`shieldCoverageEndingDescription`).
> - Billing Tooltip: Clarify monthly authorization text
(`shieldEstimatedChangesMonthlyTooltipText`: "Authorize $1/month for 12
months ($2 total)").
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
d4012c9. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
<!--
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?
-->

- Correct subscription paused toast and shield settings error message.
- Handle unexpected error message contact support action.
Figma:
https://www.figma.com/design/HTAO1SrmixV4ppv7qIvLoa/Metamask-Transaction-Shield?node-id=14631-57069&p=f&t=AcoJzS3JF4yuRexs-0

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/37836?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: correct subscription error message in toast and
settings screen

## **Related issues**

Fixes:

## **Manual testing steps**

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

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [x] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [x] 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]
> Updates Shield paused/payment error UX: new localized messages,
context-aware toast and settings actions for card/crypto/unexpected
errors, and a support contact handler with user context.
> 
> - **UI/UX (Transaction Shield)**:
> - **Paused Toast**: Switches to `shieldPaymentPaused` with dynamic
description/action based on payment method (`card`, `crypto`,
`unexpected`).
>   - **Settings Page** (`transaction-shield.tsx`):
> - Context-aware error banner/tooltips and CTA labels for paused states
(card/crypto/unexpected) and ending-soon renewal.
> - Handles crypto-specific flows (add funds, approval tx) and card
update; opens support on unexpected errors.
> - Minor API tweaks (use `useUnCancelSubscription(current)`; refine
payment method rendering).
> - **Hooks**:
> - Adds `useHandleSubscriptionSupportAction()` to open support with
appended `metamask_version`, profile, MetaMetrics, and Shield customer
IDs.
> - **Localization** (`app/_locales/en`, `en_GB`):
> - Adds new `shieldPaymentPaused*` and detailed
`shieldTxMembershipErrorPaused*` keys; updates renewal/insufficient
funds copy; removes deprecated `shieldPaymentDeclined` text.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
b6f6e8f. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
@github-actions github-actions bot added size-L and removed size-M labels Nov 14, 2025
@chaitanyapotti chaitanyapotti changed the title chore: update Shield confirmation msgs chore: update Shield copywriting and error msgs Nov 14, 2025
@chaitanyapotti chaitanyapotti changed the title chore: update Shield copywriting and error msgs chore: update Shield copywriting and error msgs cp-13.10.0 Nov 14, 2025
@metamaskbot
Copy link
Collaborator

Builds ready [707560a]
UI Startup Metrics (1213 ± 101 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup12131064165810112861357
load105689614939711371185
domContentLoaded105088714899711301180
domInteractive2414177222071
firstPaint67088120340610381164
backgroundConnect23021836415233239
firstReactRender26184862840
getState20770102339
initialActions104113
loadScripts827666126296901955
setupStore1062331117
numNetworkReqs1367419669
BrowserifyPower User HomeuiStartup20951887272720922072727
load1132947175022913861750
domContentLoaded1111932174323113801743
domInteractive521818854111188
firstPaint772232176445710061764
backgroundConnect24723227511255275
firstReactRender70421252177125
getState21617528732224287
initialActions207227
loadScripts885715150322711531503
setupStore291459113059
numNetworkReqs1199717125156171
WebpackStandard HomeuiStartup8356991139898431056
load61455794075614828
domContentLoaded60755092372608809
domInteractive181276121548
firstPaint21261864193194586
backgroundConnect261369133455
firstReactRender3118216203538
getState1153641317
initialActions103111
loadScripts60454991369605799
setupStore1153741317
numNetworkReqs1367519870
WebpackPower User HomeuiStartup1061883163726313491637
load643570981122727981
domContentLoaded627559947113705947
domInteractive281387275787
firstPaint21477822173253822
backgroundConnect65927679167276
firstReactRender37344323843
getState13810015819148158
initialActions101011
loadScripts623557937110695937
setupStore1062461024
numNetworkReqs826013929121139
FirefoxBrowserifyStandard HomeuiStartup14171259198412514401693
load1208109714798612421408
domContentLoaded1208109614798612421408
domInteractive1023733340110171
firstPaint------
backgroundConnect4124153204794
firstReactRender24194752438
getState1074141119
initialActions103122
loadScripts1183107414527912191376
setupStore13684111230
numNetworkReqs1367819772
BrowserifyPower User HomeuiStartup31032461429850733564298
load15311286205825518532058
domContentLoaded15311286205825518522058
domInteractive22285601144371601
firstPaint------
backgroundConnect55088117539810001175
firstReactRender79581071491107
getState1448123840173238
initialActions217137
loadScripts14711250196824217521968
setupStore1034718744145187
numNetworkReqs1268122853200228
WebpackStandard HomeuiStartup16261410198513416621944
load13851226172610814311614
domContentLoaded13851226172510814301614
domInteractive52301522364104
firstPaint------
backgroundConnect51251482757121
firstReactRender332391133377
getState1175361217
initialActions103123
loadScripts13541206168810113981564
setupStore197176241470
numNetworkReqs1366817865
WebpackPower User HomeuiStartup31912477462057136534620
load16371423197819818921978
domContentLoaded16371423197719818921977
domInteractive303113757204519757
firstPaint------
backgroundConnect52913413193157211319
firstReactRender905213526117135
getState17512029243196292
initialActions213123
loadScripts15831334195819117901958
setupStore1004436072108360
numNetworkReqs1256823154191231
📊 Page Load Benchmark Results

Current Commit: 707560a | Date: 11/14/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±54ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 726ms (±70ms) 🟢 | historical mean value: 730ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 88ms (±126ms) 🟢 | historical mean value: 79ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 54ms 1.01s 1.34s 1.08s 1.34s
domContentLoaded 726ms 70ms 700ms 1.27s 759ms 1.27s
firstPaint 88ms 126ms 60ms 1.34s 88ms 1.34s
firstContentfulPaint 88ms 126ms 60ms 1.34s 88ms 1.34s
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: -116 Bytes (0%)
  • ui: 2.83 KiB (0.04%)
  • common: 437 Bytes (0%)

@metamaskbot
Copy link
Collaborator

Builds ready [625db35]
UI Startup Metrics (1281 ± 89 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1281111314708913451436
load110696112988311691245
domContentLoaded109995812788211621238
domInteractive251599182273
firstPaint64982131244711011245
backgroundConnect24122628710246262
firstReactRender30205573248
getState2386692741
initialActions105112
loadScripts8657261035829291003
setupStore1273451221
numNetworkReqs1367419671
BrowserifyPower User HomeuiStartup21811913303329123483033
load1162982186723713221867
domContentLoaded1139956184923912631849
domInteractive53181765349176
firstPaint782265144237310421442
backgroundConnect25423931217260312
firstReactRender77481332591133
getState22617229941263299
initialActions102122
loadScripts908726160823310161608
setupStore281366123266
numNetworkReqs12110118029135180
WebpackStandard HomeuiStartup8277071282968241066
load606558102683602825
domContentLoaded599554100179597801
domInteractive171284131452
firstPaint207581009188201601
backgroundConnect251186152663
firstReactRender311981103538
getState1162841320
initialActions102011
loadScripts59655299176595791
setupStore1154151221
numNetworkReqs1367520872
WebpackPower User HomeuiStartup1059906164522913151645
load658570964133746964
domContentLoaded642560942121712942
domInteractive321395327895
firstPaint31971946305593946
backgroundConnect53112076378207
firstReactRender40364324143
getState1389415921153159
initialActions101011
loadScripts638558932118702932
setupStore106257925
numNetworkReqs806113026113130
FirefoxBrowserifyStandard HomeuiStartup14881342209311615231717
load1246112115147512781381
domContentLoaded1245112115147512781380
domInteractive1093636655114234
firstPaint------
backgroundConnect4226189234773
firstReactRender27225462748
getState127209201118
initialActions203122
loadScripts1221110314447212581352
setupStore13782111135
numNetworkReqs1266815856
BrowserifyPower User HomeuiStartup30462368392546435223925
load15331314225125716662251
domContentLoaded15331314225025716652250
domInteractive295131723179366723
firstPaint------
backgroundConnect53811712563447831256
firstReactRender81491131795113
getState1738447985183479
initialActions204134
loadScripts14781255216625515562166
setupStore762720848112208
numNetworkReqs1227323155175231
WebpackStandard HomeuiStartup16711452227615916732037
load14061221172310814321678
domContentLoaded14051221172310814321678
domInteractive1103240467111267
firstPaint------
backgroundConnect52212242755102
firstReactRender3426121113443
getState137181181217
initialActions103122
loadScripts13781202167210114051604
setupStore176235321241
numNetworkReqs1366717764
WebpackPower User HomeuiStartup32282438421350636364213
load16931483226222419072262
domContentLoaded16931483226222419072262
domInteractive338117982265622982
firstPaint------
backgroundConnect44895910265730910
firstReactRender937013419111134
getState17712229553202295
initialActions213133
loadScripts16251443207720818722077
setupStore1063545296111452
numNetworkReqs1258022854183228
📊 Page Load Benchmark Results

Current Commit: 625db35 | Date: 11/14/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: 724ms (±36ms) 🟢 | historical mean value: 727ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 78ms (±12ms) 🟢 | historical mean value: 78ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 40ms 1.01s 1.32s 1.06s 1.32s
domContentLoaded 724ms 36ms 698ms 977ms 746ms 977ms
firstPaint 78ms 12ms 60ms 184ms 84ms 184ms
firstContentfulPaint 78ms 12ms 60ms 184ms 84ms 184ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚀 Bundle size reduced!]
  • background: -206 Bytes (0%)
  • ui: 2.78 KiB (0.04%)
  • common: -59 Bytes (0%)

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Bug: Missing Analytics for Shield Subscription Restarts

The ShieldMembershipRestartRequest metrics event is no longer tracked when a subscription renewal occurs. The tracking logic was removed from trackSubscriptionRequestEvent but the new captureShieldSubscriptionRestartRequestEvent hook added in useSubscriptionMetrics.ts is never called from the subscription service, resulting in missing analytics data for subscription restart requests.

app/scripts/services/subscription/subscription-service.ts#L235-L255

} = appStateControllerState;
const accountTypeAndCategory = this.#getAccountTypeAndCategoryForMetrics();
const trackingProps = getSubscriptionRequestTrackingProps(
subscriptionControllerState,
defaultSubscriptionPaymentOptions,
shieldSubscriptionMetricsProps,
transactionMeta,
);
this.#messenger.call('MetaMetricsController:trackEvent', {
event: MetaMetricsEventName.ShieldSubscriptionRequest,
category: MetaMetricsEventCategory.Shield,
properties: {
...accountTypeAndCategory,
...trackingProps,
...extrasProps,
status: requestStatus,
},
});

Fix in Cursor Fix in Web


tuna1207 and others added 2 commits November 14, 2025 20:35
<!--
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?
-->

Add params handle to shield deep link for
`link.metamask.io/shield?showShieldEntryModal=true` which show shield
entry modal in settings screen if user not subscribed yet

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/37846?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: add shield deep link `showShieldEntryModal` param
handle

## **Related issues**

Fixes:

## **Manual testing steps**

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

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [x] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [x] 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]
> Adds `/shield?showShieldEntryModal=true` deep link that routes to
Settings and either opens the Shield entry modal or navigates to the
Shield page if subscribed.
> 
> - **Deep links**
> - Add `SHIELD_QUERY_PARAMS.showShieldEntryModal` and handle in
`shared/lib/deep-links/routes/shield.ts`.
> - When `showShieldEntryModal=true`, redirect to `SETTINGS_ROUTE` with
original query; otherwise go to `SHIELD_PLAN_ROUTE`.
> - Export `SETTINGS_ROUTE` from
`shared/lib/deep-links/routes/route.ts`.
> - **Settings page**
> - Parse `showShieldEntryModal` from URL in `settings.container.js` and
pass `shouldShowShieldEntryModal` prop.
> - In `settings.component.js` `componentDidMount`, if
`shouldShowShieldEntryModal`:
> - If `hasSubscribedToShield`, navigate to `TRANSACTION_SHIELD_ROUTE`.
>     - Else, show `ShieldEntryModal`.
>   - Add `shouldShowShieldEntryModal` to PropTypes.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
519b088. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
@chaitanyapotti
Copy link
Member

@metamaskbot build

@metamaskbot
Copy link
Collaborator

Builds ready [8069be4]
UI Startup Metrics (1124 ± 84 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup112495314818411781257
load96282212127710151085
domContentLoaded95681712027710091081
domInteractive211482151766
firstPaint7038312373549911060
backgroundConnect18317125712185202
firstReactRender28185483046
getState21861102444
initialActions102112
loadScripts780635101678835909
setupStore1062431218
numNetworkReqs1367620672
BrowserifyPower User HomeuiStartup21971871342334822593423
load1159981174722413591747
domContentLoaded1142965173822713491738
domInteractive581718459126184
firstPaint586207124937010011249
backgroundConnect25023128612253286
firstReactRender77451312693131
getState23116832638250326
initialActions102122
loadScripts909738146221911101462
setupStore291661113261
numNetworkReqs1249719530154195
WebpackStandard HomeuiStartup85972912491048591147
load62257397385613903
domContentLoaded61556695081606883
domInteractive2012137211571
firstPaint22160982237203894
backgroundConnect271170132957
firstReactRender342097133766
getState1163541316
initialActions104111
loadScripts61256493979604873
setupStore1264551417
numNetworkReqs1367319869
WebpackPower User HomeuiStartup1070919147319712591473
load67457610261377281026
domContentLoaded661566997133714997
domInteractive40131774974177
firstPaint3566310003116011000
backgroundConnect38101423455142
firstReactRender42394724347
getState1448818428160184
initialActions101011
loadScripts657564987130703987
setupStore1761222810122
numNetworkReqs796412620102126
FirefoxBrowserifyStandard HomeuiStartup15471344192811615771818
load1287114515608113281453
domContentLoaded1287114415608113281453
domInteractive1103534049113236
firstPaint------
backgroundConnect4526217235174
firstReactRender30239192949
getState137109111222
initialActions213123
loadScripts1261112715027712981420
setupStore168204231339
numNetworkReqs1266115756
BrowserifyPower User HomeuiStartup32332518465163039894651
load15111276189320616761893
domContentLoaded15101276189320616761893
domInteractive25770544174498544
firstPaint------
backgroundConnect4799211143649951114
firstReactRender925819231111192
getState14710720523159205
initialActions217137
loadScripts14691238185420416531854
setupStore13527448108170448
numNetworkReqs1276624462209244
WebpackStandard HomeuiStartup15761414222615915652035
load1334119516769213481575
domContentLoaded1334119516759213471574
domInteractive53301492161100
firstPaint------
backgroundConnect48212763451108
firstReactRender32247683444
getState147162171237
initialActions113123
loadScripts1304117815527813181510
setupStore227233371470
numNetworkReqs1367118765
WebpackPower User HomeuiStartup32002511439661940724396
load16811402207424519912074
domContentLoaded16811402207224519912072
domInteractive341115825224565825
firstPaint------
backgroundConnect40711211363247151136
firstReactRender945612518111125
getState17011822527187225
initialActions213133
loadScripts16351354202924519602029
setupStore823512828108128
numNetworkReqs1266723155172231
📊 Page Load Benchmark Results

Current Commit: 8069be4 | Date: 11/14/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.03s (±37ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 720ms (±35ms) 🟢 | historical mean value: 728ms ⬇️ (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 37ms 1.01s 1.30s 1.06s 1.30s
domContentLoaded 720ms 35ms 700ms 980ms 744ms 980ms
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: -206 Bytes (0%)
  • ui: 3.12 KiB (0.04%)
  • common: 208 Bytes (0%)

@chaitanyapotti chaitanyapotti added this pull request to the merge queue Nov 14, 2025
Merged via the queue into main with commit 9df6889 Nov 14, 2025
186 checks passed
@chaitanyapotti chaitanyapotti deleted the fix/confirmation-shield-messages branch November 14, 2025 13:40
@github-actions github-actions bot locked and limited conversation to collaborators Nov 14, 2025
@metamaskbot metamaskbot added the release-13.11.0 Issue or pull request that will be included in release 13.11.0 label Nov 14, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-shield release-13.11.0 Issue or pull request that will be included in release 13.11.0 size-L team-onboarding Onboarding team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

update copywriting, marketing links and ctas for shield usage

7 participants