Skip to content

Conversation

@OGPoyraz
Copy link
Member

@OGPoyraz OGPoyraz commented Oct 22, 2025

Description

Open in GitHub Codespaces

Changelog

CHANGELOG entry: Fix showing ENS recipient if it's typed in the send flow

Related issues

Fixes: #36966

Manual testing steps

  1. Go to send flow
  2. Pick ENS recipient
  3. Proceed into confirmation - you should be able to see ENS in the confirmation now

Screenshots/Recordings

Before

After

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

On EVM sends, dispatch a domain reverse lookup to populate store for ENS display in confirmation; lookupDomainName now accepts an explicit chainId and tests updated accordingly.

  • Hooks (send confirmations):
    • In useNameValidation, after a successful name resolution, dispatch lookupDomainName(to, chainId) when useSendType().isEvmSendType is true to populate store for ENS display.
    • Add useDispatch and useSendType usage; update hook dependencies.
  • State (domains duck):
    • Update lookupDomainName(domainName, chainId) to accept optional chainId, defaulting to getCurrentChainId(state); compute chainIdInt from the final value.
  • Tests:
    • Mock useDispatch, lookupDomainName, and useSendType in useNameValidation.test.ts.
    • Add test asserting lookupDomainName is called with ('test.eth', chainId) on EVM send after resolution.

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

@OGPoyraz OGPoyraz requested a review from a team as a code owner October 22, 2025 09:21
@metamaskbot metamaskbot added the team-confirmations Push issues to confirmations team label Oct 22, 2025
cursor[bot]

This comment was marked as outdated.

@metamaskbot
Copy link
Collaborator

✨ Files requiring CODEOWNER review ✨

@MetaMask/confirmations (2 files, +72 -1)
  • 📁 ui/
    • 📁 pages/
      • 📁 confirmations/
        • 📁 hooks/
          • 📁 send/
            • 📄 useNameValidation.test.ts +60 -0
            • 📄 useNameValidation.ts +12 -1

