Skip to content

feat: add defi referral screen for gmx#39701

Merged
ameliejyc merged 14 commits intomainfrom
gmx-referrals
Feb 11, 2026
Merged

feat: add defi referral screen for gmx#39701
ameliejyc merged 14 commits intomainfrom
gmx-referrals

Conversation

@ameliejyc
Copy link
Copy Markdown
Contributor

@ameliejyc ameliejyc commented Feb 2, 2026

Description

This PR adds GMX as a new DeFi referral partner and improves the DeFi referral middleware to handle both wallet_requestPermissions and eth_requestAccounts connection methods.

Changes:

  1. Added GMX referral partner configuration
  2. Extended createDefiReferralMiddleware to also trigger on successful eth_requestAccounts responses
  3. Added GMX referral image and localization strings
  4. Registered gmx_referral_consent approval type in confirmation templates
  5. Updated E2E test fixtures and storybook stories

Open in GitHub Codespaces

Changelog

CHANGELOG entry: Added GMX defi referral support

Related issues

Fixes: https://consensyssoftware.atlassian.net/browse/CEUX-880

Manual testing steps

  1. Build the extension with yarn start
  2. Navigate to https://app.gmx.io
  3. Click "Connect Wallet" and select MetaMask
  4. Verify the GMX referral consent modal appears after granting account access
  5. Click "Confirm" and verify you are redirected to the GMX referral URL
  6. Alternatively, uncheck box and verify you continue without referral

Screenshots/Recordings

Before

After

gmx.referrals.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.

Note

Medium Risk
Touches the post-connection RPC middleware path and broadens the conditions that trigger referral handling; mistakes could cause missed/extra consent prompts or unexpected referral flows for partner sites.

Overview
Adds GMX as a new DeFi referral partner, including partner config (origin/referral/learn-more URLs), a new gmx_referral_consent approval type wired into confirmation templates, and UI copy via the new gmxReferralSubtitle locale key.

Updates preferences/test fixtures to include an empty gmx entry in the referrals state, adds a Storybook story for GMX consent, and enhances createDefiReferralMiddleware to trigger referrals after successful eth_requestAccounts responses in addition to wallet_requestPermissions (with updated, more generic error logging and broader test coverage).

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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Feb 2, 2026

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-core-extension-ux Core Extension UX team label Feb 2, 2026
@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 bot commented Feb 2, 2026

✨ Files requiring CODEOWNER review ✨

@MetaMask/confirmations (2 files, +25 -21)
  • 📁 ui/
    • 📁 pages/
      • 📁 confirmations/
        • 📁 confirmation/
          • 📁 stories/
            • 📄 defi-referral-consent.stories.tsx +23 -21
          • 📁 templates/
            • 📄 index.js +2 -0

👨‍🔧 @MetaMask/core-extension-ux (1 files, +2 -2)
  • 📁 ui/
    • 📁 pages/
      • 📁 core/
        • 📁 defi-referral-consent/
          • 📄 defi-referral-consent.tsx +2 -2

👨‍🔧 @MetaMask/extension-platform (1 files, +1 -0)
  • 📁 test/
    • 📁 e2e/
      • 📁 fixtures/
        • 📄 onboarding-fixture.json +1 -0

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

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

👨‍🔧 @MetaMask/wallet-integrations (1 files, +29 -13)
  • 📁 app/
    • 📁 scripts/
      • 📁 lib/
        • 📄 createDefiReferralMiddleware.ts +29 -13

@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 bot commented Feb 2, 2026

