-
Notifications
You must be signed in to change notification settings - Fork 5.3k
feat: file uploader #35779
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
feat: file uploader #35779
Conversation
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. |
📊 Page Load Benchmark ResultsCurrent Commit: 📄 https://metamask.github.io/test-dapp/Samples: 100 Summary
📈 Detailed Results
Results generated automatically by MetaMask CI |
Builds ready [916516d]
UI Startup Metrics (1237 ± 58 ms)
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!]
|
📊 Page Load Benchmark ResultsCurrent Commit: 📄 https://metamask.github.io/test-dapp/Samples: 100 Summary
📈 Detailed Results
Results generated automatically by MetaMask CI |
Builds ready [ff18e7e]
UI Startup Metrics (1223 ± 64 ms)
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!]
|
c0cf6f4
to
1aaa1ef
Compare
📊 Page Load Benchmark ResultsCurrent Commit: 📄 https://metamask.github.io/test-dapp/Samples: 100 Summary
📈 Detailed Results
Results generated automatically by MetaMask CI |
Builds ready [1aaa1ef]
UI Startup Metrics (1264 ± 74 ms)
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!]
|
📊 Page Load Benchmark ResultsCurrent Commit: 📄 Localhost MetaMask Test DappSamples: 100 Summary
📈 Detailed Results
Results generated automatically by MetaMask CI |
Builds ready [aa280ab]
UI Startup Metrics (1252 ± 62 ms)
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!]
|
✨ Files requiring CODEOWNER review ✨🎨 @MetaMask/design-system-engineers (7 files, +516 -0)
|
📊 Page Load Benchmark ResultsCurrent Commit: 📄 Localhost MetaMask Test DappSamples: 100 Summary
📈 Detailed Results
Results generated automatically by MetaMask CI |
Builds ready [7fdba1a]
UI Startup Metrics (1227 ± 63 ms)
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!]
|
📊 Page Load Benchmark ResultsCurrent Commit: 📄 Localhost MetaMask Test DappSamples: 100 Summary
📈 Detailed Results
Results generated automatically by MetaMask CI |
Builds ready [a728254]
UI Startup Metrics (1206 ± 72 ms)
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!]
|
📊 Page Load Benchmark ResultsCurrent Commit: 📄 Localhost MetaMask Test DappSamples: 100 Summary
📈 Detailed Results
Results generated automatically by MetaMask CI |
Builds ready [7ffe1a1]
UI Startup Metrics (1199 ± 69 ms)
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!]
|
data-testid="file-uploader-input" | ||
onChange={onFileChange} | ||
className="hidden" | ||
multiple |
There was a problem hiding this comment.
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) { |
There was a problem hiding this comment.
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
</Label> | ||
)} | ||
<Label | ||
htmlFor="file-uploader-input" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
📊 Page Load Benchmark ResultsCurrent Commit: 📄 Localhost MetaMask Test DappSamples: 100 Summary
📈 Detailed Results
Results generated automatically by MetaMask CI |
Builds ready [a5e84ee]
UI Startup Metrics (1208 ± 75 ms)
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!]
|
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
Changelog
CHANGELOG entry: Add file upload component
Related issues
Fixes:
Manual testing steps
Can be tested together with claims form
Screenshots/Recordings
Before
After
Screen.Recording.2025-09-10.at.3.00.59.PM.mov
Pre-merge author checklist
Pre-merge reviewer checklist