@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: 10ea528 | Date: 10/22/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: 738ms (±70ms) 🟢 | historical mean value: 739ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 78ms (±15ms) 🟢 | historical mean value: 77ms ⬆️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 73ms 1.01s 1.34s 1.27s 1.34s
domContentLoaded 738ms 70ms 698ms 1.01s 953ms 1.01s
firstPaint 78ms 15ms 60ms 212ms 88ms 212ms
firstContentfulPaint 78ms 15ms 60ms 212ms 88ms 212ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [10ea528]
UI Startup Metrics (1241 ± 82 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1241107514448212911394
load106192812837811171202
domContentLoaded105492312777711091195
domInteractive19136081944
firstPaint59371120642810651149
backgroundConnect2111972245214220
firstReactRender27195273143
getState19882102139
initialActions50456613
loadScripts850723107676906981
setupStore1052631015
BrowserifyPower User HomeuiStartup25151944384656529343846
load1189939178122313931781
domContentLoaded1177931177022313851770
domInteractive321676205476
firstPaint874268181947812031819
backgroundConnect37121315653672671565
firstReactRender23202822528
getState22618431335252313
initialActions63365415930654
loadScripts948725151420711491514
setupStore1263261132
WebpackStandard HomeuiStartup8537211356968631055
load639583113487639849
domContentLoaded631577112787631841
domInteractive161198121443
firstPaint205591131225167809
backgroundConnect23124162735
firstReactRender271764103251
getState1162841416
initialActions3014247
loadScripts628575111484629830
setupStore1052841218
WebpackPower User HomeuiStartup14731214212527717172125
load69760310031227121003
domContentLoaded672589943108689943
domInteractive201360122360
firstPaint49512910042996941004
backgroundConnect732120870177208
firstReactRender21192312223
getState17514219311178193
initialActions7041101041
loadScripts667587929105676929
setupStore1663292432
FirefoxBrowserifyStandard HomeuiStartup15591341209111216061771
load1317114715588413701482
domContentLoaded1317114715588413691481
domInteractive1243836958132288
firstPaint------
backgroundConnect4324136154865
firstReactRender29225882849
getState10410315921
initialActions52628418
loadScripts1289112715358213421451
setupStore1475071433
BrowserifyPower User HomeuiStartup27202263339633429313396
load14441244179416316061794
domContentLoaded14431244179316316051793
domInteractive18657728154241728
firstPaint------
backgroundConnect18043463145376463
firstReactRender412681154681
getState1467721038178210
initialActions61215921
loadScripts13851139177016415121770
setupStore3862074641207
WebpackStandard HomeuiStartup16861521217412117451943
load1446126617489814971668
domContentLoaded1445126517489814971667
domInteractive1153345172120259
firstPaint------
backgroundConnect4724116185181
firstReactRender29228592946
getState134151201160
initialActions41577314
loadScripts1415124617169414671610
setupStore157142161437
WebpackPower User HomeuiStartup29742424367732432623677
load17141422197217418781972
domContentLoaded17141422197217418771972
domInteractive19372433114263433
firstPaint------
backgroundConnect17837607158311607
firstReactRender48316585265
getState1968336675236366
initialActions19347153347
loadScripts16601372193917217871939
setupStore37883235983
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 123.19 KiB (2.73%)
  • ui: 40.11 KiB (0.62%)
  • common: 287.53 KiB (3.42%)

const chainIdInt = parseInt(finalChainId, 16);
const resolutions = await fetchResolutions({
domain: trimmedDomainName,
chainId: `eip155:${chainIdInt}`,
Copy link
Contributor

Choose a reason for hiding this comment

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

We are avoiding use of redux in redesigned confirmations, we should try to avoid it here also.

Copy link
Member Author

@OGPoyraz OGPoyraz Oct 22, 2025

Choose a reason for hiding this comment

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

This is already in use unfortunately and it's not redesigned confirmation but Name component.

There is no other fix in order to show reverse lookup ENS domain in the Name component unless we always want Name component to resolve name resolutions by default but that is not the case.

@jpuri
Copy link
Contributor

jpuri commented Oct 22, 2025

If user is using a different snap in name resolution for ens, above fix will not work.

@OGPoyraz
Copy link
Member Author

@jpuri default ENS snap is not removable and the matcher we have it on Name component will always get the first pick as it's using find to match here: https://github.com/MetaMask/metamask-extension/blob/main/ui/hooks/useDisplayName.ts#L212

If you still think that the fix wont work - can you provide a recording with repro steps? Thanks in advance.

@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: 5771055 | Date: 10/22/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±72ms) 🟡 | historical mean value: 1.06s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 732ms (±68ms) 🟢 | historical mean value: 740ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 77ms (±14ms) 🟢 | historical mean value: 77ms ⬇️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 72ms 1.01s 1.33s 1.25s 1.33s
domContentLoaded 732ms 68ms 696ms 1.00s 934ms 1.00s
firstPaint 77ms 14ms 60ms 204ms 84ms 204ms
firstContentfulPaint 77ms 14ms 60ms 204ms 84ms 204ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [5771055]
UI Startup Metrics (1232 ± 88 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1232106214738812961388
load105692613078611181210
domContentLoaded105192213018511131202
domInteractive19135591744
firstPaint56772130743810511216
backgroundConnect2102002406211218
firstReactRender25194752739
getState15696111834
initialActions719813615
loadScripts846720109685909999
setupStore1062531016
BrowserifyPower User HomeuiStartup22681852349756724473497
load1164932179631316041796
domContentLoaded1151925176930515901769
domInteractive44152425757242
firstPaint69788180459711731804
backgroundConnect24221031736269317
firstReactRender23212722427
getState22815842172232421
initialActions925012950
loadScripts920719148227612951482
setupStore1673282532
WebpackStandard HomeuiStartup80368897060822928
load60055380761606745
domContentLoaded59254079961598738
domInteractive15114671334
firstPaint20851809208176693
backgroundConnect23126582734
firstReactRender26165993138
getState942341115
initialActions3011247
loadScripts58953879159595735
setupStore961931113
WebpackPower User HomeuiStartup17741308283251024202832
load74362011871919401187
domContentLoaded70760810311488991031
domInteractive201346113746
firstPaint3626210403749021040
backgroundConnect12215530158301530
firstReactRender21182822228
getState17812826731178267
initialActions818420584
loadScripts70260610201448861020
setupStore17787201987
FirefoxBrowserifyStandard HomeuiStartup14611214190010015071623
load1245105314197312961383
domContentLoaded1245105314197312961382
domInteractive1173537556122261
firstPaint------
backgroundConnect3622121144360
firstReactRender25214342535
getState114189191121
initialActions6119820411
loadScripts1220103413977212701352
setupStore13598131133
BrowserifyPower User HomeuiStartup27612355351835229573518
load14711239167714516101677
domContentLoaded14711239167714516101677
domInteractive1594835182243351
firstPaint------
backgroundConnect21738705193390705
firstReactRender392573134373
getState1508522943180229
initialActions922581925
loadScripts14031208157312815211573
setupStore33690266090
WebpackStandard HomeuiStartup16271396223713716761852
load1392121416729814661570
domContentLoaded1392121316729814651569
domInteractive1123140978114372
firstPaint------
backgroundConnect4423135234599
firstReactRender3223134153554
getState1035981119
initialActions616711412
loadScripts1363119316039514351540
setupStore176145221176
WebpackPower User HomeuiStartup29512445378638932493786
load17001390222923918252229
domContentLoaded16991390222923918242229
domInteractive18173394107306394
firstPaint------
backgroundConnect19033710200295710
firstReactRender37275894558
getState1567922547214225
initialActions712871228
loadScripts16371345211722317892117
setupStore3562064940206
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 58 Bytes (0%)
  • ui: 257 Bytes (0%)
  • common: 15 Bytes (0%)

@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: d9502f6 | Date: 10/24/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±71ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 725ms (±69ms) 🟢 | historical mean value: 728ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 74ms (±11ms) 🟢 | historical mean value: 77ms ⬇️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 71ms 994ms 1.31s 1.27s 1.31s
domContentLoaded 725ms 69ms 688ms 997ms 965ms 997ms
firstPaint 74ms 11ms 56ms 160ms 84ms 160ms
firstContentfulPaint 74ms 11ms 56ms 160ms 84ms 160ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [d9502f6]
UI Startup Metrics (1266 ± 93 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1266112615319313111463
load108795313589011351282
domContentLoaded108194913519011291274
domInteractive20146091845
firstPaint65276135745310981227
backgroundConnect2312182517236244
firstReactRender281999113251
getState1987082134
initialActions51376719
loadScripts8557211136899001036
setupStore1063641117
BrowserifyPower User HomeuiStartup22971842400858128164008
load1179971184331216381843
domContentLoaded1173961183831216341838
domInteractive291762165162
firstPaint52617617394509811739
backgroundConnect277225719116276719
firstReactRender23202822528
getState21315137547224375
initialActions923610736
loadScripts925733146128313701461
setupStore14744101244
WebpackStandard HomeuiStartup86472613051018741140
load6585861079102652922
domContentLoaded6505781074100643913
domInteractive15115281438
firstPaint18959916190173629
backgroundConnect23125182637
firstReactRender261797113235
getState1162231418
initialActions31173513
loadScripts647576106398641902
setupStore951631114
WebpackPower User HomeuiStartup17551292255136718732551
load79962915882948781588
domContentLoaded75661113522368581352
domInteractive211352123352
firstPaint4926113133646981313
backgroundConnect12420475148231475
firstReactRender22202622226
getState1613818939180189
initialActions40225422
loadScripts75160913412328471341
setupStore1262871228
FirefoxBrowserifyStandard HomeuiStartup15381364202011715821760
load1304116316338413431454
domContentLoaded1304116316338413431452
domInteractive1173534649131229
firstPaint------
backgroundConnect51273614054128
firstReactRender27216272748
getState74183913
initialActions3112247
loadScripts1273114115297713151432
setupStore1276671318
BrowserifyPower User HomeuiStartup27022275344133929513441
load14071217160712115281607
domContentLoaded14071216160712115281607
domInteractive17941443103253443
firstPaint------
backgroundConnect20028736202404736
firstReactRender342584143484
getState1427918122156181
initialActions10164191164
loadScripts13631197154711114921547
setupStore23593223393
WebpackStandard HomeuiStartup16941471217112817242015
load1450122617399814851679
domContentLoaded1450122517399814851679
domInteractive1203340677115377
firstPaint------
backgroundConnect49241322156105
firstReactRender312477103152
getState1047091028
initialActions5168848
loadScripts1419120617039614531638
setupStore156148161520
WebpackPower User HomeuiStartup28712472383440532983834
load15951412202016917722020
domContentLoaded15951412202016917712020
domInteractive1324224052183240
firstPaint------
backgroundConnect21037837228276837
firstReactRender43286294862
getState1508924438177244
initialActions611641016
loadScripts15491373191315817301913
setupStore2951032641103
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 58 Bytes (0%)
  • ui: 257 Bytes (0%)
  • common: 15 Bytes (0%)

jpuri
jpuri previously approved these changes Oct 27, 2025
Copy link
Contributor

@jpuri jpuri left a comment

Choose a reason for hiding this comment

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

We need to re-think the approach as it will not resolve name from different resolver snaps.

@OGPoyraz
Copy link
Member Author

Fixed conflict

cursor[bot]

This comment was marked as outdated.

@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: b9ed520 | Date: 10/31/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 964ms (±48ms) 🟢 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 673ms (±61ms) 🟢 | historical mean value: 725ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 84ms (±120ms) 🟢 | historical mean value: 76ms ⬆️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 964ms 48ms 933ms 1.31s 981ms 1.31s
domContentLoaded 673ms 61ms 646ms 1.21s 688ms 1.21s
firstPaint 84ms 120ms 60ms 1.27s 80ms 1.27s
firstContentfulPaint 84ms 120ms 60ms 1.27s 80ms 1.27s
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [b9ed520]
UI Startup Metrics (1266 ± 100 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup12661085182710013211398
load108592916249511421217
domContentLoaded107892516049411361208
domInteractive19145591750
firstPaint63985163543510791183
backgroundConnect2272102759230244
firstReactRender28205973044
getState1983972334
initialActions61688620
loadScripts858708137493918989
setupStore1062631119
numNetworkReqs96327630
BrowserifyPower User HomeuiStartup22481825396566829483965
load1186935224139015602241
domContentLoaded1176928223038415512230
domInteractive291580194480
firstPaint58417317374439821737
backgroundConnect26021747566289475
firstReactRender26233022630
getState18715926028191260
initialActions63215621
loadScripts938717189735012781897
setupStore1392751427
numNetworkReqs353178730199653730
WebpackStandard HomeuiStartup863739114866887986
load64159194257653758
domContentLoaded63458593357645751
domInteractive16114981439
firstPaint18357938168182613
backgroundConnect24137192742
firstReactRender28175993336
getState1363351522
initialActions3119348
loadScripts63058392355643739
setupStore1052431215
numNetworkReqs106348632
WebpackPower User HomeuiStartup17241357241736222652417
load78162714692339121469
domContentLoaded73561112331778891233
domInteractive211345103545
firstPaint44211612373758941237
backgroundConnect14220420155402420
firstReactRender25233632636
getState15914118410163184
initialActions714914349
loadScripts73060912191738791219
setupStore15656132256
numNetworkReqs353227590137538590
FirefoxBrowserifyStandard HomeuiStartup1434124116539114991586
load1228107113947712851368
domContentLoaded1228107113937712851368
domInteractive1113424740123192
firstPaint------
backgroundConnect4225140175177
firstReactRender26215162545
getState74485711
initialActions3112239
loadScripts1202105413647512551341
setupStore1264651221
numNetworkReqs96316725
BrowserifyPower User HomeuiStartup27712294368641330643686
load14101221158111115031581
domContentLoaded14101220158011115031580
domInteractive16410925949213259
firstPaint------
backgroundConnect24935772235426772
firstReactRender42295594955
getState1298520729145207
initialActions13165181865
loadScripts13501185154011114611540
setupStore39683277783
numNetworkReqs265148532113321532
WebpackStandard HomeuiStartup16461430222713716782026
load14071180174110214571665
domContentLoaded14071180174110214571665
domInteractive1093349966114222
firstPaint------
backgroundConnect4927165195885
firstReactRender3324110153176
getState84497914
initialActions51587415
loadScripts13781162170510214271627
setupStore157267261322
numNetworkReqs96367729
WebpackPower User HomeuiStartup27952326364942932013649
load15941328218623817192186
domContentLoaded15931328218623817182186
domInteractive1468028460191284
firstPaint------
backgroundConnect18932588191386588
firstReactRender42325054750
getState1637428853201288
initialActions1521022413102
loadScripts15381303204720716722047
setupStore26689203189
numNetworkReqs275138501116382501
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 68 Bytes (0%)
  • ui: 257 Bytes (0%)
  • common: 15 Bytes (0%)

@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: 0478753 | Date: 10/31/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.03s (±39ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 719ms (±36ms) 🟢 | historical mean value: 722ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 77ms (±12ms) 🟢 | historical mean value: 77ms ⬇️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.03s 39ms 1.01s 1.33s 1.06s 1.33s
domContentLoaded 719ms 36ms 696ms 998ms 736ms 998ms
firstPaint 77ms 12ms 60ms 184ms 84ms 184ms
firstContentfulPaint 77ms 12ms 60ms 184ms 84ms 184ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [0478753]
UI Startup Metrics (1247 ± 71 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1247110614757112971364
load106395212096211071162
domContentLoaded105794612036111001156
domInteractive211476111950
firstPaint63087119743210811146
backgroundConnect2302152577234243
firstReactRender28165883345
getState2184882537
initialActions713361018
loadScripts83370696261874940
setupStore1162531219
numNetworkReqs96327631
BrowserifyPower User HomeuiStartup21501725426873727184268
load1069882163828414891638
domContentLoaded1061874161928214801619
domInteractive281470185270
firstPaint70918416364599301636
backgroundConnect295183991216332991
firstReactRender25233422534
getState17113219918190199
initialActions832461024
loadScripts852700130723711931307
setupStore1183561035
numNetworkReqs329184700197650700
WebpackStandard HomeuiStartup8537321146738661048
load64159094472647844
domContentLoaded63458593370641837
domInteractive15114371438
firstPaint17560799158172608
backgroundConnect23125482640
firstReactRender27173773334
getState1262231418
initialActions3014246
loadScripts63158392368639826
setupStore1051731215
numNetworkReqs96368832
WebpackPower User HomeuiStartup16301198227733420922277
load68357710731457761073
domContentLoaded66056410181347471018
domInteractive19134093040
firstPaint50510510223017541022
backgroundConnect13333416148356416
firstReactRender26225782657
getState1421201519149151
initialActions11156162256
loadScripts65656110101327401010
setupStore18662162762
numNetworkReqs314182566142537566
FirefoxBrowserifyStandard HomeuiStartup14691240182210715291663
load1249107714197612961380
domContentLoaded1249107714197612951379
domInteractive1173732142129196
firstPaint------
backgroundConnect4421112175079
firstReactRender26225052634
getState9417318813
initialActions4154545
loadScripts1223106013867312751352
setupStore1275061218
numNetworkReqs96316728
BrowserifyPower User HomeuiStartup26702267384244630563842
load13881208178616015501786
domContentLoaded13881208178616015501786
domInteractive1447929153149291
firstPaint------
backgroundConnect21935883229398883
firstReactRender412984144484
getState12810715716143157
initialActions2822055125205
loadScripts13331175160012715031600
setupStore36896255396
numNetworkReqs25715855596317555
WebpackStandard HomeuiStartup16521426204812617261933
load14181204178710814761612
domContentLoaded14171204178710814761612
domInteractive1113342861117227
firstPaint------
backgroundConnect5023140215898
firstReactRender312283133173
getState94130131018
initialActions41385411
loadScripts13881186175310614391586
setupStore1366181328
numNetworkReqs96327729
WebpackPower User HomeuiStartup28522267351943333383519
load16271326201520818212015
domContentLoaded16271326201420818212014
domInteractive1408322846180228
firstPaint------
backgroundConnect23353693191305693
firstReactRender37305053950
getState1386829655163296
initialActions8245111145
loadScripts15561299183817317201838
setupStore3552475632247
numNetworkReqs267133562123353562
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 68 Bytes (0%)
  • ui: 257 Bytes (0%)
  • common: 15 Bytes (0%)

github-merge-queue bot pushed a commit to MetaMask/metamask-mobile that referenced this pull request Nov 3, 2025
…end flow (#21515)

<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

Similarly what's being done in
MetaMask/metamask-extension#37047 this PR
implements a short living cache for `Name` component to use after send
flow.

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: Show ENS name in the confirmation after picking ENS
recipient in send flow

## **Related issues**

Fixes: #19072

## **Manual testing steps**

1. Go to send flow
2. Pick ENS recipient
3. Proceed into confirmation - you should be able to see ENS in the
confirmation now

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**



https://github.com/user-attachments/assets/d74ee373-8df0-43d4-924a-5520eb203240



## **Pre-merge author checklist**

- [X] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [X] I've completed the PR template to the best of my ability
- [X] I’ve included tests if applicable
- [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [X] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Adds a 5‑minute ENS resolution cache used post-send and surfaces
cached ENS in Name display; integrates with validation and updates
tests.
> 
> - **ENS caching (5 min TTL)**:
> - Add `useSendFlowEnsResolutions` with `setResolvedAddress` and
`getResolvedENSName` to cache ENS per `chainId:address`.
> - **Send flow integration**:
> - Update `useNameValidation` to call `setResolvedAddress(chainId,
ensName, resolvedAddress)` when `isEvmSendType` and ENS resolves.
> - **Display name integration**:
> - Update `useDisplayName` to read `ensName` via
`getResolvedENSName(variation, value)` and prioritize it in `name`
selection.
> - **Tests**:
> - New tests for cache storage, expiration, chain separation, overwrite
behavior.
> - Extend `useNameValidation` tests to assert cache writes only for
EVM/ENS.
>   - Add `useDisplayName` test to verify ENS name is returned.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
c5a24a9. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
@OGPoyraz OGPoyraz enabled auto-merge November 3, 2025 12:06
salimtb pushed a commit to MetaMask/metamask-mobile that referenced this pull request Nov 4, 2025
…end flow (#21515)

<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

Similarly what's being done in
MetaMask/metamask-extension#37047 this PR
implements a short living cache for `Name` component to use after send
flow.

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: Show ENS name in the confirmation after picking ENS
recipient in send flow

## **Related issues**

Fixes: #19072

## **Manual testing steps**

1. Go to send flow
2. Pick ENS recipient
3. Proceed into confirmation - you should be able to see ENS in the
confirmation now

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**



https://github.com/user-attachments/assets/d74ee373-8df0-43d4-924a-5520eb203240



## **Pre-merge author checklist**

- [X] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [X] I've completed the PR template to the best of my ability
- [X] I’ve included tests if applicable
- [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [X] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Adds a 5‑minute ENS resolution cache used post-send and surfaces
cached ENS in Name display; integrates with validation and updates
tests.
> 
> - **ENS caching (5 min TTL)**:
> - Add `useSendFlowEnsResolutions` with `setResolvedAddress` and
`getResolvedENSName` to cache ENS per `chainId:address`.
> - **Send flow integration**:
> - Update `useNameValidation` to call `setResolvedAddress(chainId,
ensName, resolvedAddress)` when `isEvmSendType` and ENS resolves.
> - **Display name integration**:
> - Update `useDisplayName` to read `ensName` via
`getResolvedENSName(variation, value)` and prioritize it in `name`
selection.
> - **Tests**:
> - New tests for cache storage, expiration, chain separation, overwrite
behavior.
> - Extend `useNameValidation` tests to assert cache writes only for
EVM/ENS.
>   - Add `useDisplayName` test to verify ENS name is returned.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
c5a24a9. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
@OGPoyraz OGPoyraz added this pull request to the merge queue Nov 4, 2025
Merged via the queue into main with commit 90d9a9d Nov 4, 2025
174 checks passed
@OGPoyraz OGPoyraz deleted the ogp/36966 branch November 4, 2025 12:13
@github-actions github-actions bot locked and limited conversation to collaborators Nov 4, 2025
@metamaskbot metamaskbot added the release-13.9.0 Issue or pull request that will be included in release 13.9.0 label Nov 4, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

release-13.9.0 Issue or pull request that will be included in release 13.9.0 size-S team-confirmations Push issues to confirmations team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Missing ENS name on send confirmation

5 participants