Builds ready [f5c94b5]
UI Startup Metrics (1308 ± 115 ms)
PlatformBuildTypePageMetricTest Title (ms)Persona (ms)Mean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--13081058161111513731522
load--1111907140011311801301
domContentLoaded--1105895139511311681293
domInteractive--2716113212286
firstPaint--1476338464192267
backgroundConnect--23021128812233252
firstReactRender--17103961929
initialActions--109113
loadScripts--89068711801149571079
setupStore--1264661421
numNetworkReqs--221590181575
19--------
BrowserifyPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--20441433514064520473458
load--1060922159512710791358
domContentLoaded--1042911146812010621349
domInteractive--34181892533103
firstPaint--182691361142225284
backgroundConnect--43828030514453421245
firstReactRender--22155762533
initialActions--103112
loadScripts--80869012021098331089
setupStore--1553861732
numNetworkReqs--1294732354161246
19--------
WebpackStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--85266612201009181008
load--71159193085780861
domContentLoaded--70558791784773856
domInteractive--251691172375
firstPaint--1056321240130190
backgroundConnect--3718165244088
firstReactRender--15103561729
initialActions--104112
loadScripts--70358591384769854
setupStore--1252851324
numNetworkReqs--221582181576
19--------
WebpackPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--1243912194921714271668
load--6995941346116696988
domContentLoaded--6895881337116688980
domInteractive--3317156233584
firstPaint--16366898106209297
backgroundConnect--16614432628168233
firstReactRender--23173642432
initialActions--101011
loadScripts--6865861331115686973
setupStore--1142531317
numNetworkReqs--1364828458167261
19--------
FirefoxBrowserifyStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--14791180225420715762059
load--11701007185912712461381
domContentLoaded--11691007185912812461381
domInteractive--763524148109167
firstPaint--------
backgroundConnect--64273304479137
firstReactRender--14104661422
initialActions--103122
loadScripts--1135989170811112061333
setupStore--156202221244
numNetworkReqs--231282171878
19--------
BrowserifyPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--27772012717460828743958
load--13221099265723713331822
domContentLoaded--13221098265723713321822
domInteractive--13938657115139449
firstPaint--------
backgroundConnect--3171231328232368913
firstReactRender--23157272532
initialActions--204123
loadScripts--12661075263121012801586
setupStore--12811798175120588
numNetworkReqs--81352244893218
19--------
WebpackStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--17261405269220718322081
load--14721225212414115531704
domContentLoaded--14721219212314115531704
domInteractive--953230653133194
firstPaint--------
backgroundConnect--762623651118186
firstReactRender--15114541620
initialActions--102122
loadScripts--14281210200312415001637
setupStore--174225301251
numNetworkReqs--231288191881
19--------
WebpackPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--28802192427244230423999
load--15961210297131517272282
domContentLoaded--15961210297131517262282
domInteractive--12536705115125410
firstPaint--------
backgroundConnect--2861191393237279838
firstReactRender--23153652831
initialActions--213123
loadScripts--15401190291228816192190
setupStore--12771169188123588
numNetworkReqs--81362865089208
19--------
📊 Page Load Benchmark Results

Current Commit: f5c94b5 | Date: 2/2/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.06s (±38ms) 🟡 | historical mean value: 1.03s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 736ms (±35ms) 🟢 | historical mean value: 719ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 79ms (±10ms) 🟢 | historical mean value: 77ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.06s 38ms 1.03s 1.33s 1.08s 1.33s
domContentLoaded 736ms 35ms 706ms 997ms 761ms 997ms
firstPaint 79ms 10ms 64ms 164ms 88ms 164ms
firstContentfulPaint 79ms 10ms 64ms 164ms 88ms 164ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs
  • background: 414 Bytes (0.01%)
  • ui: 25 Bytes (0%)
  • common: 314 Bytes (0%)

@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 bot commented Feb 2, 2026

