Skip to content

Conversation

tuna1207
Copy link
Member

@tuna1207 tuna1207 commented Sep 22, 2025

Description

Previously we were using extension identity API's launchWebAuthFlow for handling subscription checkout url which should have been used for oauth only and will open a controlled window which doesn't support other extension.
This PR open new tab to handle checkout with check for success url redirect instead from both popup and full screen mode.

Open in GitHub Codespaces

Changelog

CHANGELOG entry: Subscription check out URL open new tab

Related issues

Fixes:

Manual testing steps

  1. Go to #shield-plan page
  2. Start subscription check out

Screenshots/Recordings

Before

After

Screen.Recording.2025-09-22.at.17.12.45.mov
Screen.Recording.2025-09-22.at.17.11.14.mov

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.

@metamaskbot
Copy link
Collaborator

Builds ready [2f7b8ec]
UI Startup Metrics (1239 ± 58 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1239110813685812781322
load106892911905711041155
domContentLoaded106092011835710991141
domInteractive1913103111740
firstPaint668142116842810791140
backgroundConnect2512362707255263
firstReactRender2715132133243
getState16588111740
initialActions50254714
loadScripts81767393456852896
setupStore1062741219
WebpackHomeuiStartup109391613909411421289
load9027481150849561032
domContentLoaded8977451146839531028
domInteractive16125681433
firstPaint1636556669187246
backgroundConnect191160111946
firstReactRender37337773647
getState742031015
initialActions621641014
loadScripts8947431144829501018
setupStore96222913
FirefoxBrowserifyHomeuiStartup14141250196610714751594
load1221109414317412761370
domContentLoaded1221109314307412761370
domInteractive1073531655110263
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect38201332337104
firstReactRender29245562946
getState839717642
initialActions511862036
loadScripts1192107513847112481331
setupStore11519821820
WebpackHomeuiStartup15731404219315316461910
load13451187170012714341610
domContentLoaded13451187170012714341610
domInteractive1063234367100290
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect32225973746
firstReactRender44385544652
getState8216522613
initialActions3121236
loadScripts13221163166812714071580
setupStore11610714922
Benchmark value 1240 exceeds gate value 1234 for chrome browserify home mean uiStartup
Benchmark value 252 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 28 exceeds gate value 23 for chrome browserify home mean firstReactRender
Benchmark value 16 exceeds gate value 15 for chrome browserify home mean getState
Benchmark value 6 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 263 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 40 exceeds gate value 33 for chrome browserify home p95 getState
Benchmark value 14 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 19 exceeds gate value 17 for chrome browserify home p95 setupStore
Benchmark value 14 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 1414 exceeds gate value 1405 for firefox browserify home mean uiStartup
Benchmark value 38 exceeds gate value 25 for firefox browserify home mean backgroundConnect
Benchmark value 29 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 6 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 11 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 263 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 104 exceeds gate value 70 for firefox browserify home p95 backgroundConnect
Benchmark value 42 exceeds gate value 24 for firefox browserify home p95 getState
Benchmark value 6 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 107 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 33 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 44 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 3 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 290 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 52 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 6 exceeds gate value 2 for firefox webpack home p95 initialActions
Sum of mean exceeds: 314ms | Sum of p95 exceeds: 537.8ms
Sum of all benchmark exceeds: 851.8ms

@metamaskbot
Copy link
Collaborator

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

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

@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: 7604111 | Date: 9/24/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±69ms) 🟡 | historical mean value: 1.06s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 728ms (±68ms) 🟢 | historical mean value: 742ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 75ms (±14ms) 🟢 | historical mean value: 79ms ⬇️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 69ms 1.01s 1.31s 1.27s 1.31s
domContentLoaded 728ms 68ms 697ms 992ms 943ms 992ms
firstPaint 75ms 14ms 56ms 200ms 84ms 200ms
firstContentfulPaint 75ms 14ms 56ms 200ms 84ms 200ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [7604111]
UI Startup Metrics (1242 ± 69 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1242110614166912881380
load107295812346611121205
domContentLoaded106593912266611051192
domInteractive18144471739
firstPaint71370124443210821201
backgroundConnect2492352697253262
firstReactRender24174152538
getState14583101631
initialActions41354513
loadScripts82370698365857949
setupStore962231117
WebpackHomeuiStartup1100911177611911481277
load91074515241099731042
domContentLoaded90574115111089661038
domInteractive16125491443
firstPaint1586344768186277
backgroundConnect17104881539
firstReactRender36336243744
getState842341016
initialActions724461016
loadScripts90273915021079621029
setupStore96172912
FirefoxBrowserifyHomeuiStartup1378123017509414201588
load1198108214237412421330
domContentLoaded1197108214237412411330
domInteractive1053530751112247
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3121108133348
firstReactRender28236562839
getState529268
initialActions401511636
loadScripts1174106513957212221302
setupStore95517818
WebpackHomeuiStartup16801447208414717661989
load14321221179213215151709
domContentLoaded14321221179213215151709
domInteractive1143729956107292
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect34226683946
firstReactRender49397565262
getState7314414611
initialActions3122348
loadScripts14071196176213314911687
setupStore1063341122
Benchmark value 1243 exceeds gate value 1234 for chrome browserify home mean uiStartup
Benchmark value 1073 exceeds gate value 1070 for chrome browserify home mean load
Benchmark value 1065 exceeds gate value 1061 for chrome browserify home mean domContentLoaded
Benchmark value 249 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 25 exceeds gate value 23 for chrome browserify home mean firstReactRender
Benchmark value 5 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 1380 exceeds gate value 1365 for chrome browserify home p95 uiStartup
Benchmark value 1205 exceeds gate value 1190 for chrome browserify home p95 load
Benchmark value 1192 exceeds gate value 1180 for chrome browserify home p95 domContentLoaded
Benchmark value 1201 exceeds gate value 1180 for chrome browserify home p95 firstPaint
Benchmark value 262 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 13 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 949 exceeds gate value 940 for chrome browserify home p95 loadScripts
Benchmark value 16 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 31 exceeds gate value 25 for firefox browserify home mean backgroundConnect
Benchmark value 28 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 5 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 247 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 6 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 1680 exceeds gate value 1615 for firefox webpack home mean uiStartup
Benchmark value 1433 exceeds gate value 1380 for firefox webpack home mean load
Benchmark value 1432 exceeds gate value 1380 for firefox webpack home mean domContentLoaded
Benchmark value 114 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 34 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 49 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 4 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 1408 exceeds gate value 1360 for firefox webpack home mean loadScripts
Benchmark value 1989 exceeds gate value 1935 for firefox webpack home p95 uiStartup
Benchmark value 1709 exceeds gate value 1660 for firefox webpack home p95 load
Benchmark value 1709 exceeds gate value 1660 for firefox webpack home p95 domContentLoaded
Benchmark value 292 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 62 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 8 exceeds gate value 2 for firefox webpack home p95 initialActions
Benchmark value 1687 exceeds gate value 1630 for firefox webpack home p95 loadScripts
Sum of mean exceeds: 528ms | Sum of p95 exceeds: 755.8ms
Sum of all benchmark exceeds: 1283.8ms

Base automatically changed from feat/subscription-shield-settings-integration to main September 24, 2025 14:33
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.

@tuna1207 tuna1207 marked this pull request as ready for review September 24, 2025 15:01
@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: 44f461f | Date: 9/24/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.08s (±74ms) 🟡 | historical mean value: 1.06s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 754ms (±70ms) 🟢 | historical mean value: 744ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 81ms (±14ms) 🟢 | historical mean value: 80ms ⬆️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.08s 74ms 1.02s 1.37s 1.30s 1.37s
domContentLoaded 754ms 70ms 707ms 1.04s 963ms 1.04s
firstPaint 81ms 14ms 60ms 204ms 92ms 204ms
firstContentfulPaint 81ms 14ms 60ms 204ms 92ms 204ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [44f461f]
UI Startup Metrics (1228 ± 65 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1228110714336512651348
load105490812426110921147
domContentLoaded104789912356110851141
domInteractive18134561734
firstPaint59392122542910671137
backgroundConnect22020530411224236
firstReactRender27177172941
getState1354271630
initialActions60618716
loadScripts834689101857870923
setupStore1062331118
WebpackHomeuiStartup1163927132410612411299
load97676011299910511103
domContentLoaded971757112410010461099
domInteractive16124991442
firstPaint1516435056176258
backgroundConnect1694161530
firstReactRender36335033743
getState64203613
initialActions72204815
loadScripts96875511229910411096
setupStore96192913
FirefoxBrowserifyHomeuiStartup1365121917758614221500
load1188106414436712361294
domContentLoaded1188106414436712361293
domInteractive923418428108154
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect291991103144
firstReactRender27224642935
getState73921369
initialActions319145
loadScripts1166104314186612121273
setupStore948812815
WebpackHomeuiStartup16131404228416917231931
load13721157172014314951650
domContentLoaded13721156172014314951650
domInteractive1123233368110303
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3321162163741
firstReactRender47396155055
getState72848710
initialActions4160647
loadScripts13471137170214314531622
setupStore135221221022
Benchmark value 221 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 27 exceeds gate value 23 for chrome browserify home mean firstReactRender
Benchmark value 7 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 834 exceeds gate value 830 for chrome browserify home mean loadScripts
Benchmark value 236 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 16 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 18 exceeds gate value 17 for chrome browserify home p95 setupStore
Benchmark value 15 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 29 exceeds gate value 25 for firefox browserify home mean backgroundConnect
Benchmark value 27 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 3 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 10 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 5 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 112 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 33 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 47 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 4 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 303 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 55 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 7 exceeds gate value 2 for firefox webpack home p95 initialActions
Sum of mean exceeds: 265ms | Sum of p95 exceeds: 401.8ms
Sum of all benchmark exceeds: 666.8ms

cursor[bot]

This comment was marked as outdated.

@chaitanyapotti chaitanyapotti removed the request for review from lionellbriones September 24, 2025 15:26
checkoutSucceeded = true;

// Clean up: close the tab
this.platform.closeTab(tabId);
Copy link

Choose a reason for hiding this comment

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

Bug

The startSubscriptionWithCard method calls this.platform.closeTab(tabId) without awaiting its async operation or handling potential rejections. If closeTab fails to close the tab, the onTabRemovedListener won't trigger, causing the checkout Promise to hang indefinitely and leaving event listeners active.

Fix in Cursor Fix in Web

@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: 229db31 | Date: 9/24/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.06s (±74ms) 🟡 | historical mean value: 1.06s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 742ms (±71ms) 🟢 | historical mean value: 743ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 79ms (±14ms) 🟢 | historical mean value: 79ms ⬇️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.06s 74ms 1.01s 1.35s 1.27s 1.35s
domContentLoaded 742ms 71ms 701ms 1.03s 944ms 1.03s
firstPaint 79ms 14ms 60ms 204ms 92ms 204ms
firstContentfulPaint 79ms 14ms 60ms 204ms 92ms 204ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [229db31]
UI Startup Metrics (1224 ± 76 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1224109314617612711377
load105393913107210881208
domContentLoaded104793213057210771203
domInteractive18145171743
firstPaint62481125442810611128
backgroundConnect2152022336219226
firstReactRender25184562736
getState1354771627
initialActions609511614
loadScripts838721110372871984
setupStore941821014
WebpackHomeuiStartup1171929144211312511319
load986763116710610591131
domContentLoaded981759116310610541128
domInteractive161256101451
firstPaint1666642761192276
backgroundConnect16103561429
firstReactRender36337853642
getState64233712
initialActions62225819
loadScripts978757116110610511126
setupStore86192914
FirefoxBrowserifyHomeuiStartup13851216190112914311631
load1193106314358412611332
domContentLoaded1193106214358412601332
domInteractive101313705795237
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3219161193268
firstReactRender28234553039
getState11325332618
initialActions617311413
loadScripts1171104513988112391311
setupStore95476825
WebpackHomeuiStartup15411371206713816381825
load13131171166810813991532
domContentLoaded13131170166810813991532
domInteractive953226141104188
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3220240233440
firstReactRender42357464551
getState7311511713
initialActions501381647
loadScripts12911150163810813641512
setupStore105658921
Benchmark value 216 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 25 exceeds gate value 23 for chrome browserify home mean firstReactRender
Benchmark value 7 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 838 exceeds gate value 830 for chrome browserify home mean loadScripts
Benchmark value 1377 exceeds gate value 1365 for chrome browserify home p95 uiStartup
Benchmark value 1208 exceeds gate value 1190 for chrome browserify home p95 load
Benchmark value 1203 exceeds gate value 1180 for chrome browserify home p95 domContentLoaded
Benchmark value 43 exceeds gate value 41 for chrome browserify home p95 domInteractive
Benchmark value 227 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 14 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 985 exceeds gate value 940 for chrome browserify home p95 loadScripts
Benchmark value 19 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 32 exceeds gate value 25 for firefox browserify home mean backgroundConnect
Benchmark value 29 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 6 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 10 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 237 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 13 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 33 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 43 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 6 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 188 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 51 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 7 exceeds gate value 2 for firefox webpack home p95 initialActions
Sum of mean exceeds: 256ms | Sum of p95 exceeds: 424.8ms
Sum of all benchmark exceeds: 680.8ms

Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 468 Bytes (0.01%)
  • ui: 0 Bytes (0%)
  • common: 354 Bytes (0%)

Copy link
Contributor

@lionellbriones lionellbriones left a comment

Choose a reason for hiding this comment

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

lgtm

@chaitanyapotti chaitanyapotti added this pull request to the merge queue Sep 25, 2025
Merged via the queue into main with commit f258651 Sep 25, 2025
149 checks passed
@chaitanyapotti chaitanyapotti deleted the feat/checkout-url-handling branch September 25, 2025 03:07
@github-actions github-actions bot locked and limited conversation to collaborators Sep 25, 2025
@metamaskbot metamaskbot added the release-13.5.0 Issue or pull request that will be included in release 13.5.0 label Sep 25, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-shield release-13.5.0 Issue or pull request that will be included in release 13.5.0 size-M team-web3auth Web3Auth team
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants