Skip to content

Conversation

@MajorLift
Copy link
Contributor

@MajorLift MajorLift commented Nov 20, 2025

Description

Enables React Compiler code transformation and optimizations for Webpack builds.

The UI Startup and pageLoad benchmark results consistently show no evidence of initial load performance regression due to this change.

Webpack CLI arguments

--reactCompilerDebug ('all' | 'critical' | 'none')

This sets the panicThreshold compiler option for stricter debugging.

There are still a large number of React Compiler errors present in the app that do not break functionality but prevent compiler optimizations from being applied. We should aim for eventually being able to create non-production builds with panicThreshold set to critical_errors, and then to all_errors.

--reactCompilerVerbose (boolean)

This outputs compilation status and error descriptions per file, as well as compiler run result statistics.

The output distinguishes between actionable errors, which are fixable from our end, and "unsupported" errors that are caused by limitations or unimplemented features in React Compiler itself.

Screenshot 2025-11-21 at 3 54 04 PM

Open in GitHub Codespaces

Changelog

CHANGELOG entry: null (build)

Related issues

Manual testing steps

CLI arguments

  1. Running yarn webpack --reactCompilerVerbose should result in the output seen in the screenshot above.
  2. Running yarn webpack --reactCompilerDebug=all should result in the build failing with errors.

Build output

  1. Create Webpack dev build using yarn webpack.
  2. Inspect ./dist/{chrome,firefox}/js-ui_{com,d,p,pages}*
  3. Search for "react_compiler_runtime__WEBPACK_IMPORTED_MODULE_0__.c"
  4. There should be many examples of React Compiler-transformed code that uses a $ variable e.g.
  const $ = (0,react_compiler_runtime__WEBPACK_IMPORTED_MODULE_0__.c)(4);
  let t2;
  if ($[0] !== t1) {
    t2 = t1 === undefined ? {
      expireClipboard: true
    } : t1;
    $[0] = t1;
    $[1] = t2;
  } else {
    t2 = $[1];
  }

Screenshots/Recordings

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