Builds ready [4d56605]
UI Startup Metrics (1326 ± 121 ms)
PlatformBuildTypePageMetricTest Title (ms)Persona (ms)Mean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--13261048187112113871518
load--1133899154311012041296
domContentLoaded--1126892152910911961291
domInteractive--271688172476
firstPaint--164641358140199300
backgroundConnect--23621530716244258
firstReactRender--18103652030
initialActions--1010214
loadScripts--90668513051079691076
setupStore--1363451522
numNetworkReqs--221580171574
19--------
BrowserifyPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--23101516731298121504766
load--1104960168315011261492
domContentLoaded--1087955167014711021459
domInteractive--37191712935119
firstPaint--208741502202235466
backgroundConnect--57027734696643732294
firstReactRender--25165382744
initialActions--1011113
loadScripts--85172714041368631196
setupStore--1875492042
numNetworkReqs--1365225555164246
19--------
WebpackStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--84667111521109121070
load--70259294595769931
domContentLoaded--69658993592764917
domInteractive--2516126192273
firstPaint--1086031050154220
backgroundConnect--3718129214278
firstReactRender--16103461730
initialActions--104112
loadScripts--69358793291756915
setupStore--1153951222
numNetworkReqs--221286181576
19--------
WebpackPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--1346917257530315341885
load--75162415361407461087
domContentLoaded--74061915271397291080
domInteractive--37201632937114
firstPaint--176711062147207541
backgroundConnect--17213542059168343
firstReactRender--24194142733
initialActions--102011
loadScripts--73761615111377261071
setupStore--1353651421
numNetworkReqs--1455135164170264
19--------
FirefoxBrowserifyStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--15101210214921816381969
load--12161003188417312771562
domContentLoaded--12151003188417312771561
domInteractive--753223346101168
firstPaint--------
backgroundConnect--722629453106185
firstReactRender--14105971423
initialActions--103122
loadScripts--1179981185615812291526
setupStore--186130241294
numNetworkReqs--231287191878
19--------
BrowserifyPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--27491913831378128643889
load--12741072212223213001826
domContentLoaded--12741072212223213001826
domInteractive--13840514101139403
firstPaint--------
backgroundConnect--41812120483475991106
firstReactRender--22147482329
initialActions--203123
loadScripts--12071028192016312251600
setupStore--13713797166144594
numNetworkReqs--84402204699203
19--------
WebpackStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--17241448275422718132269
load--14811222242517615721770
domContentLoaded--14811221242517615721770
domInteractive--953339654127187
firstPaint--------
backgroundConnect--752726856105199
firstReactRender--16117591520
initialActions--103122
loadScripts--14391202228115415011686
setupStore--164228291251
numNetworkReqs--231285181876
19--------
WebpackPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--29552253449442131943877
load--15761266260226117122048
domContentLoaded--15751265260126117122047
domInteractive--13635796147118579
firstPaint--------
backgroundConnect--3511191333277391985
firstReactRender--22163752432
initialActions--206123
loadScripts--15131245217722716172017
setupStore--17410756199252654
numNetworkReqs--81402945193190
19--------
📊 Page Load Benchmark Results

Current Commit: 4d56605 | Date: 2/2/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±38ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 733ms (±36ms) 🟢 | historical mean value: 721ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 80ms (±9ms) 🟢 | historical mean value: 77ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 38ms 1.02s 1.33s 1.08s 1.33s
domContentLoaded 733ms 36ms 707ms 999ms 760ms 999ms
firstPaint 80ms 9ms 64ms 156ms 88ms 156ms
firstContentfulPaint 80ms 9ms 64ms 156ms 88ms 156ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 814 Bytes (0.01%)
  • ui: 117 Bytes (0%)
  • common: 874 Bytes (0.01%)

@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 bot commented Feb 9, 2026

