Skip to content

Conversation

lionellbriones
Copy link
Contributor

@lionellbriones lionellbriones commented Sep 10, 2025

Description

This is custom file upload component to be used on claims form

Note: in the future, we will convert this to a component library. We will add more support and flexibility.

Figma link: https://www.figma.com/design/HTAO1SrmixV4ppv7qIvLoa/Metamask-Shield?node-id=12480-73496&t=JIBqbBJW8HerHO46-4

Open in GitHub Codespaces

Changelog

CHANGELOG entry: Add file upload component

Related issues

Fixes:

Manual testing steps

Can be tested together with claims form

  1. N/A

Screenshots/Recordings

Before

After

Screen.Recording.2025-09-10.at.3.00.59.PM.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.

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-web3auth Web3Auth team label Sep 10, 2025
@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: 916516d | Date: 9/10/2025

📄 https://metamask.github.io/test-dapp/

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.30s (±172ms) 🟡 | historical mean value: 1.31s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 981ms (±170ms) 🟢 | historical mean value: 988ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 99ms (±130ms) 🟢 | historical mean value: 95ms ⬆️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.30s 172ms 1.25s 2.99s 1.34s 2.99s
domContentLoaded 981ms 170ms 938ms 2.66s 1.01s 2.66s
firstPaint 99ms 130ms 76ms 1.39s 112ms 1.39s
firstContentfulPaint 99ms 130ms 76ms 1.39s 112ms 1.39s
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [916516d]
UI Startup Metrics (1237 ± 58 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1237111113735812841322
load107396911865411151149
domContentLoaded106596311795511071143
domInteractive18135471740
firstPaint63677116543010771152
backgroundConnect2532392808256271
firstReactRender23167772339
getState1244061627
initialActions40224613
loadScripts82072393053861896
setupStore95354915
WebpackHomeuiStartup20651553256424722352470
load16541243196718217721890
domContentLoaded16441232194218117571880
domInteractive1912132171549
firstPaint1706332563204297
backgroundConnect3517336343466
firstReactRender99373408585315
getState4243278616283
initialActions10224029714
loadScripts16401230193118017551868
setupStore186296331631
FirefoxBrowserifyHomeuiStartup14091174187013414951644
load1219103114769512711418
domContentLoaded1218103114769512711418
domInteractive1063427549115216
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3418192243488
firstReactRender27225452834
getState838512616
initialActions5116617312
loadScripts1193101314559212511388
setupStore94508833
WebpackHomeuiStartup16011399308421817071942
load13581189170813614851629
domContentLoaded13581189170813614841628
domInteractive1116933661103298
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect462113651333948
firstReactRender43336154652
getState63243615
initialActions401391436
loadScripts13341159167813714551594
setupStore11622222920
Benchmark value 1238 exceeds gate value 1234 for chrome browserify home mean uiStartup
Benchmark value 1074 exceeds gate value 1070 for chrome browserify home mean load
Benchmark value 1066 exceeds gate value 1061 for chrome browserify home mean domContentLoaded
Benchmark value 253 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 5 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 271 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 43 exceeds gate value 29 for chrome webpack home mean getState
Benchmark value 10 exceeds gate value 7 for chrome webpack home mean initialActions
Benchmark value 2470 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 283 exceeds gate value 195 for chrome webpack home p95 getState
Benchmark value 14 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 1410 exceeds gate value 1405 for firefox browserify home mean uiStartup
Benchmark value 35 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 5 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 216 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 88 exceeds gate value 70 for firefox browserify home p95 backgroundConnect
Benchmark value 12 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 33 exceeds gate value 27 for firefox browserify home p95 setupStore
Benchmark value 112 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 47 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 4 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 1942 exceeds gate value 1935 for firefox webpack home p95 uiStartup
Benchmark value 298 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: 341ms | Sum of p95 exceeds: 585.8ms
Sum of all benchmark exceeds: 926.8ms

Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 21.05 KiB (0.47%)
  • ui: 126.9 KiB (1.66%)
  • common: 27.55 KiB (0.36%)

@github-actions github-actions bot added size-L and removed size-M labels Sep 10, 2025
@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: ff18e7e | Date: 9/10/2025

📄 https://metamask.github.io/test-dapp/

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.31s (±69ms) 🟡 | historical mean value: 1.31s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 981ms (±67ms) 🟢 | historical mean value: 988ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 90ms (±32ms) 🟢 | historical mean value: 95ms ⬇️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.31s 69ms 1.27s 1.88s 1.35s 1.88s
domContentLoaded 981ms 67ms 950ms 1.54s 1.01s 1.54s
firstPaint 90ms 32ms 72ms 344ms 116ms 344ms
firstContentfulPaint 90ms 32ms 72ms 344ms 116ms 344ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [ff18e7e]
UI Startup Metrics (1223 ± 64 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1223110213776412621333
load106395812076111091175
domContentLoaded105695112016111011165
domInteractive181476101745
firstPaint65774120844010761167
backgroundConnect2502342747254265
firstReactRender24174762635
getState1456181630
initialActions50467621
loadScripts81269196162859924
setupStore952631115
WebpackHomeuiStartup19991411254526821992464
load16001124206119717301894
domContentLoaded15801110205520317211872
domInteractive1812122151442
firstPaint1706548166188313
backgroundConnect4416417693383
firstReactRender92363328082315
getState3553237615270
initialActions13228942721
loadScripts15751108204420117161860
setupStore186296391424
FirefoxBrowserifyHomeuiStartup14111189190811414691614
load1224103114658112781376
domContentLoaded1224103114658112781376
domInteractive1093440558110233
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect38182122935106
firstReactRender27234753040
getState727810621
initialActions41547313
loadScripts1195101314428212541353
setupStore1049212827
WebpackHomeuiStartup15991393216315917051933
load13641175184714014891632
domContentLoaded13631175184714014881632
domInteractive1115933863105310
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect33205783945
firstReactRender45377664758
getState63233710
initialActions511371439
loadScripts13391148182514014591602
setupStore10516916914
Benchmark value 251 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 24 exceeds gate value 23 for chrome browserify home mean firstReactRender
Benchmark value 6 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 45 exceeds gate value 41 for chrome browserify home p95 domInteractive
Benchmark value 266 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 21 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 44 exceeds gate value 40 for chrome webpack home mean backgroundConnect
Benchmark value 36 exceeds gate value 29 for chrome webpack home mean getState
Benchmark value 13 exceeds gate value 7 for chrome webpack home mean initialActions
Benchmark value 2464 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 270 exceeds gate value 195 for chrome webpack home p95 getState
Benchmark value 21 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 1412 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 28 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 4 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 233 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 106 exceeds gate value 70 for firefox browserify home p95 backgroundConnect
Benchmark value 13 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 46 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 5 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 310 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 58 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 9 exceeds gate value 2 for firefox webpack home p95 initialActions
Sum of mean exceeds: 322ms | Sum of p95 exceeds: 624.8ms
Sum of all benchmark exceeds: 946.8ms

Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 21.05 KiB (0.47%)
  • ui: 126.9 KiB (1.66%)
  • common: 27.55 KiB (0.36%)

@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: 1aaa1ef | Date: 9/10/2025

📄 https://metamask.github.io/test-dapp/

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.31s (±66ms) 🟡 | historical mean value: 1.31s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 986ms (±63ms) 🟢 | historical mean value: 988ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 96ms (±34ms) 🟢 | historical mean value: 95ms ⬆️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.31s 66ms 1.27s 1.83s 1.41s 1.83s
domContentLoaded 986ms 63ms 949ms 1.50s 1.08s 1.50s
firstPaint 96ms 34ms 72ms 232ms 180ms 232ms
firstContentfulPaint 96ms 34ms 72ms 232ms 180ms 232ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [1aaa1ef]
UI Startup Metrics (1264 ± 74 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1264109714807413161384
load109392712427411521204
domContentLoaded108391912357711451199
domInteractive18144461733
firstPaint71373124243711191189
backgroundConnect25824137018261289
firstReactRender2616126142544
getState1353261725
initialActions40184615
loadScripts83668099175898946
setupStore1168691123
WebpackHomeuiStartup20391410253826122042510
load16351125196219717531897
domContentLoaded16261116193619617441882
domInteractive1912162201454
firstPaint1666737963195315
backgroundConnect291868113159
firstReactRender92373277785313
getState3843068115279
initialActions9217624614
loadScripts16221110192419517411879
setupStore156317311420
FirefoxBrowserifyHomeuiStartup14111197190113014821686
load1220105216349412821385
domContentLoaded1220105216349412821385
domInteractive1043226147113231
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3620231283399
firstReactRender27225542836
getState62263612
initialActions3045539
loadScripts1192103416139212561358
setupStore1047111831
WebpackHomeuiStartup15311372187013016131818
load13111173161111214001532
domContentLoaded13101173161111214001531
domInteractive1053429153103276
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect30214463540
firstReactRender42345844449
getState5325369
initialActions3113236
loadScripts12881151158511213781504
setupStore10514614921
Benchmark value 1265 exceeds gate value 1234 for chrome browserify home mean uiStartup
Benchmark value 1094 exceeds gate value 1070 for chrome browserify home mean load
Benchmark value 1084 exceeds gate value 1061 for chrome browserify home mean domContentLoaded
Benchmark value 258 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 5 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 836 exceeds gate value 830 for chrome browserify home mean loadScripts
Benchmark value 1384 exceeds gate value 1365 for chrome browserify home p95 uiStartup
Benchmark value 1204 exceeds gate value 1190 for chrome browserify home p95 load
Benchmark value 1199 exceeds gate value 1180 for chrome browserify home p95 domContentLoaded
Benchmark value 1189 exceeds gate value 1180 for chrome browserify home p95 firstPaint
Benchmark value 289 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 15 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 946 exceeds gate value 940 for chrome browserify home p95 loadScripts
Benchmark value 23 exceeds gate value 17 for chrome browserify home p95 setupStore
Benchmark value 39 exceeds gate value 29 for chrome webpack home mean getState
Benchmark value 9 exceeds gate value 7 for chrome webpack home mean initialActions
Benchmark value 2511 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 279 exceeds gate value 195 for chrome webpack home p95 getState
Benchmark value 14 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 1411 exceeds gate value 1405 for firefox browserify home mean uiStartup
Benchmark value 36 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 4 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 1686 exceeds gate value 1660 for firefox browserify home p95 uiStartup
Benchmark value 231 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 99 exceeds gate value 70 for firefox browserify home p95 backgroundConnect
Benchmark value 9 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 31 exceeds gate value 27 for firefox browserify home p95 setupStore
Benchmark value 105 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 30 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 42 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 276 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 6 exceeds gate value 2 for firefox webpack home p95 initialActions
Sum of mean exceeds: 390ms | Sum of p95 exceeds: 731.8ms
Sum of all benchmark exceeds: 1121.8ms

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

@lionellbriones lionellbriones marked this pull request as ready for review September 10, 2025 10:09
@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: aa280ab | Date: 9/18/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±73ms) 🟡 | historical mean value: 1.05s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 734ms (±69ms) 🟢 | historical mean value: 738ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 76ms (±11ms) 🟢 | historical mean value: 78ms ⬇️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 73ms 1.01s 1.32s 1.30s 1.32s
domContentLoaded 734ms 69ms 701ms 998ms 951ms 998ms
firstPaint 76ms 11ms 60ms 168ms 92ms 168ms
firstContentfulPaint 76ms 11ms 60ms 168ms 92ms 168ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [aa280ab]
UI Startup Metrics (1252 ± 62 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1252114714706212761352
load108397812545611121198
domContentLoaded107697212375411041184
domInteractive18144671739
firstPaint67188124944010891181
backgroundConnect2562402868261269
firstReactRender25185672740
getState1666491931
initialActions40244513
loadScripts82772598854854936
setupStore1062231118
WebpackHomeuiStartup1103913145610411561299
load9137491240949691057
domContentLoaded9077461235939651048
domInteractive16125391445
firstPaint1606342663183281
backgroundConnect181173111844
firstReactRender37328163643
getState842341114
initialActions622451015
loadScripts9047441232929621045
setupStore96182912
FirefoxBrowserifyHomeuiStartup14161264196210714781611
load1231108016808412891360
domContentLoaded1230108016798412881360
domInteractive1083441962110242
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3619133213783
firstReactRender28235342938
getState63608614
initialActions4166938
loadScripts1203106216558512611331
setupStore85425816
WebpackHomeuiStartup15161347211115015821924
load13001152168912313801565
domContentLoaded13001152168912313791565
domInteractive100323555895261
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect30204563539
firstReactRender42356754451
getState62283610
initialActions2124335
loadScripts12781128166612413611544
setupStore105849920
Benchmark value 1252 exceeds gate value 1234 for chrome browserify home mean uiStartup
Benchmark value 1084 exceeds gate value 1070 for chrome browserify home mean load
Benchmark value 1076 exceeds gate value 1061 for chrome browserify home mean domContentLoaded
Benchmark value 257 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 26 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 5 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 1198 exceeds gate value 1190 for chrome browserify home p95 load
Benchmark value 1185 exceeds gate value 1180 for chrome browserify home p95 domContentLoaded
Benchmark value 1181 exceeds gate value 1180 for chrome browserify home p95 firstPaint
Benchmark value 270 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 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 1417 exceeds gate value 1405 for firefox browserify home mean uiStartup
Benchmark value 37 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 242 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 83 exceeds gate value 70 for firefox browserify home p95 backgroundConnect
Benchmark value 8 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 101 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 31 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 42 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 261 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 5 exceeds gate value 2 for firefox webpack home p95 initialActions
Sum of mean exceeds: 345ms | Sum of p95 exceeds: 461.8ms
Sum of all benchmark exceeds: 806.8ms

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

cursor[bot]

This comment was marked as outdated.

@lionellbriones lionellbriones requested a review from a team as a code owner September 23, 2025 06:53
@metamaskbot
Copy link
Collaborator

metamaskbot commented Sep 23, 2025

✨ Files requiring CODEOWNER review ✨

🎨 @MetaMask/design-system-engineers (7 files, +516 -0)
  • 📁 ui/
    • 📁 components/
      • 📁 component-library/
        • 📁 components-temp/
          • 📁 file-uploader/
            • 📄 file-uploader.scss +11 -0
            • 📄 file-uploader.stories.tsx +13 -0
            • 📄 file-uploader.test.tsx +113 -0
            • 📄 file-uploader.tsx +271 -0
            • 📄 file-uploader.types.ts +104 -0
            • 📄 index.ts +1 -0
          • 📄 component-library-components.scss +3 -0

cursor[bot]

This comment was marked as outdated.

@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: 7fdba1a | Date: 9/23/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±71ms) 🟡 | historical mean value: 1.05s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 730ms (±68ms) 🟢 | historical mean value: 739ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 77ms (±13ms) 🟢 | historical mean value: 79ms ⬇️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 71ms 1.00s 1.32s 1.25s 1.32s
domContentLoaded 730ms 68ms 697ms 997ms 936ms 997ms
firstPaint 77ms 13ms 64ms 200ms 84ms 200ms
firstContentfulPaint 77ms 13ms 64ms 200ms 84ms 200ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [7fdba1a]
UI Startup Metrics (1227 ± 63 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1227111814116312721340
load105495912515910881156
domContentLoaded104795212415810801149
domInteractive19145481740
firstPaint61989124642910721143
backgroundConnect2152032467217227
firstReactRender25195262838
getState14588111731
initialActions50435714
loadScripts838728103158873939
setupStore1052531017
WebpackHomeuiStartup1130908132010812151269
load947744113510810251080
domContentLoaded942740113010810211076
domInteractive15124571433
firstPaint1556339660178278
backgroundConnect16103361729
firstReactRender37339893544
getState73173812
initialActions52183811
loadScripts939738112810810191070
setupStore86192913
FirefoxBrowserifyHomeuiStartup14201197204512814731659
load1233104715098312821367
domContentLoaded1233104715098312821367
domInteractive1093333658115257
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3319120163465
firstReactRender28235353041
getState8314517611
initialActions7019527317
loadScripts1208102814427912611332
setupStore95549827
WebpackHomeuiStartup15531374198914616491849
load13241166174712714151574
domContentLoaded13241166174712714151574
domInteractive1063038069100293
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect30195573540
firstReactRender45335444751
getState7216616610
initialActions511411539
loadScripts13021129172212813961554
setupStore95304920
Benchmark value 216 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 26 exceeds gate value 23 for chrome browserify home mean firstReactRender
Benchmark value 6 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 839 exceeds gate value 830 for chrome browserify home mean loadScripts
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 11 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 1420 exceeds gate value 1405 for firefox browserify home mean uiStartup
Benchmark value 33 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 8 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 257 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 17 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 30 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 45 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 5 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 293 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 9 exceeds gate value 2 for firefox webpack home p95 initialActions
Sum of mean exceeds: 280ms | Sum of p95 exceeds: 447.8ms
Sum of all benchmark exceeds: 727.8ms

Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 58 Bytes (0%)
  • ui: 5.79 KiB (0.08%)
  • common: 222 Bytes (0%)

cursor[bot]

This comment was marked as outdated.

@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: a728254 | Date: 9/23/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±71ms) 🟡 | historical mean value: 1.05s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 734ms (±69ms) 🟢 | historical mean value: 739ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 77ms (±12ms) 🟢 | historical mean value: 79ms ⬇️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 71ms 1.01s 1.32s 1.27s 1.32s
domContentLoaded 734ms 69ms 699ms 999ms 949ms 999ms
firstPaint 77ms 12ms 56ms 168ms 92ms 168ms
firstContentfulPaint 77ms 12ms 56ms 168ms 92ms 168ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [a728254]
UI Startup Metrics (1206 ± 72 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1206108814997212351332
load103691512726610691162
domContentLoaded102890112646810611155
domInteractive19145381744
firstPaint61687127142410331173
backgroundConnect21720530814217230
firstReactRender25175162537
getState145113141628
initialActions616910521
loadScripts819691105568855950
setupStore96223915
WebpackHomeuiStartup1166924133711212491310
load983763113510510651101
domContentLoaded978759113010610591096
domInteractive16124581439
firstPaint164651003105185328
backgroundConnect16114061629
firstReactRender36325733640
getState74173713
initialActions52214814
loadScripts975757112810610571093
setupStore85222912
FirefoxBrowserifyHomeuiStartup13581183184211614171586
load1176104114387712341305
domContentLoaded1176104014387712341305
domInteractive993230553103235
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect29198393242
firstReactRender29229293040
getState739211618
initialActions31153310
loadScripts1155102414087512151283
setupStore1058911835
WebpackHomeuiStartup16401371213216117471876
load13951175167313215171597
domContentLoaded13941175167213115161597
domInteractive1143533360110285
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect32225273845
firstReactRender47376155156
getState63172711
initialActions712032536
loadScripts13711157164613314931576
setupStore116171171017
Benchmark value 217 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 6 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 44 exceeds gate value 41 for chrome browserify home p95 domInteractive
Benchmark value 230 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 21 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 951 exceeds gate value 940 for chrome browserify home p95 loadScripts
Benchmark value 14 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 29 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 235 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 10 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 35 exceeds gate value 27 for firefox browserify home p95 setupStore
Benchmark value 1640 exceeds gate value 1615 for firefox webpack home mean uiStartup
Benchmark value 1395 exceeds gate value 1380 for firefox webpack home mean load
Benchmark value 1395 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 33 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 48 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 7 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 1371 exceeds gate value 1360 for firefox webpack home mean loadScripts
Benchmark value 285 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 56 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: 328ms | Sum of p95 exceeds: 447.8ms
Sum of all benchmark exceeds: 775.8ms

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

cursor[bot]

This comment was marked as outdated.

@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: 7ffe1a1 | Date: 9/23/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±71ms) 🟡 | historical mean value: 1.06s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 730ms (±68ms) 🟢 | historical mean value: 740ms ⬇️ (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 71ms 1.00s 1.32s 1.28s 1.32s
domContentLoaded 730ms 68ms 694ms 994ms 951ms 994ms
firstPaint 77ms 13ms 60ms 192ms 88ms 192ms
firstContentfulPaint 77ms 13ms 60ms 192ms 88ms 192ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [7ffe1a1]
UI Startup Metrics (1199 ± 69 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1199105714796912251307
load103089613166710601129
domContentLoaded102488913076710511123
domInteractive17134671638
firstPaint57487113140310281095
backgroundConnect2121972376215224
firstReactRender25164872841
getState15594131734
initialActions50647511
loadScripts818692109164846909
setupStore963441016
WebpackHomeuiStartup1140898145910912151275
load961741117710010241081
domContentLoaded956739117310010201078
domInteractive16124881340
firstPaint1576539661192263
backgroundConnect15103861429
firstReactRender35324733542
getState63163611
initialActions62245814
loadScripts953737116210010171076
setupStore86192913
FirefoxBrowserifyHomeuiStartup14261217188710114781611
load1240107114407712901385
domContentLoaded1240107114397712891385
domInteractive1033631450112241
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect37202122835110
firstReactRender28244952940
getState52172611
initialActions5018919310
loadScripts1210105414097612611352
setupStore105527926
WebpackHomeuiStartup16371400215817717831950
load13911189180215215071633
domContentLoaded13911188180215215061633
domInteractive1153335268109315
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect34215673946
firstReactRender48396555158
getState8315816713
initialActions512082139
loadScripts13661171177315214801612
setupStore126176191023
Benchmark value 212 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 26 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 225 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 34 exceeds gate value 33 for chrome browserify home p95 getState
Benchmark value 11 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 14 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 1427 exceeds gate value 1405 for firefox browserify home mean uiStartup
Benchmark value 1240 exceeds gate value 1239 for firefox browserify home mean domContentLoaded
Benchmark value 37 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 241 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 110 exceeds gate value 70 for firefox browserify home p95 backgroundConnect
Benchmark value 10 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 1637 exceeds gate value 1615 for firefox webpack home mean uiStartup
Benchmark value 1391 exceeds gate value 1380 for firefox webpack home mean load
Benchmark value 1391 exceeds gate value 1380 for firefox webpack home mean domContentLoaded
Benchmark value 115 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 48 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 1366 exceeds gate value 1360 for firefox webpack home mean loadScripts
Benchmark value 1950 exceeds gate value 1935 for firefox webpack home p95 uiStartup
Benchmark value 315 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 58 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 9 exceeds gate value 2 for firefox webpack home p95 initialActions
Sum of mean exceeds: 342ms | Sum of p95 exceeds: 507.8ms
Sum of all benchmark exceeds: 849.8ms

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

data-testid="file-uploader-input"
onChange={onFileChange}
className="hidden"
multiple
Copy link
Member

Choose a reason for hiding this comment

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

multiple and other props should be able to be overriden by implementer. expose a variable to override similar to {...helpTextProps}

}

// Check file size if maxFileSize is specified (in kilobytes)
if (maxFileSize && file.size > maxFileSize * 1024 * 1024) {
Copy link
Member

Choose a reason for hiding this comment

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

file size should always be specified in bytes

- allow changing props on dropArea
cursor[bot]

This comment was marked as outdated.

</Label>
)}
<Label
htmlFor="file-uploader-input"
Copy link

Choose a reason for hiding this comment

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

Bug: Label-Input Mismatch Causes Accessibility Issues

The main Label's htmlFor attribute uses the component's id prop, but the FileInput has a hardcoded id='file-uploader-input'. This mismatch means clicking the label won't activate the input, impacting accessibility and user experience.

Fix in Cursor Fix in Web

@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: a5e84ee | Date: 9/23/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.07s (±74ms) 🟡 | historical mean value: 1.06s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 753ms (±72ms) 🟢 | historical mean value: 740ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 80ms (±15ms) 🟢 | historical mean value: 78ms ⬆️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.07s 74ms 1.04s 1.38s 1.29s 1.38s
domContentLoaded 753ms 72ms 716ms 1.05s 958ms 1.05s
firstPaint 80ms 15ms 60ms 196ms 92ms 196ms
firstContentfulPaint 80ms 15ms 60ms 196ms 92ms 196ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [a5e84ee]
UI Startup Metrics (1208 ± 75 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1208106815177512511308
load104192412706410861137
domContentLoaded103491612616410791129
domInteractive17134061737
firstPaint72387126841310631142
backgroundConnect2142022346216224
firstReactRender26184962740
getState1354371530
initialActions50425613
loadScripts827710104961866924
setupStore1062441119
WebpackHomeuiStartup1158919139011312361302
load975758114010610451105
domContentLoaded970754113710610421100
domInteractive16124991343
firstPaint160611022108181275
backgroundConnect1693561731
firstReactRender36334633644
getState63243612
initialActions62254813
loadScripts967752113510510381098
setupStore86192913
FirefoxBrowserifyHomeuiStartup13951222183411314451608
load1208107615468612751336
domContentLoaded1207107615468612751336
domInteractive1033147762106234
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3119153183358
firstReactRender30236473141
getState62798612
initialActions40669314
loadScripts1183106015208312521301
setupStore1058611835
WebpackHomeuiStartup15501369190814016371825
load13151149162911614001561
domContentLoaded13151149162811614001560
domInteractive100333175798282
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect32208483643
firstReactRender45376054854
getState7314914613
initialActions7119025311
loadScripts12921131161011713701542
setupStore106778923
Benchmark value 214 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 26 exceeds gate value 23 for chrome browserify home mean firstReactRender
Benchmark value 6 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 225 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 19 exceeds gate value 17 for chrome browserify home p95 setupStore
Benchmark value 13 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 30 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 10 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 234 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 14 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 35 exceeds gate value 27 for firefox browserify home p95 setupStore
Benchmark value 32 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 46 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 8 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 282 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 54 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 11 exceeds gate value 2 for firefox webpack home p95 initialActions
Sum of mean exceeds: 250ms | Sum of p95 exceeds: 424.8ms
Sum of all benchmark exceeds: 674.8ms

Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 2.01 KiB (0.04%)
  • ui: 10.3 KiB (0.15%)
  • common: 2 KiB (0.03%)

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

Successfully merging this pull request may close these issues.

3 participants