Enables React Compiler in Webpack builds via a new loader and plugin, adds CLI flags for verbosity/debug, updates Babel matching, and adjusts LavaMoat policies/deps.

  • Build/Webpack:
    • Integrate React Compiler via getReactCompilerLoader and apply to ui/** files using UI_DIR_RE and a new module rule in development/webpack/webpack.config.ts.
    • Add ReactCompilerPlugin to print compilation stats when --reactCompilerVerbose is enabled.
    • Extend CLI (development/webpack/utils/cli.ts) with --reactCompilerVerbose and --reactCompilerDebug options and include them in dry-run output; update tests with new defaults.
  • Babel:
    • Broaden UI file matching regex in babel.config.js to exclude *.test|*.stories|*.container while capturing all other JS/TS/JSX/TSX under ui/**.
  • Security/Policies:
    • Update LavaMoat policies to account for react-compiler-webpack and react-compiler-runtime and related Babel syntax plugins.
  • Dependencies:
    • Add react-compiler-webpack and update yarn.lock to newer @babel/plugin-syntax-jsx/typescript entries.
  • Tooling:
    • Add react-compiler-webpack to .depcheckrc.yml ignores.

Written by Cursor Bugbot for commit fdba65b. 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-extension-platform Extension Platform team label Nov 20, 2025
@socket-security
Copy link

socket-security bot commented Nov 20, 2025

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addedreact-compiler-webpack@​1.0.0961008988100

View full report

@MajorLift
Copy link
Contributor Author

@metamaskbot update-policies

@metamaskbot
Copy link
Collaborator

No policy changes

@MajorLift MajorLift force-pushed the jongsun/build/enable-react-compiler-webpack branch from 4df456e to e1f1daa Compare November 20, 2025 11:47
@MajorLift
Copy link
Contributor Author

@metamaskbot update-policies

@MajorLift MajorLift force-pushed the jongsun/build/enable-react-compiler-webpack branch from e1f1daa to 20b99b9 Compare November 20, 2025 12:01
@metamaskbot
Copy link
Collaborator

No policy changes

@MajorLift
Copy link
Contributor Author

@metamaskbot update-policies

@metamaskbot
Copy link
Collaborator

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

1 similar comment
@metamaskbot
Copy link
Collaborator

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

@MajorLift
Copy link
Contributor Author

@metamaskbot update-policies

@metamaskbot
Copy link
Collaborator

No policy changes

1 similar comment
@metamaskbot
Copy link
Collaborator

No policy changes

@MajorLift MajorLift force-pushed the jongsun/build/enable-react-compiler-webpack branch from 20b99b9 to 3db3c08 Compare November 20, 2025 15:13
@MajorLift
Copy link
Contributor Author

@metamaskbot update-policies

@metamaskbot
Copy link
Collaborator

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

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

@metamaskbot
Copy link
Collaborator

metamaskbot commented Nov 20, 2025

✨ Files requiring CODEOWNER review ✨

📜 @MetaMask/policy-reviewers (3 files, +21 -5)
  • 📁 lavamoat/
    • 📁 build-system/
      • 📄 policy.json +5 -5
    • 📁 webpack/
      • 📁 mv2/
        • 📄 policy.json +8 -0
      • 📁 mv3/
        • 📄 policy.json +8 -0

Tip

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

@metamaskbot
Copy link
Collaborator

Builds ready [c4f11c5]
UI Startup Metrics (1222 ± 95 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1222106815609512781395
load104591513629010951203
domContentLoaded103991213548810901193
domInteractive231490162074
firstPaint53281136641210081176
backgroundConnect21419330613218232
firstReactRender31196993549
getState331762114056
initialActions105113
loadScripts831705114288884993
setupStore1072431216
numNetworkReqs1257721574
BrowserifyPower User HomeuiStartup18711575274225320482320
load997865166515810031419
domContentLoaded98285716511579821408
domInteractive36162404030149
firstPaint5038215683769051090
backgroundConnect21919826112227242
firstReactRender7445114127994
getState18113234747192301
initialActions103011
loadScripts78066314431587781204
setupStore1893782434
numNetworkReqs1477527950196232
WebpackStandard HomeuiStartup------
load------
domContentLoaded------
domInteractive------
firstPaint------
backgroundConnect------
firstReactRender------
getState------
initialActions------
loadScripts------
setupStore------
numNetworkReqs------
WebpackPower User HomeuiStartup------
load------
domContentLoaded------
domInteractive------
firstPaint------
backgroundConnect------
firstReactRender------
getState------
initialActions------
loadScripts------
setupStore------
numNetworkReqs------
FirefoxBrowserifyStandard HomeuiStartup11951036158010812471416
load101989313167810711182
domContentLoaded101889213157810711182
domInteractive51292353348117
firstPaint------
backgroundConnect3418151173768
firstReactRender21184752132
getState1067310921
initialActions102012
loadScripts99987812937210451139
setupStore95425921
numNetworkReqs1156615659
BrowserifyPower User HomeuiStartup28102153379837730353548
load12411006178019712661648
domContentLoaded12411006178019712651647
domInteractive16434697143165551
firstPaint------
backgroundConnect222241069234267782
firstReactRender89501331897125
getState26080921248215864
initialActions219127
loadScripts1197987173918612061612
setupStore12610786183116730
numNetworkReqs95612123999198
WebpackStandard HomeuiStartup------
load------
domContentLoaded------
domInteractive------
firstPaint------
backgroundConnect------
firstReactRender------
getState------
initialActions------
loadScripts------
setupStore------
numNetworkReqs------
WebpackPower User HomeuiStartup------
load------
domContentLoaded------
domInteractive------
firstPaint------
backgroundConnect------
firstReactRender------
getState------
initialActions------
loadScripts------
setupStore------
numNetworkReqs------
📊 Page Load Benchmark Results

Current Commit: c4f11c5 | Date: 11/20/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.08s (±68ms) 🟡 | historical mean value: 1.03s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 760ms (±67ms) 🟢 | historical mean value: 722ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 81ms (±15ms) 🟢 | historical mean value: 78ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.08s 68ms 1.02s 1.42s 1.31s 1.42s
domContentLoaded 760ms 67ms 712ms 1.08s 984ms 1.08s
firstPaint 81ms 15ms 68ms 212ms 92ms 212ms
firstContentfulPaint 81ms 15ms 68ms 212ms 92ms 212ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

@MajorLift MajorLift force-pushed the jongsun/build/enable-react-compiler-webpack branch from c4f11c5 to 0245a73 Compare November 20, 2025 17:57
@metamaskbot
Copy link
Collaborator

Builds ready [0245a73]
UI Startup Metrics (1199 ± 102 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup11991028161410212561366
load103189313149111011187
domContentLoaded102588813109010951180
domInteractive2314101162063
firstPaint50775131340710161140
backgroundConnect20719226210210227
firstReactRender29195683447
getState321784103553
initialActions103112
loadScripts825696108189900983
setupStore1274451321
numNetworkReqs1257721573
BrowserifyPower User HomeuiStartup18631559327229720022566
load97182318841769611451
domContentLoaded95681818721749451432
domInteractive35151933927152
firstPaint6668915153849251410
backgroundConnect21018926112214240
firstReactRender76431321684102
getState19514341952220304
initialActions104112
loadScripts76264016421697551216
setupStore1784392238
numNetworkReqs1457428954180275
WebpackStandard HomeuiStartup------
load------
domContentLoaded------
domInteractive------
firstPaint------
backgroundConnect------
firstReactRender------
getState------
initialActions------
loadScripts------
setupStore------
numNetworkReqs------
WebpackPower User HomeuiStartup------
load------
domContentLoaded------
domInteractive------
firstPaint------
backgroundConnect------
firstReactRender------
getState------
initialActions------
loadScripts------
setupStore------
numNetworkReqs------
FirefoxBrowserifyStandard HomeuiStartup12471097240016212821511
load1059956220513210931208
domContentLoaded1058952220513210931201
domInteractive56341352673114
firstPaint------
backgroundConnect3521128173769
firstReactRender22184342233
getState10613113919
initialActions102012
loadScripts1039940217913010701146
setupStore14619525934
numNetworkReqs1257317662
BrowserifyPower User HomeuiStartup27181862374739328913592
load1189955172117612351588
domContentLoaded1187950172117612341587
domInteractive14233616129168473
firstPaint------
backgroundConnect23027957256273834
firstReactRender86361642398129
getState27984915277213868
initialActions218237
loadScripts1144936169716311851495
setupStore1376791191134672
numNetworkReqs98612254195206
WebpackStandard HomeuiStartup------
load------
domContentLoaded------
domInteractive------
firstPaint------
backgroundConnect------
firstReactRender------
getState------
initialActions------
loadScripts------
setupStore------
numNetworkReqs------
WebpackPower User HomeuiStartup------
load------
domContentLoaded------
domInteractive------
firstPaint------
backgroundConnect------
firstReactRender------
getState------
initialActions------
loadScripts------
setupStore------
numNetworkReqs------
📊 Page Load Benchmark Results

Current Commit: 0245a73 | Date: 11/20/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±62ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 727ms (±60ms) 🟢 | historical mean value: 727ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 76ms (±10ms) 🟢 | historical mean value: 79ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 62ms 1.01s 1.30s 1.27s 1.30s
domContentLoaded 727ms 60ms 698ms 993ms 932ms 993ms
firstPaint 76ms 10ms 60ms 160ms 88ms 160ms
firstContentfulPaint 76ms 10ms 60ms 160ms 88ms 160ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

@MajorLift
Copy link
Contributor Author

@metamaskbot update-policies

@metamaskbot
Copy link
Collaborator

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

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

@metamaskbot
Copy link
Collaborator

Builds ready [0b22503]
UI Startup Metrics (1193 ± 82 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1193102213828212511334
load102589211917510851144
domContentLoaded102088911757410811140
domInteractive231383152063
firstPaint4257311933669121106
backgroundConnect2041922488207222
firstReactRender29194983446
getState31166383547
initialActions105112
loadScripts82167497674881943
setupStore1051931116
numNetworkReqs1257820574
BrowserifyPower User HomeuiStartup19081560298826021182353
load1021884182116410331453
domContentLoaded1005872180816110061434
domInteractive36162394127161
firstPaint5919515194189631372
backgroundConnect22419927714231249
firstReactRender78431351484104
getState17912834943197264
initialActions103112
loadScripts79867215901588001217
setupStore20851102640
numNetworkReqs1487528549185247
WebpackStandard HomeuiStartup------
load------
domContentLoaded------
domInteractive------
firstPaint------
backgroundConnect------
firstReactRender------
getState------
initialActions------
loadScripts------
setupStore------
numNetworkReqs------
WebpackPower User HomeuiStartup------
load------
domContentLoaded------
domInteractive------
firstPaint------
backgroundConnect------
firstReactRender------
getState------
initialActions------
loadScripts------
setupStore------
numNetworkReqs------
FirefoxBrowserifyStandard HomeuiStartup12051072168311912601431
load102492812627410821162
domContentLoaded102292812627410821162
domInteractive53311923077109
firstPaint------
backgroundConnect3419167203680
firstReactRender22183752235
getState1057110920
initialActions103112
loadScripts100391311636810601134
setupStore13592151350
numNetworkReqs1156615662
BrowserifyPower User HomeuiStartup26361777352829128323115
load12071012180816412331558
domContentLoaded12061012180816312321558
domInteractive14938744128159487
firstPaint------
backgroundConnect20729976233224804
firstReactRender81391301589104
getState27879848265263833
initialActions2014237
loadScripts1164980177615711801519
setupStore1291077919599744
numNetworkReqs97592164192207
WebpackStandard HomeuiStartup------
load------
domContentLoaded------
domInteractive------
firstPaint------
backgroundConnect------
firstReactRender------
getState------
initialActions------
loadScripts------
setupStore------
numNetworkReqs------
WebpackPower User HomeuiStartup------
load------
domContentLoaded------
domInteractive------
firstPaint------
backgroundConnect------
firstReactRender------
getState------
initialActions------
loadScripts------
setupStore------
numNetworkReqs------
📊 Page Load Benchmark Results

Current Commit: 0b22503 | Date: 11/20/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.11s (±121ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 791ms (±117ms) 🟢 | historical mean value: 728ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 79ms (±12ms) 🟢 | historical mean value: 78ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.11s 121ms 1.02s 1.38s 1.33s 1.38s
domContentLoaded 791ms 117ms 704ms 1.04s 1.00s 1.04s
firstPaint 79ms 12ms 60ms 172ms 96ms 172ms
firstContentfulPaint 79ms 12ms 60ms 172ms 96ms 172ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

@MajorLift MajorLift force-pushed the jongsun/build/enable-react-compiler-webpack branch from 0b22503 to d9aa833 Compare November 20, 2025 20:35
@MajorLift
Copy link
Contributor Author

@metamaskbot update-policies

@metamaskbot
Copy link
Collaborator

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

@MajorLift MajorLift force-pushed the jongsun/build/enable-react-compiler-webpack branch from ac42922 to b560c3e Compare December 3, 2025 14:59
@MajorLift
Copy link
Contributor Author

@metamaskbot update-policies

@metamaskbot
Copy link
Collaborator

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

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

type: 'asset/resource',
},
{
test: /(?:.(?!\.(?:test|stories|container)))+\.(?:m?[jt]s|[jt]sx)$/u,
Copy link

Choose a reason for hiding this comment

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

Bug: Regex fails to exclude test/stories/container files

The regex /(?:.(?!\.(?:test|stories|container)))+\.(?:m?[jt]s|[jt]sx)$/u intended to exclude test, stories, and container files actually matches them. Since the regex lacks a ^ anchor, it can start matching from any position. For a file like Button.test.tsx, the regex matches starting at the . before test because at that position, what follows (test.tsx) doesn't start with \.test (it starts with t). This allows .test to match the first part and .tsx to match the second, resulting in the full match .test.tsx. Test and story files will be processed by the React Compiler loader when they should be excluded.

Fix in Cursor Fix in Web

Copy link
Contributor Author

@MajorLift MajorLift Dec 3, 2025

Choose a reason for hiding this comment

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

babel.config.js Outdated
{
test: new RegExp(
`^${path.join(__dirname, 'ui')}${slash}(?:components|contexts|hooks|layouts|pages)${slash}(?:.(?!\\.(?:test|stories|container)))+\\.(?:m?[jt]s|[jt]sx)$`,
`^${path.join(__dirname, 'ui')}${slash}(?:components|contexts|hooks|layouts|pages)${slash}^(?!.*\\.(?:test|stories|container)\\.)(?:.*)\\.(?:m?[jt]s|[jt]sx)$$`,
Copy link

Choose a reason for hiding this comment

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

Bug: Malformed regex prevents Babel React Compiler plugin

The regex pattern contains a ^ (start-of-string anchor) in the middle of the pattern after ${slash} and before (?!.... Since characters have already been matched before this position, the ^ can never match, causing the entire regex to never match any files. Additionally, the pattern ends with $$ instead of $. These errors cause the babel-plugin-react-compiler to never be applied to any files during Babel builds.

Fix in Cursor Fix in Web

Copy link
Contributor Author

@MajorLift MajorLift Dec 3, 2025

Choose a reason for hiding this comment

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

const reactCompilerOptions = {
target,
logger: verbose ? (reactCompilerLogger as Logger) : undefined,
panicThreshold: debug === 'none' ? debug : `${debug}_errors`,
Copy link

Choose a reason for hiding this comment

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

Bug: Invalid panicThreshold value when debug is none

When debug is 'none', the code sets panicThreshold: 'none', but 'none' is not a valid panicThreshold value for React Compiler. According to React Compiler documentation, valid values are 'all_errors', 'critical_errors', or undefined (to disable panicking). The intended behavior of "prevent build from failing" requires setting panicThreshold to undefined, not the string 'none'. This may cause undefined behavior or runtime errors when React Compiler processes the unrecognized value.

Fix in Cursor Fix in Web

Copy link
Contributor Author

@MajorLift MajorLift Dec 3, 2025

Choose a reason for hiding this comment

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

Fixed: 0b3aa55

  • 'none' is accepted and triggers the correct behavior. It's also present in the type definition. But switching to undefined just to be safe, since missing properties fallback to default values.
  • undefined (i.e. optional) being the default value for panicThreshold is why I initially had 'all', 'critical', and undefined as the options for this flag, but 'none' as a default value is more explicit and consistent.

@MajorLift MajorLift force-pushed the jongsun/build/enable-react-compiler-webpack branch from 37abf44 to e7c11bf Compare December 3, 2025 16:12
@metamaskbot
Copy link
Collaborator

Builds ready [0b3aa55]
UI Startup Metrics (1245 ± 112 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup12451003160911213071461
load104185913899710931226
domContentLoaded103585613829610841216
domInteractive251589182082
firstPaint59384140142710521193
backgroundConnect21720025912222243
firstReactRender332071113756
getState3516101164271
initialActions106112
loadScripts824655116493873994
setupStore1345071528
numNetworkReqs1157217561
BrowserifyPower User HomeuiStartup20451739254920021592446
load1049895148114211111362
domContentLoaded1038887146714111031349
domInteractive3417261322999
firstPaint54612314784149801350
backgroundConnect274205770114247533
firstReactRender54428485972
getState18814928228197262
initialActions102112
loadScripts81867712261368321121
setupStore1664271633
numNetworkReqs80632402675145
WebpackStandard HomeuiStartup802692122771827935
load635565104671670778
domContentLoaded630559103270665774
domInteractive2514115192177
firstPaint270721041199284689
backgroundConnect1064461020
firstReactRender2719123113137
getState24134593143
initialActions103111
loadScripts627557102369662766
setupStore1061931117
numNetworkReqs1157116560
WebpackPower User HomeuiStartup16011252219725318252056
load664583111393672889
domContentLoaded657578110492663882
domInteractive32181332528104
firstPaint257881120192232673
backgroundConnect1337636219115577
firstReactRender54438285971
getState17314125020182219
initialActions102012
loadScripts654576109490661872
setupStore1595281535
numNetworkReqs79621692574153
FirefoxBrowserifyStandard HomeuiStartup12791050172614013471581
load1062900144310411231254
domContentLoaded1062900144310511231254
domInteractive58302373880134
firstPaint------
backgroundConnect40181402342100
firstReactRender22185762233
getState1065681022
initialActions102112
loadScripts103788514199510891220
setupStore145160221050
numNetworkReqs1156516761
BrowserifyPower User HomeuiStartup30181964500084338814662
load1384976276746814022560
domContentLoaded1384976276646814022560
domInteractive1023540979101296
firstPaint------
backgroundConnect2622513863563131197
firstReactRender68382413476123
getState295801236260316963
initialActions3157823
loadScripts1251961259633613222172
setupStore1506934206151707
numNetworkReqs86602244474213
WebpackStandard HomeuiStartup17201425220316918472039
load1407121516439514601594
domContentLoaded1406121516439514601594
domInteractive863123541111162
firstPaint------
backgroundConnect64274255367158
firstReactRender29217673141
getState218165281694
initialActions103122
loadScripts1374119216008714331527
setupStore199129191659
numNetworkReqs1256617763
WebpackPower User HomeuiStartup33272362594388741525060
load17051192374256917172979
domContentLoaded17051192374256917172979
domInteractive120351194135116363
firstPaint------
backgroundConnect2332314263082061200
firstReactRender64402392764117
getState349701105274537899
initialActions3136438
loadScripts15861162316046116622808
setupStore1375117322095744
numNetworkReqs87592304177207
📊 Page Load Benchmark Results

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

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.02s (±41ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 714ms (±39ms) 🟢 | historical mean value: 724ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 75ms (±13ms) 🟢 | historical mean value: 77ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.02s 41ms 1.00s 1.36s 1.06s 1.36s
domContentLoaded 714ms 39ms 693ms 1.03s 741ms 1.03s
firstPaint 75ms 13ms 60ms 192ms 88ms 192ms
firstContentfulPaint 75ms 13ms 60ms 192ms 88ms 192ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 58 Bytes (0%)
  • ui: 7.33 KiB (0.09%)
  • common: 407 Bytes (0%)

@metamaskbot
Copy link
Collaborator

Builds ready [00b19d0]
UI Startup Metrics (1198 ± 104 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1198994159910412551369
load99683012869210461166
domContentLoaded99082412769210371160
domInteractive241595172173
firstPaint632156118839010041108
backgroundConnect19617723411201220
firstReactRender321970103750
getState3615116174262
initialActions106114
loadScripts800642105488843967
setupStore1263051423
numNetworkReqs1157117567
BrowserifyPower User HomeuiStartup20501595284820421592449
load1051915147112510891354
domContentLoaded1040909145212510831329
domInteractive33181302431104
firstPaint52412514804089781319
backgroundConnect278208791124241570
firstReactRender544310895766
getState19514572260208254
initialActions102112
loadScripts82270212281238491113
setupStore1784981735
numNetworkReqs79661612274142
WebpackStandard HomeuiStartup832708116376857993
load65556798976695828
domContentLoaded65056298175689814
domInteractive2716110212387
firstPaint22185842146218618
backgroundConnect11677101028
firstReactRender28206573344
getState261389123646
initialActions104112
loadScripts64756097374686805
setupStore1063241217
numNetworkReqs1157116562
WebpackPower User HomeuiStartup16911256229628319172204
load6946021208102722936
domContentLoaded6865951203103715928
domInteractive35181662931116
firstPaint27191957197258744
backgroundConnect1577651233235595
firstReactRender56469196174
getState19014473380186235
initialActions103012
loadScripts6835931193101712920
setupStore181056101641
numNetworkReqs80632593074150
FirefoxBrowserifyStandard HomeuiStartup13571113187716214611703
load1114940150510711841315
domContentLoaded1113940150110711841314
domInteractive64322573586117
firstPaint------
backgroundConnect56221714369164
firstReactRender241810192434
getState146186231025
initialActions103122
loadScripts108392314899911341253
setupStore1254891137
numNetworkReqs1256717662
BrowserifyPower User HomeuiStartup30112115488887338794554
load1351967257245614152480
domContentLoaded1351967257245514152480
domInteractive10834988114100315
firstPaint------
backgroundConnect2492512643513061154
firstReactRender62371822864118
getState334861205294491990
initialActions203123
loadScripts1230950250932113002159
setupStore1145117917999531
numNetworkReqs75521292074120
WebpackStandard HomeuiStartup15221293218214916171787
load12601081155310113201446
domContentLoaded12601081155310113191446
domInteractive60291833283115
firstPaint------
backgroundConnect48171452754105
firstReactRender25197262733
getState1275071226
initialActions102122
loadScripts1232106214819412901415
setupStore197249351357
numNetworkReqs1256817763
WebpackPower User HomeuiStartup33022286564986841135078
load16881132348054722782803
domContentLoaded16871132348054722772802
domInteractive132321222193102348
firstPaint------
backgroundConnect2942613243693701132
firstReactRender68363765462217
getState345701941321591876
initialActions207123
loadScripts15291116278242215452563
setupStore11561006176118523
numNetworkReqs875823435109163
📊 Page Load Benchmark Results

Current Commit: 00b19d0 | Date: 12/3/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.06s (±72ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 740ms (±69ms) 🟢 | historical mean value: 724ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 78ms (±14ms) 🟢 | historical mean value: 77ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.06s 72ms 1.02s 1.34s 1.28s 1.34s
domContentLoaded 740ms 69ms 701ms 1.01s 958ms 1.01s
firstPaint 78ms 14ms 60ms 196ms 92ms 196ms
firstContentfulPaint 78ms 14ms 60ms 196ms 92ms 196ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 58 Bytes (0%)
  • ui: 0 Bytes (0%)
  • common: 54 Bytes (0%)

@metamaskbot
Copy link
Collaborator

Builds ready [fdba65b]
UI Startup Metrics (1217 ± 94 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1217103115589412881356
load101585413148410621154
domContentLoaded101085113068310571147
domInteractive261495202184
firstPaint4518113383829361148
backgroundConnect21319624711221235
firstReactRender30205793447
getState341793134155
initialActions106112
loadScripts803653109780847944
setupStore1162941321
numNetworkReqs1157117559
BrowserifyPower User HomeuiStartup20231610290124021622527
load1026876168113110491316
domContentLoaded1014866167513010341301
domInteractive3117101203188
firstPaint59410614064019681261
backgroundConnect270201804124238539
firstReactRender5441112105866
getState19014575465202275
initialActions103112
loadScripts80167514591268191079
setupStore15104761534
numNetworkReqs81672432875147
WebpackStandard HomeuiStartup78168296461813912
load61155279556658725
domContentLoaded60754478256652721
domInteractive231485162073
firstPaint26683799180268656
backgroundConnect953241017
firstReactRender26194563237
getState251167113346
initialActions103111
loadScripts60454277555644715
setupStore1062131116
numNetworkReqs1056615552
WebpackPower User HomeuiStartup15891231234626918162090
load680577110797709888
domContentLoaded671570109297702877
domInteractive34172383229100
firstPaint30978900210376691
backgroundConnect104780519530553
firstReactRender54398295975
getState17814668554180214
initialActions103112
loadScripts668568108395700869
setupStore17946101540
numNetworkReqs82642683673157
FirefoxBrowserifyStandard HomeuiStartup14431157206217515261792
load1169982171611012291357
domContentLoaded1168982171611112291357
domInteractive75332233991150
firstPaint------
backgroundConnect62253305566170
firstReactRender25195162737
getState187159231373
initialActions103122
loadScripts113496716129611871294
setupStore197231331667
numNetworkReqs1256916761
BrowserifyPower User HomeuiStartup30851999658289039934652
load1417986466957614022674
domContentLoaded1416986466857614022674
domInteractive131322326235123323
firstPaint------
backgroundConnect3032613743924311207
firstReactRender70382823867148
getState321871967298332919
initialActions217123
loadScripts1221969359631012881528
setupStore14561054209155687
numNetworkReqs78511502376128
WebpackStandard HomeuiStartup14961227207015216051803
load1240107414499113171398
domContentLoaded1239107414499113171398
domInteractive61261713281131
firstPaint------
backgroundConnect48152253447113
firstReactRender26187392837
getState157186211350
initialActions102012
loadScripts1211106213858512871366
setupStore157226231237
numNetworkReqs1256617762
WebpackPower User HomeuiStartup32982312678997942694861
load16721141500063421742775
domContentLoaded16721140500063421732775
domInteractive163293625392122375
firstPaint------
backgroundConnect2552518743702301175
firstReactRender59371502459126
getState327721929324394897
initialActions3042626
loadScripts15231110497954915082641
setupStore13161023205109703
numNetworkReqs79611462474131
📊 Page Load Benchmark Results

Current Commit: fdba65b | Date: 12/4/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.10s (±119ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 783ms (±116ms) 🟢 | historical mean value: 729ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 77ms (±13ms) 🟢 | historical mean value: 80ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.10s 119ms 1.01s 1.37s 1.31s 1.37s
domContentLoaded 783ms 116ms 701ms 1.05s 994ms 1.05s
firstPaint 77ms 13ms 60ms 176ms 92ms 176ms
firstContentfulPaint 77ms 13ms 60ms 176ms 92ms 176ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 58 Bytes (0%)
  • ui: 0 Bytes (0%)
  • common: 54 Bytes (0%)

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

Labels

no-changelog no-changelog Indicates no external facing user changes, therefore no changelog documentation needed size-M team-extension-platform Extension Platform team

Projects

Status: Needs dev review

Development

Successfully merging this pull request may close these issues.

React Compiler: Developer features for React Compiler Webpack loader React Compiler: Enable for Webpack builds

5 participants