Builds ready [c854338]
UI Startup Metrics (1484 ± 117 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup14841239195911715461647
load12671033166610613301392
domContentLoaded12601030165810613221378
domInteractive2817112222489
firstPaint183681482224221328
backgroundConnect24822230217252287
firstReactRender18113052227
initialActions106113
loadScripts1028803142610710891151
setupStore1463961626
numNetworkReqs231588201582
BrowserifyPower User HomeuiStartup2941141210587196340637352
load12491065220117512951570
domContentLoaded12311051201716112771558
domInteractive3819360393487
firstPaint220801716226259389
backgroundConnect11332938988158416713040
firstReactRender22154052530
initialActions104111
loadScripts991814169815110241285
setupStore1454461625
numNetworkReqs1194727941143180
WebpackStandard HomeuiStartup840682106884885988
load70460793183751855
domContentLoaded69960392582746849
domInteractive251792182277
firstPaint1086133555139193
backgroundConnect41191443141120
firstReactRender15103751627
initialActions104112
loadScripts69660191681745841
setupStore1145171123
numNetworkReqs231590211584
WebpackPower User HomeuiStartup1259867276928313211756
load73763813821327241055
domContentLoaded72563013731337131046
domInteractive41172043339109
firstPaint155731379142178290
backgroundConnect1801271396152159294
firstReactRender22173032428
initialActions101011
loadScripts72262913631317111035
setupStore1354161625
numNetworkReqs1435828742162218
FirefoxBrowserifyStandard HomeuiStartup16531364211816017331909
load13851148186112914691596
domContentLoaded13841144186112914671595
domInteractive813521142104148
firstPaint------
backgroundConnect74322294772165
firstReactRender12101811314
initialActions102122
loadScripts13451126172411513991556
setupStore164211231444
numNetworkReqs251296231890
BrowserifyPower User HomeuiStartup28331988909281929263435
load15821293698566315601806
domContentLoaded15821293698566415591806
domInteractive14048753113148333
firstPaint------
backgroundConnect44712118593635491177
firstReactRender19148881828
initialActions203122
loadScripts15361269651462515031757
setupStore17016773211222696
numNetworkReqs894216630108151
WebpackStandard HomeuiStartup15931279208517416901896
load13691136163411714631557
domContentLoaded13681136163411814631557
domInteractive842919541121143
firstPaint------
backgroundConnect67232284380153
firstReactRender14115551419
initialActions103112
loadScripts13321123160610514081490
setupStore185235351148
numNetworkReqs231290181874
WebpackPower User HomeuiStartup27401972400039429533420
load15401267262124416321978
domContentLoaded15391267262124416321977
domInteractive181441007169202580
firstPaint------
backgroundConnect44412516053235861049
firstReactRender23156192434
initialActions203122
loadScripts14991247255623915861947
setupStore149171118190165562
numNetworkReqs913921337107156
📊 Page Load Benchmark Results

Current Commit: c854338 | Date: 2/9/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.03s (±35ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 705ms (±33ms) 🟢 | historical mean value: 724ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 75ms (±11ms) 🟢 | historical mean value: 77ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.03s 35ms 1.01s 1.29s 1.07s 1.29s
domContentLoaded 705ms 33ms 685ms 958ms 739ms 958ms
firstPaint 75ms 11ms 56ms 152ms 88ms 152ms
firstContentfulPaint 75ms 11ms 56ms 152ms 88ms 152ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: -1.28 MiB (-24.45%)
  • ui: -45.08 KiB (-0.54%)
  • common: 1.33 MiB (14.61%)

@ameliejyc ameliejyc marked this pull request as ready for review February 10, 2026 13:11
@ameliejyc ameliejyc requested review from a team as code owners February 10, 2026 13:11
@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 bot commented Feb 10, 2026

Builds ready [0f95f20]
UI Startup Metrics (1350 ± 91 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1350117515579113961522
load117499713648312161325
domContentLoaded116799213548312111314
domInteractive241584172073
firstPaint1436438669205238
backgroundConnect23421431415235264
firstReactRender15103441620
initialActions301931913
loadScripts9497711133839941093
setupStore1273441318
numNetworkReqs231590211585
BrowserifyPower User HomeuiStartup20071401680088018844038
load11641011175015611941561
domContentLoaded11461002173714911761533
domInteractive3618211313378
firstPaint197681678205240324
backgroundConnect50728447797093411518
firstReactRender21153942329
initialActions103111
loadScripts90977114571439421286
setupStore1565671625
numNetworkReqs1204824945140222
WebpackStandard HomeuiStartup8186751077938821008
load69759590281751855
domContentLoaded69159089381747850
domInteractive251599182280
firstPaint1066225446139191
backgroundConnect26185582941
firstReactRender15103451824
initialActions103111
loadScripts68858888480745842
setupStore1263041321
numNetworkReqs231598221587
WebpackPower User HomeuiStartup1223891186118213011624
load7216251196117712977
domContentLoaded7126171189116698971
domInteractive38172333634117
firstPaint1406557389157320
backgroundConnect16513138550158271
firstReactRender22173532429
initialActions103111
loadScripts7096141179114696962
setupStore1245361318
numNetworkReqs1224626447147212
FirefoxBrowserifyStandard HomeuiStartup15231320228816015581880
load13151142177412313521573
domContentLoaded13141142177312313521573
domInteractive72293725889151
firstPaint------
backgroundConnect5428113175694
firstReactRender1191711213
initialActions103112
loadScripts12901119174412113291535
setupStore12670101228
numNetworkReqs241291211784
BrowserifyPower User HomeuiStartup26682002376636728473424
load15091245217822315912025
domContentLoaded15081245217822315902025
domInteractive1273258493134278
firstPaint------
backgroundConnect3701131231282447912
firstReactRender201468121862
initialActions103122
loadScripts14601224211520315341962
setupStore126782519590643
numNetworkReqs783616131108129
WebpackStandard HomeuiStartup15991356204113016671863
load13801176169710214481534
domContentLoaded13791176169710214481533
domInteractive882924146130152
firstPaint------
backgroundConnect57261722662114
firstReactRender15115761521
initialActions103112
loadScripts13511161165310014141489
setupStore175191281353
numNetworkReqs241389191874
WebpackPower User HomeuiStartup26452041430242427783478
load15001275278424316141858
domContentLoaded15001275278424316141858
domInteractive12129836107121248
firstPaint------
backgroundConnect3281091101251359894
firstReactRender22156882431
initialActions213122
loadScripts14581239275023615191820
setupStore17391138231224727
numNetworkReqs76361943599143
📊 Page Load Benchmark Results

Current Commit: 0f95f20 | Date: 2/10/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±43ms) 🟡 | historical mean value: 1.03s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 730ms (±41ms) 🟢 | historical mean value: 717ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 78ms (±12ms) 🟢 | historical mean value: 77ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 43ms 1.02s 1.40s 1.07s 1.40s
domContentLoaded 730ms 41ms 705ms 1.05s 747ms 1.05s
firstPaint 78ms 12ms 64ms 184ms 84ms 184ms
firstContentfulPaint 78ms 12ms 64ms 184ms 84ms 184ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs
  • background: 416 Bytes (0.01%)
  • ui: 12 Bytes (0%)
  • common: 314 Bytes (0%)

OGPoyraz
OGPoyraz previously approved these changes Feb 10, 2026
Copy link
Copy Markdown

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 bot commented Feb 10, 2026

Builds ready [36a5fab]
UI Startup Metrics (1396 ± 101 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup13961191174710114391564
load119898915029312561350
domContentLoaded119298514959312501342
domInteractive2816100192481
firstPaint166671297190190296
backgroundConnect24222131413245266
firstReactRender15103231620
initialActions105112
loadScripts96577112679110261107
setupStore1263241419
numNetworkReqs231590201580
BrowserifyPower User HomeuiStartup275814218749159427536137
load12491062175614512931578
domContentLoaded12301056172413812711566
domInteractive37192163036102
firstPaint218841617165263359
backgroundConnect81230051249627053262
firstReactRender24165862633
initialActions107112
loadScripts983819144913210221301
setupStore1675191934
numNetworkReqs1074025141138164
WebpackStandard HomeuiStartup807676116495834974
load698604103884749847
domContentLoaded692598103383742842
domInteractive2615100192277
firstPaint1066229250123201
backgroundConnect25185262935
firstReactRender14102741721
initialActions103112
loadScripts689596103282740838
setupStore1163041219
numNetworkReqs231592201581
WebpackPower User HomeuiStartup1256845301132413111630
load72663210851077451008
domContentLoaded71562310791067321000
domInteractive37191813333111
firstPaint1496953282183311
backgroundConnect17413363877158334
firstReactRender21173642228
initialActions101011
loadScripts7126211070105730989
setupStore1143041316
numNetworkReqs1106122334124187
FirefoxBrowserifyStandard HomeuiStartup15381293217616615761873
load13281136186013413781604
domContentLoaded13261136186013513771604
domInteractive72323394997137
firstPaint------
backgroundConnect5327153185590
firstReactRender1191711213
initialActions103012
loadScripts13021118175512913521581
setupStore13673111237
numNetworkReqs241296211784
BrowserifyPower User HomeuiStartup26831781449943727973552
load14791254248220714731877
domContentLoaded14791254247620714691877
domInteractive14935722134143419
firstPaint------
backgroundConnect353701567306418993
firstReactRender18146781722
initialActions103123
loadScripts14421231242919714441795
setupStore1458767199133647
numNetworkReqs821920937101146
WebpackStandard HomeuiStartup16081283216213916471891
load13911183181210914331583
domContentLoaded13901183181210914331583
domInteractive932935450115170
firstPaint------
backgroundConnect58272073362135
firstReactRender14112931418
initialActions102022
loadScripts13601143170910014061537
setupStore156111151445
numNetworkReqs241388191877
WebpackPower User HomeuiStartup27471941451343928693599
load15221271353430315612041
domContentLoaded15211270353330315602040
domInteractive14734859153135531
firstPaint------
backgroundConnect3881171543301528944
firstReactRender22157182432
initialActions213122
loadScripts14811245345229115351939
setupStore1808805195256616
numNetworkReqs813622634104143
📊 Page Load Benchmark Results

Current Commit: 36a5fab | Date: 2/10/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.03s (±39ms) 🟡 | historical mean value: 1.03s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 717ms (±36ms) 🟢 | historical mean value: 715ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 76ms (±13ms) 🟢 | historical mean value: 77ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.03s 39ms 1.00s 1.33s 1.06s 1.33s
domContentLoaded 717ms 36ms 697ms 994ms 734ms 994ms
firstPaint 76ms 13ms 60ms 196ms 88ms 196ms
firstContentfulPaint 76ms 13ms 60ms 196ms 88ms 196ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs
  • background: 425 Bytes (0.01%)
  • ui: 35 Bytes (0%)
  • common: 314 Bytes (0%)

Copy link
Copy Markdown
Member

@NidhiKJha NidhiKJha left a comment

Choose a reason for hiding this comment

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

PR is looking really good. one case which I am not clear about:

  1. Connect MM to an account, opt for referrals and see referral code being applied (amelie in this case)
  2. Disconnect MM
  3. Connect MM to account 3. Don't opt for referrals
  4. After connection, referral code still apply (different one as shared in screencast)
Screen.Recording.2026-02-11.at.11.06.01.AM.mov

@metamaskbotv2
Copy link
Copy Markdown
Contributor

metamaskbotv2 bot commented Feb 11, 2026

Builds ready [4a50274]
UI Startup Metrics (1432 ± 104 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup14321234187610414861572
load1221102216479812671371
domContentLoaded1214101116309812621361
domInteractive2917137222588
firstPaint167691307173211262
backgroundConnect24622731815252274
firstReactRender1810202191827
initialActions301771814
loadScripts98378413869610371124
setupStore147142141521
numNetworkReqs231588201583
BrowserifyPower User HomeuiStartup16911362282820317382031
load11421017210717811181593
domContentLoaded11281006209917511031586
domInteractive37182563532131
firstPaint1647147186226302
backgroundConnect31527842126327365
firstReactRender21154762134
initialActions104111
loadScripts89077817581658621315
setupStore1574771724
numNetworkReqs1184825945143181
WebpackStandard HomeuiStartup81965711451088941019
load708589105495786853
domContentLoaded703584104494779848
domInteractive251586172074
firstPaint1055628846129191
backgroundConnect24157192636
firstReactRender1494451622
initialActions105112
loadScripts700582104194772846
setupStore1153351122
numNetworkReqs2315100221585
WebpackPower User HomeuiStartup1217897187715212891476
load70161213571236881026
domContentLoaded69160413381226781018
domInteractive38162333833138
firstPaint1356248680152295
backgroundConnect16612936550172287
firstReactRender22173332327
initialActions103111
loadScripts68860213251206761005
setupStore1345061419
numNetworkReqs1204728055145247
FirefoxBrowserifyStandard HomeuiStartup15611349235318815931949
load13411160209114713981610
domContentLoaded13401160209114713971608
domInteractive67322143987137
firstPaint------
backgroundConnect58282092854115
firstReactRender1292021216
initialActions102022
loadScripts13131137206714013651571
setupStore157179241329
numNetworkReqs241491211685
BrowserifyPower User HomeuiStartup27201958445941328943480
load15711332230524516292115
domContentLoaded15711332230524516292115
domInteractive13836706132127470
firstPaint------
backgroundConnect292117960248296901
firstReactRender20147492028
initialActions103122
loadScripts15261309228822315772029
setupStore103972016187518
numNetworkReqs65341563493128
WebpackStandard HomeuiStartup16441420298219516561993
load14191253276616614431612
domContentLoaded14181248276516614421612
domInteractive113301475144130182
firstPaint------
backgroundConnect56232133361124
firstReactRender14114841416
initialActions102012
loadScripts13931236274716514161543
setupStore176190301159
numNetworkReqs231286181774
WebpackPower User HomeuiStartup27092011386245928773598
load15561215245233617332210
domContentLoaded15551215245233617332210
domInteractive14129838179108645
firstPaint------
backgroundConnect276108940224248896
firstReactRender21154152429
initialActions207123
loadScripts15241201243332516962145
setupStore2197784247380704
numNetworkReqs63341553381127
📊 Page Load Benchmark Results

Current Commit: 4a50274 | Date: 2/11/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±52ms) 🟡 | historical mean value: 1.03s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 728ms (±50ms) 🟢 | historical mean value: 721ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 76ms (±13ms) 🟢 | historical mean value: 76ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 52ms 1.01s 1.33s 1.07s 1.33s
domContentLoaded 728ms 50ms 702ms 1.01s 751ms 1.01s
firstPaint 76ms 13ms 60ms 188ms 88ms 188ms
firstContentfulPaint 76ms 13ms 60ms 188ms 88ms 188ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 270 Bytes (0.01%)
  • ui: 7.62 KiB (0.09%)
  • common: 162.73 KiB (1.52%)

@ameliejyc
Copy link
Copy Markdown
Contributor Author

Thanks for testing @NidhiKJha ! That's a great point. The reason is because of how GMX stores and applies referral codes. If a user goes to a referral screen, that code gets saved in local storage. If there is a code in local storage and the user does not have an existing code, that code gets shown on the Referrals page. It jars a little bit with our UI it's true, but we can't change the GMX implementation so I don't see a way around this really. Users can always remove or change the referral code if they wish to.

@ameliejyc ameliejyc added this pull request to the merge queue Feb 11, 2026
Merged via the queue into main with commit 8fcefb0 Feb 11, 2026
176 checks passed
@ameliejyc ameliejyc deleted the gmx-referrals branch February 11, 2026 12:32
@github-actions github-actions bot locked and limited conversation to collaborators Feb 11, 2026
@metamaskbot metamaskbot added the release-13.19.0 Issue or pull request that will be included in release 13.19.0 label Feb 11, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

release-13.19.0 Issue or pull request that will be included in release 13.19.0 size-M team-core-extension-ux Core Extension UX team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants