Skip to content

Conversation

@lionellbriones
Copy link
Contributor

@lionellbriones lionellbriones commented Jul 15, 2025

Description

This fixes firefox showing cursor for srp quiz words. Showing cursor makes user think that they can type on the text fields which are readonly on this case.

Open in GitHub Codespaces

Changelog

CHANGELOG entry: Show Confirm SRP quiz words as button

Related issues

Fixes:

Manual testing steps

  1. Install metamask on firefox
  2. Create new wallet with SRP
  3. Backup SRP
  4. Reveal SRP
  5. Confirm SRP - test how the quiz words are displayed, there should be no cursor

Screenshots/Recordings

Before

Screenshare.-.2025-07-15.2_14_33.PM.mp4

After

No cursor on Quizwords
https://github.com/user-attachments/assets/3705912b-a8f1-4769-8947-984e5ecf840d

Demo accessibility
https://github.com/user-attachments/assets/80091d04-5110-4499-84fa-bbb09fc9beb0

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.

@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-onboarding Onboarding team label Jul 15, 2025
@metamaskbot
Copy link
Collaborator

metamaskbot commented Jul 15, 2025

✨ Files requiring CODEOWNER review ✨

👨‍🔧 @MetaMask/web3auth (3 files, +74 -93)
  • 📁 ui/
    • 📁 pages/
      • 📁 onboarding-flow/
        • 📁 recovery-phrase/
          • 📁 __snapshots__/
            • 📄 recovery-phrase-chips.test.js.snap +12 -24
            • 📄 review-recovery-phrase.test.js.snap +24 -24
            • 📄 recovery-phrase-chips.js +38 -45

@metamaskbot
Copy link
Collaborator

Builds ready [120d64c]
UI Startup Metrics (1237 ± 66 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1237113615456612711345
load106196613246210951160
domContentLoaded105496213216210901148
domInteractive191375101744
firstPaint62278119642610611148
backgroundConnect2532412787257265
firstReactRender20144552130
getState1043371425
initialActions20194113
loadScripts807721107160842896
setupStore74203713
WebpackHomeuiStartup23771836296221725092865
load17611353218618618892139
domContentLoaded17541349217018418822125
domInteractive201387151764
firstPaint170601882187172324
backgroundConnect3111202213564
firstReactRender23691440117373411
getState224205332068
initialActions16220537949
loadScripts17491346215218118762112
setupStore287335542159
FirefoxBrowserifyHomeuiStartup14141190209114814811729
load1220105714839112821367
domContentLoaded1220105714839112811367
domInteractive1103845766113293
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect2614193262458
firstReactRender24195752533
getState10223529524
initialActions408110217
loadScripts1198104014569012591349
setupStore9321122626
WebpackHomeuiStartup17241399261321217622216
load14501201204915915081867
domContentLoaded14501200204915915081867
domInteractive106324777397292
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect2916253253047
firstReactRender55466955964
getState132252301126
initialActions7123425327
loadScripts14261184201815414871838
setupStore15524934851
Benchmark value 1237 exceeds gate value 1234 for chrome browserify home mean uiStartup
Benchmark value 254 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 3 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 265 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 2377 exceeds gate value 2192 for chrome webpack home mean uiStartup
Benchmark value 1761 exceeds gate value 1711 for chrome webpack home mean load
Benchmark value 1754 exceeds gate value 1704 for chrome webpack home mean domContentLoaded
Benchmark value 237 exceeds gate value 235 for chrome webpack home mean firstReactRender
Benchmark value 16 exceeds gate value 7 for chrome webpack home mean initialActions
Benchmark value 1749 exceeds gate value 1699 for chrome webpack home mean loadScripts
Benchmark value 2865 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 2139 exceeds gate value 2030 for chrome webpack home p95 load
Benchmark value 2125 exceeds gate value 2005 for chrome webpack home p95 domContentLoaded
Benchmark value 64 exceeds gate value 57 for chrome webpack home p95 domInteractive
Benchmark value 411 exceeds gate value 370 for chrome webpack home p95 firstReactRender
Benchmark value 49 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 2112 exceeds gate value 1970 for chrome webpack home p95 loadScripts
Benchmark value 1415 exceeds gate value 1405 for firefox browserify home mean uiStartup
Benchmark value 111 exceeds gate value 110 for firefox browserify home mean domInteractive
Benchmark value 27 exceeds gate value 25 for firefox browserify home mean backgroundConnect
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 1729 exceeds gate value 1660 for firefox browserify home p95 uiStartup
Benchmark value 293 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 1724 exceeds gate value 1615 for firefox webpack home mean uiStartup
Benchmark value 1451 exceeds gate value 1380 for firefox webpack home mean load
Benchmark value 1451 exceeds gate value 1380 for firefox webpack home mean domContentLoaded
Benchmark value 106 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 29 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 55 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 1427 exceeds gate value 1360 for firefox webpack home mean loadScripts
Benchmark value 15 exceeds gate value 13 for firefox webpack home mean setupStore
Benchmark value 2216 exceeds gate value 1935 for firefox webpack home p95 uiStartup
Benchmark value 1867 exceeds gate value 1660 for firefox webpack home p95 load
Benchmark value 1867 exceeds gate value 1660 for firefox webpack home p95 domContentLoaded
Benchmark value 292 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 64 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 27 exceeds gate value 2 for firefox webpack home p95 initialActions
Benchmark value 1838 exceeds gate value 1630 for firefox webpack home p95 loadScripts
Benchmark value 51 exceeds gate value 28 for firefox webpack home p95 setupStore
Sum of mean exceeds: 965ms | Sum of p95 exceeds: 2416.8ms
Sum of all benchmark exceeds: 3381.8ms

Bundle size diffs [🚀 Bundle size reduced!]
  • background: -150 Bytes (0%)
  • ui: 252 Bytes (0%)
  • common: 15 Bytes (0%)

@lionellbriones lionellbriones marked this pull request as ready for review July 17, 2025 04:32
@lionellbriones lionellbriones requested a review from a team as a code owner July 17, 2025 04:32
cursor[bot]

This comment was marked as outdated.

@metamaskbot
Copy link
Collaborator

Builds ready [8c139ae]
UI Startup Metrics (1203 ± 58 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1203109213885812341312
load103294012355710671158
domContentLoaded102693312295610611153
domInteractive18135781741
firstPaint60668123841810291085
backgroundConnect2522372757256261
firstReactRender21137982231
getState932851022
initialActions30265413
loadScripts78067097955814897
setupStore74193814
WebpackHomeuiStartup22071677266323423562619
load16531230201018517601951
domContentLoaded16471226199918417571942
domInteractive181282141555
firstPaint1466039361175256
backgroundConnect2610281272745
firstReactRender26090409120379395
getState1143351222
initialActions72357730
loadScripts16431224198718217541929
setupStore1464171732
FirefoxBrowserifyHomeuiStartup14091180191714214581711
load1224103916099512811382
domContentLoaded1224103916089512801381
domInteractive1143638667118311
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect2513182222556
firstReactRender23205442333
getState13218630654
initialActions408211320
loadScripts1202102515899012511354
setupStore939314638
WebpackHomeuiStartup17351468250220718132213
load14651232196316315561815
domContentLoaded14641232196316215561815
domInteractive107364267196298
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect2716146153050
firstReactRender56427666065
getState123215251025
initialActions11024638320
loadScripts14441214194116115361780
setupStore14428431858
Benchmark value 252 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 4 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 42 exceeds gate value 41 for chrome browserify home p95 domInteractive
Benchmark value 262 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 13 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 2208 exceeds gate value 2192 for chrome webpack home mean uiStartup
Benchmark value 260 exceeds gate value 235 for chrome webpack home mean firstReactRender
Benchmark value 8 exceeds gate value 7 for chrome webpack home mean initialActions
Benchmark value 2620 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 395 exceeds gate value 370 for chrome webpack home p95 firstReactRender
Benchmark value 30 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 115 exceeds gate value 110 for firefox browserify home mean domInteractive
Benchmark value 26 exceeds gate value 25 for firefox browserify home mean backgroundConnect
Benchmark value 13 exceeds gate value 11 for firefox browserify home mean getState
Benchmark value 5 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 1711 exceeds gate value 1660 for firefox browserify home p95 uiStartup
Benchmark value 311 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 54 exceeds gate value 24 for firefox browserify home p95 getState
Benchmark value 20 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 38 exceeds gate value 27 for firefox browserify home p95 setupStore
Benchmark value 1736 exceeds gate value 1615 for firefox webpack home mean uiStartup
Benchmark value 1465 exceeds gate value 1380 for firefox webpack home mean load
Benchmark value 1465 exceeds gate value 1380 for firefox webpack home mean domContentLoaded
Benchmark value 107 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 27 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 57 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 11 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 1445 exceeds gate value 1360 for firefox webpack home mean loadScripts
Benchmark value 14 exceeds gate value 13 for firefox webpack home mean setupStore
Benchmark value 2213 exceeds gate value 1935 for firefox webpack home p95 uiStartup
Benchmark value 1815 exceeds gate value 1660 for firefox webpack home p95 load
Benchmark value 1815 exceeds gate value 1660 for firefox webpack home p95 domContentLoaded
Benchmark value 298 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 50 exceeds gate value 49 for firefox webpack home p95 backgroundConnect
Benchmark value 65 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 20 exceeds gate value 2 for firefox webpack home p95 initialActions
Benchmark value 1780 exceeds gate value 1630 for firefox webpack home p95 loadScripts
Benchmark value 58 exceeds gate value 28 for firefox webpack home p95 setupStore
Sum of mean exceeds: 718ms | Sum of p95 exceeds: 1640.8ms
Sum of all benchmark exceeds: 2358.8ms

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

tuna1207
tuna1207 previously approved these changes Jul 18, 2025
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Bug: Recovery Phrase Display Glitches

Multiple issues affect the recovery phrase display:

  1. Box components rendered in the word list are missing the key={index} prop, which can cause React rendering issues.
  2. Quiz words appear blank during the non-confirm (review) phase instead of displaying the actual word.
  3. The TextField component for non-quiz words in the confirm phase is missing inputProps={{ tabIndex: -1 }}.
  4. The onClick handler for quiz words allows interaction (setting focus or removing words) outside of the confirm phase, which is unintended.

ui/pages/onboarding-flow/recovery-phrase/recovery-phrase-chips.js#L146-L202

const isTargetIndex = index === indexToFocus;
return isQuizWord || !confirmPhase ? (
<Box
as={isQuizWord ? 'button' : 'div'}
data-testid={`recovery-phrase-chip-${index}`}
className="recovery-phrase__text"
display={Display.Flex}
alignItems={AlignItems.center}
backgroundColor={BackgroundColor.backgroundDefault}
borderColor={
isTargetIndex
? BorderColor.primaryDefault
: BorderColor.borderMuted
}
borderWidth={isTargetIndex ? 2 : 1}
borderRadius={BorderRadius.LG}
paddingInline={2}
paddingTop={1}
paddingBottom={1}
gap={1}
onClick={() => {
if (!isQuizWord) {
return;
}
if (wordToDisplay === '') {
setIndexToFocus(index);
} else {
removeQuizWord(wordToDisplay);
}
}}
>
<Text
color={TextColor.textAlternative}
className="recovery-phrase__word-index"
>
{index + 1}.
</Text>
<Text>{isQuizWord ? wordToDisplay : word}</Text>
</Box>
) : (
<TextField
testId={`recovery-phrase-chip-${index}`}
key={index}
value={wordToDisplay}
startAccessory={
<Text
color={TextColor.textAlternative}
className="recovery-phrase__word-index"
>
{index + 1}.
</Text>
}
type="password"
disabled
readOnly
/>
);

Fix in CursorFix in Web


Was this report helpful? Give feedback by reacting with 👍 or 👎

@metamaskbot
Copy link
Collaborator

Builds ready [08250b5]
UI Startup Metrics (1266 ± 62 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1266112614146213071392
load108694612385911251189
domContentLoaded107993112326011171184
domInteractive18145681643
firstPaint62772123043810951152
backgroundConnect2132002518215234
firstReactRender22156482439
getState1034881429
initialActions40618216
loadScripts873734102759913976
setupStore74172712
WebpackHomeuiStartup24802041275713525692669
load19701534227414520542210
domContentLoaded19601528222514220432189
domInteractive2113229251660
firstPaint179661821178200303
backgroundConnect3512277413443
firstReactRender1809633067216320
getState203250421732
initialActions14219736736
loadScripts19551524221314220402187
setupStore196217281837
FirefoxBrowserifyHomeuiStartup14421296247116714711760
load1233113614567512621429
domContentLoaded1232113614557512621429
domInteractive1023547460101218
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect2814145222478
firstReactRender28205783053
getState12316426757
initialActions30315212
loadScripts1211111714397212411383
setupStore11316222750
WebpackHomeuiStartup17481511232119018492176
load14851288196515515891870
domContentLoaded14841288196515515891869
domInteractive103354707992302
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect281875123357
firstReactRender53416865665
getState102199201324
initialActions7020321621
loadScripts14611266192415215581825
setupStore174264411035
Benchmark value 1266 exceeds gate value 1234 for chrome browserify home mean uiStartup
Benchmark value 1086 exceeds gate value 1070 for chrome browserify home mean load
Benchmark value 1079 exceeds gate value 1061 for chrome browserify home mean domContentLoaded
Benchmark value 214 exceeds gate value 10 for chrome browserify home mean backgroundConnect
Benchmark value 4 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 873 exceeds gate value 830 for chrome browserify home mean loadScripts
Benchmark value 1392 exceeds gate value 1365 for chrome browserify home p95 uiStartup
Benchmark value 1185 exceeds gate value 1180 for chrome browserify home p95 domContentLoaded
Benchmark value 43 exceeds gate value 41 for chrome browserify home p95 domInteractive
Benchmark value 235 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 16 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 977 exceeds gate value 940 for chrome browserify home p95 loadScripts
Benchmark value 2481 exceeds gate value 2192 for chrome webpack home mean uiStartup
Benchmark value 1970 exceeds gate value 1711 for chrome webpack home mean load
Benchmark value 1960 exceeds gate value 1704 for chrome webpack home mean domContentLoaded
Benchmark value 22 exceeds gate value 21 for chrome webpack home mean domInteractive
Benchmark value 15 exceeds gate value 7 for chrome webpack home mean initialActions
Benchmark value 1955 exceeds gate value 1699 for chrome webpack home mean loadScripts
Benchmark value 2669 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 2210 exceeds gate value 2030 for chrome webpack home p95 load
Benchmark value 2190 exceeds gate value 2005 for chrome webpack home p95 domContentLoaded
Benchmark value 61 exceeds gate value 57 for chrome webpack home p95 domInteractive
Benchmark value 36 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 2187 exceeds gate value 1970 for chrome webpack home p95 loadScripts
Benchmark value 1442 exceeds gate value 1405 for firefox browserify home mean uiStartup
Benchmark value 28 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 12 exceeds gate value 11 for firefox browserify home mean getState
Benchmark value 4 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 12 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 1760 exceeds gate value 1660 for firefox browserify home p95 uiStartup
Benchmark value 218 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 78 exceeds gate value 70 for firefox browserify home p95 backgroundConnect
Benchmark value 57 exceeds gate value 24 for firefox browserify home p95 getState
Benchmark value 12 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 50 exceeds gate value 27 for firefox browserify home p95 setupStore
Benchmark value 1748 exceeds gate value 1615 for firefox webpack home mean uiStartup
Benchmark value 1485 exceeds gate value 1380 for firefox webpack home mean load
Benchmark value 1485 exceeds gate value 1380 for firefox webpack home mean domContentLoaded
Benchmark value 104 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 29 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 53 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 1462 exceeds gate value 1360 for firefox webpack home mean loadScripts
Benchmark value 17 exceeds gate value 13 for firefox webpack home mean setupStore
Benchmark value 2176 exceeds gate value 1935 for firefox webpack home p95 uiStartup
Benchmark value 1870 exceeds gate value 1660 for firefox webpack home p95 load
Benchmark value 1869 exceeds gate value 1660 for firefox webpack home p95 domContentLoaded
Benchmark value 302 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 57 exceeds gate value 49 for firefox webpack home p95 backgroundConnect
Benchmark value 65 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 21 exceeds gate value 2 for firefox webpack home p95 initialActions
Benchmark value 1825 exceeds gate value 1630 for firefox webpack home p95 loadScripts
Benchmark value 35 exceeds gate value 28 for firefox webpack home p95 setupStore
Sum of mean exceeds: 1912ms | Sum of p95 exceeds: 2379.8ms
Sum of all benchmark exceeds: 4291.8ms

Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 6.71 KiB (0.12%)
  • ui: 15.21 KiB (0.21%)
  • common: 63 KiB (0.74%)

@chaitanyapotti chaitanyapotti changed the title fix: use button for quiz words instead of text-field fix: use button for quiz words instead of text-field cp-13.0.0 Jul 18, 2025
@chaitanyapotti chaitanyapotti added this pull request to the merge queue Jul 18, 2025
Merged via the queue into main with commit 723a4a5 Jul 18, 2025
403 of 408 checks passed
@chaitanyapotti chaitanyapotti deleted the fix/confirm-srp-cursor-firefox branch July 18, 2025 06:34
@github-actions github-actions bot locked and limited conversation to collaborators Jul 18, 2025
@metamaskbot metamaskbot added the release-13.1.0 Issue or pull request that will be included in release 13.1.0 label Jul 18, 2025
@gauthierpetetin gauthierpetetin added release-13.0.0 Issue or pull request that will be included in release 13.0.0 (also called 12.24.0) and removed release-13.1.0 Issue or pull request that will be included in release 13.1.0 labels Aug 5, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-onboarding release-13.0.0 Issue or pull request that will be included in release 13.0.0 (also called 12.24.0) team-onboarding Onboarding team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants