Skip to content

Conversation

@micaelae
Copy link
Member

@micaelae micaelae commented Jul 14, 2025

Description

This pre-fills Swap amount, src token and dest tokens based on deep-link query parameters (examples below)

Open in GitHub Codespaces

Changelog

CHANGELOG entry:

Related issues

Fixes: #34475
Fixes: https://consensyssoftware.atlassian.net/browse/SWAPS-2601

Manual testing steps

Navigation should set src token (existing feature)

  • click Swap from wallet overview
  • click Swap from ETH asset page
  • click Swap from ERC20 asset page
  • clicking Swap from ERC20 asset page on other network should switch network and select src token
  • clicking Swap from ETH asset page on other network should switch network and select src token
  • clicking "Bridge" carousel should open bridge page

Deep links should set src, dest tokens and amount

token combination
url
sol:SOL to sol:USDC chrome-extension://hebhblbkkdabgoldnojllkipeoacjioc/home.html#cross-chain/swaps/prepare-swap-page?from=solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501&amount=495625000&to=solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v

Partial deep links

token combination
url
no from token

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.

@metamaskbot metamaskbot added the team-swaps-and-bridge Swaps and Bridge team label Jul 14, 2025
@metamaskbot
Copy link
Collaborator

metamaskbot commented Jul 14, 2025

✨ Files requiring CODEOWNER review ✨

🔄 @MetaMask/swaps-engineers (14 files, +1063 -238)
  • 📁 ui/
    • 📁 ducks/
      • 📁 bridge/
        • 📄 actions.ts +50 -1
        • 📄 bridge.test.ts +26 -12
        • 📄 bridge.ts +5 -2
        • 📄 utils.ts +33 -50
    • 📁 hooks/
      • 📁 bridge/
        • 📁 __snapshots__/
          • 📄 useBridgeQueryParams.test.ts.snap +143 -0
          • 📄 useBridgeExchangeRates.ts +25 -2
          • 📄 useBridgeQueryParams.test.ts +411 -0
          • 📄 useBridgeQueryParams.ts +304 -0
          • 📄 useBridging.test.ts +19 -7
          • 📄 useBridging.ts +13 -11
          • 📄 useLatestBalance.ts +6 -5
          • 📄 useTokenAlerts.ts +1 -1
    • 📁 pages/
      • 📁 bridge/
        • 📁 hooks/
          • 📄 useIsMultichainSwap.tsx +6 -3
        • 📁 prepare/
          • 📄 prepare-bridge-page.tsx +21 -144

@metamaskbot
Copy link
Collaborator

Builds ready [2578d90]
UI Startup Metrics (1239 ± 71 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1239112115447112811364
load105495112666310981158
domContentLoaded104894412566210921147
domInteractive19146191743
firstPaint58868125942410261134
backgroundConnect73203914
firstReactRender21155372136
getState17663102333
initialActions609313424
loadScripts79868698161840900
setupStore95314920
WebpackHomeuiStartup22281659273723223582685
load16661225204417817531998
domContentLoaded16601221202817717461988
domInteractive1912105171566
firstPaint1565738263184271
backgroundConnect22105682637
firstReactRender27689450121383397
getState1453971627
initialActions923161026
loadScripts16571219201617517441977
setupStore1674772029
FirefoxBrowserifyHomeuiStartup14001200195315914571796
load12151060158510412901404
domContentLoaded12151060158510412901404
domInteractive1243453199118432
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect2113110122239
firstReactRender24195052433
getState14529334932
initialActions7019828319
loadScripts11981044156510312731381
setupStore13423230735
WebpackHomeuiStartup17201445230318817902166
load14511237200215315331792
domContentLoaded14511236200215315331791
domInteractive105343976999297
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect22165562439
firstReactRender58437576370
getState15668101635
initialActions7128829418
loadScripts14321223198015215111772
setupStore11510411930
Benchmark value 1239 exceeds gate value 1234 for chrome browserify home mean uiStartup
Benchmark value 17 exceeds gate value 15 for chrome browserify home mean getState
Benchmark value 6 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 43 exceeds gate value 41 for chrome browserify home p95 domInteractive
Benchmark value 24 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 20 exceeds gate value 17 for chrome browserify home p95 setupStore
Benchmark value 2229 exceeds gate value 2192 for chrome webpack home mean uiStartup
Benchmark value 277 exceeds gate value 235 for chrome webpack home mean firstReactRender
Benchmark value 9 exceeds gate value 7 for chrome webpack home mean initialActions
Benchmark value 2686 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 66 exceeds gate value 57 for chrome webpack home p95 domInteractive
Benchmark value 397 exceeds gate value 370 for chrome webpack home p95 firstReactRender
Benchmark value 26 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 1978 exceeds gate value 1970 for chrome webpack home p95 loadScripts
Benchmark value 125 exceeds gate value 110 for firefox browserify home mean domInteractive
Benchmark value 15 exceeds gate value 11 for firefox browserify home mean getState
Benchmark value 8 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 14 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 1796 exceeds gate value 1660 for firefox browserify home p95 uiStartup
Benchmark value 432 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 32 exceeds gate value 24 for firefox browserify home p95 getState
Benchmark value 19 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 1720 exceeds gate value 1615 for firefox webpack home mean uiStartup
Benchmark value 1452 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 105 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 58 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 1432 exceeds gate value 1360 for firefox webpack home mean loadScripts
Benchmark value 2166 exceeds gate value 1935 for firefox webpack home p95 uiStartup
Benchmark value 1792 exceeds gate value 1660 for firefox webpack home p95 load
Benchmark value 1791 exceeds gate value 1660 for firefox webpack home p95 domContentLoaded
Benchmark value 297 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 70 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 35 exceeds gate value 32 for firefox webpack home p95 getState
Benchmark value 18 exceeds gate value 2 for firefox webpack home p95 initialActions
Benchmark value 1772 exceeds gate value 1630 for firefox webpack home p95 loadScripts
Benchmark value 30 exceeds gate value 28 for firefox webpack home p95 setupStore
Sum of mean exceeds: 476ms | Sum of p95 exceeds: 1546.8ms
Sum of all benchmark exceeds: 2022.8ms

Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 33 Bytes (0%)
  • ui: 1.1 KiB (0.01%)
  • common: 91 Bytes (0%)

@micaelae micaelae changed the base branch from main to swaps43186-swap-to-native July 14, 2025 21:27
@metamaskbot
Copy link
Collaborator

Builds ready [527943b]
UI Startup Metrics (1245 ± 70 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1245113914397012911378
load106591812627111071202
domContentLoaded105891212527111001190
domInteractive18146271738
firstPaint67988125743210761180
backgroundConnect83486813
firstReactRender20145862133
getState1563982032
initialActions608111821
loadScripts806660100171848930
setupStore95839921
WebpackHomeuiStartup22501726277719223202639
load16911293209117017901950
domContentLoaded16851289207516917821942
domInteractive181269131560
firstPaint1536042866206263
backgroundConnect2510278272747
firstReactRender26188522123379402
getState1554881929
initialActions11216322927
loadScripts16811287206416817771931
setupStore196292292031
FirefoxBrowserifyHomeuiStartup13811163203314414541659
load12031030149010012771402
domContentLoaded12031029149010012771402
domInteractive1113849176113289
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect19136182134
firstReactRender23195242328
getState14527329941
initialActions5015918221
loadScripts1186101414749812551385
setupStore14434236673
WebpackHomeuiStartup17571492242820618402235
load14771249210617615661922
domContentLoaded14771249210617615651922
domInteractive116355449599325
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect241691102445
firstReactRender59487366370
getState176220231737
initialActions9124633423
loadScripts14561232208117515461897
setupStore185255411040
Benchmark value 1246 exceeds gate value 1234 for chrome browserify home mean uiStartup
Benchmark value 16 exceeds gate value 15 for chrome browserify home mean getState
Benchmark value 7 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 1378 exceeds gate value 1365 for chrome browserify home p95 uiStartup
Benchmark value 1202 exceeds gate value 1190 for chrome browserify home p95 load
Benchmark value 1191 exceeds gate value 1180 for chrome browserify home p95 domContentLoaded
Benchmark value 21 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 21 exceeds gate value 17 for chrome browserify home p95 setupStore
Benchmark value 2251 exceeds gate value 2192 for chrome webpack home mean uiStartup
Benchmark value 262 exceeds gate value 235 for chrome webpack home mean firstReactRender
Benchmark value 12 exceeds gate value 7 for chrome webpack home mean initialActions
Benchmark value 2639 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 61 exceeds gate value 57 for chrome webpack home p95 domInteractive
Benchmark value 402 exceeds gate value 370 for chrome webpack home p95 firstReactRender
Benchmark value 27 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 111 exceeds gate value 110 for firefox browserify home mean domInteractive
Benchmark value 14 exceeds gate value 11 for firefox browserify home mean getState
Benchmark value 6 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 14 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 289 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 41 exceeds gate value 24 for firefox browserify home p95 getState
Benchmark value 21 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 73 exceeds gate value 27 for firefox browserify home p95 setupStore
Benchmark value 1758 exceeds gate value 1615 for firefox webpack home mean uiStartup
Benchmark value 1477 exceeds gate value 1380 for firefox webpack home mean load
Benchmark value 1477 exceeds gate value 1380 for firefox webpack home mean domContentLoaded
Benchmark value 116 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 60 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 17 exceeds gate value 15 for firefox webpack home mean getState
Benchmark value 9 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 1456 exceeds gate value 1360 for firefox webpack home mean loadScripts
Benchmark value 19 exceeds gate value 13 for firefox webpack home mean setupStore
Benchmark value 2235 exceeds gate value 1935 for firefox webpack home p95 uiStartup
Benchmark value 1922 exceeds gate value 1660 for firefox webpack home p95 load
Benchmark value 1922 exceeds gate value 1660 for firefox webpack home p95 domContentLoaded
Benchmark value 325 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 70 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 37 exceeds gate value 32 for firefox webpack home p95 getState
Benchmark value 23 exceeds gate value 2 for firefox webpack home p95 initialActions
Benchmark value 1897 exceeds gate value 1630 for firefox webpack home p95 loadScripts
Benchmark value 40 exceeds gate value 28 for firefox webpack home p95 setupStore
Sum of mean exceeds: 611ms | Sum of p95 exceeds: 1794.8ms
Sum of all benchmark exceeds: 2405.8ms

@metamaskbot
Copy link
Collaborator

Builds ready [dc2c43b]
UI Startup Metrics (1232 ± 94 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1232109918919412731357
load105794816448411031177
domContentLoaded105194316348310931169
domInteractive18136191641
firstPaint64973164443310461137
backgroundConnect73243812
firstReactRender19143842028
getState1563782130
initialActions50467720
loadScripts804706138482846921
setupStore84274819
WebpackHomeuiStartup22631782280720223612717
load16881340205516017861994
domContentLoaded16821335203215917781982
domInteractive181380141562
firstPaint1486336059174269
backgroundConnect269280272650
firstReactRender25488417120384400
getState14471101730
initialActions12218425928
loadScripts16781333202015717741970
setupStore1675681830
FirefoxBrowserifyHomeuiStartup14101201183912414381702
load1230106714948512901385
domContentLoaded1230106714948512891384
domInteractive1203847580119332
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect2513219222452
firstReactRender24205142433
getState1058410934
initialActions7016922219
loadScripts1211105314358312661355
setupStore11415119737
WebpackHomeuiStartup17071443353827017512277
load14561224323724015121935
domContentLoaded14551223323724015121935
domInteractive108495708097293
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect23155182444
firstReactRender55406965964
getState136185181231
initialActions10125235427
loadScripts14371208321524014971918
setupStore96314919
Benchmark value 5 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 20 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 2263 exceeds gate value 2192 for chrome webpack home mean uiStartup
Benchmark value 255 exceeds gate value 235 for chrome webpack home mean firstReactRender
Benchmark value 12 exceeds gate value 7 for chrome webpack home mean initialActions
Benchmark value 2718 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 62 exceeds gate value 57 for chrome webpack home p95 domInteractive
Benchmark value 400 exceeds gate value 370 for chrome webpack home p95 firstReactRender
Benchmark value 28 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 1971 exceeds gate value 1970 for chrome webpack home p95 loadScripts
Benchmark value 1411 exceeds gate value 1405 for firefox browserify home mean uiStartup
Benchmark value 120 exceeds gate value 110 for firefox browserify home mean domInteractive
Benchmark value 7 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 11 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 1702 exceeds gate value 1660 for firefox browserify home p95 uiStartup
Benchmark value 332 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 34 exceeds gate value 24 for firefox browserify home p95 getState
Benchmark value 19 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 37 exceeds gate value 27 for firefox browserify home p95 setupStore
Benchmark value 1707 exceeds gate value 1615 for firefox webpack home mean uiStartup
Benchmark value 1456 exceeds gate value 1380 for firefox webpack home mean load
Benchmark value 1456 exceeds gate value 1380 for firefox webpack home mean domContentLoaded
Benchmark value 108 exceeds gate value 100 for firefox webpack home mean domInteractive
Benchmark value 55 exceeds gate value 38 for firefox webpack home mean firstReactRender
Benchmark value 10 exceeds gate value 1 for firefox webpack home mean initialActions
Benchmark value 1437 exceeds gate value 1360 for firefox webpack home mean loadScripts
Benchmark value 2277 exceeds gate value 1935 for firefox webpack home p95 uiStartup
Benchmark value 1935 exceeds gate value 1660 for firefox webpack home p95 load
Benchmark value 1935 exceeds gate value 1660 for firefox webpack home p95 domContentLoaded
Benchmark value 293 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 1918 exceeds gate value 1630 for firefox webpack home p95 loadScripts
Sum of mean exceeds: 479ms | Sum of p95 exceeds: 1914.8ms
Sum of all benchmark exceeds: 2393.8ms

cursor[bot]

This comment was marked as outdated.

cursor[bot]

This comment was marked as outdated.

cursor[bot]

This comment was marked as outdated.

@metamaskbot
Copy link
Collaborator

Builds ready [bc75aea]
UI Startup Metrics (1303 ± 61 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1303114115056113411420
load112099713026111551230
domContentLoaded111299212936211491220
domInteractive201478101840
firstPaint71179130045311401198
backgroundConnect2192042498223241
firstReactRender22164052333
getState1143371525
initialActions30284211
loadScripts9007871083629381011
setupStore8412212717
WebpackHomeuiStartup23901835278714924772585
load18901400246716419792138
domContentLoaded18801393225915719732133
domInteractive2013243261557
firstPaint1596336967184316
backgroundConnect43112896434277
firstReactRender1698935567201326
getState134247241423
initialActions14221735751
loadScripts18751389224615619692129
setupStore176220251733
FirefoxBrowserifyHomeuiStartup15471328200013816481796
load1324111817109913801529
domContentLoaded1324111817109913791529
domInteractive1263650896120389
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect281674123354
firstReactRender312169123161
getState162292401261
initialActions607311329
loadScripts1302110216919913611504
setupStore124172191039
WebpackHomeuiStartup17441495253619918262124
load14741279196114115741734
domContentLoaded14741279196114115741734
domInteractive101623406291299
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect281979123255
firstReactRender51406565564
getState83296917
initialActions8020924620
loadScripts14521260192713915521703
setupStore195265431344
Benchmark value 1303 exceeds gate value 1234 for chrome browserify home mean uiStartup
Benchmark value 1120 exceeds gate value 1070 for chrome browserify home mean load
Benchmark value 1112 exceeds gate value 1061 for chrome browserify home mean domContentLoaded
Benchmark value 220 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 900 exceeds gate value 830 for chrome browserify home mean loadScripts
Benchmark value 1420 exceeds gate value 1365 for chrome browserify home p95 uiStartup
Benchmark value 1231 exceeds gate value 1190 for chrome browserify home p95 load
Benchmark value 1221 exceeds gate value 1180 for chrome browserify home p95 domContentLoaded
Benchmark value 1199 exceeds gate value 1180 for chrome browserify home p95 firstPaint
Benchmark value 242 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 11 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 1012 exceeds gate value 940 for chrome browserify home p95 loadScripts
Benchmark value 2391 exceeds gate value 2192 for chrome webpack home mean uiStartup
Benchmark value 1890 exceeds gate value 1711 for chrome webpack home mean load
Benchmark value 1880 exceeds gate value 1704 for chrome webpack home mean domContentLoaded
Benchmark value 44 exceeds gate value 40 for chrome webpack home mean backgroundConnect
Benchmark value 14 exceeds gate value 7 for chrome webpack home mean initialActions
Benchmark value 1875 exceeds gate value 1699 for chrome webpack home mean loadScripts
Benchmark value 2585 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 2138 exceeds gate value 2030 for chrome webpack home p95 load
Benchmark value 2133 exceeds gate value 2005 for chrome webpack home p95 domContentLoaded
Benchmark value 58 exceeds gate value 57 for chrome webpack home p95 domInteractive
Benchmark value 277 exceeds gate value 90 for chrome webpack home p95 backgroundConnect
Benchmark value 51 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 2130 exceeds gate value 1970 for chrome webpack home p95 loadScripts
Benchmark value 1547 exceeds gate value 1405 for firefox browserify home mean uiStartup
Benchmark value 1325 exceeds gate value 1245 for firefox browserify home mean load
Benchmark value 1324 exceeds gate value 1239 for firefox browserify home mean domContentLoaded
Benchmark value 126 exceeds gate value 110 for firefox browserify home mean domInteractive
Benchmark value 28 exceeds gate value 25 for firefox browserify home mean backgroundConnect
Benchmark value 32 exceeds gate value 25 for firefox browserify home mean firstReactRender
Benchmark value 17 exceeds gate value 11 for firefox browserify home mean getState
Benchmark value 6 exceeds gate value 1 for firefox browserify home mean initialActions
Benchmark value 1302 exceeds gate value 1230 for firefox browserify home mean loadScripts
Benchmark value 12 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 1796 exceeds gate value 1660 for firefox browserify home p95 uiStartup
Benchmark value 1529 exceeds gate value 1495 for firefox browserify home p95 load
Benchmark value 1529 exceeds gate value 1495 for firefox browserify home p95 domContentLoaded
Benchmark value 389 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 61 exceeds gate value 55 for firefox browserify home p95 firstReactRender
Benchmark value 61 exceeds gate value 24 for firefox browserify home p95 getState
Benchmark value 29 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 1504 exceeds gate value 1475 for firefox browserify home p95 loadScripts
Benchmark value 39 exceeds gate value 27 for firefox browserify home p95 setupStore
Benchmark value 1744 exceeds gate value 1615 for firefox webpack home mean uiStartup
Benchmark value 1475 exceeds gate value 1380 for firefox webpack home mean load
Benchmark value 1475 exceeds gate value 1380 for firefox webpack home mean domContentLoaded
Benchmark value 101 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 52 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 1452 exceeds gate value 1360 for firefox webpack home mean loadScripts
Benchmark value 19 exceeds gate value 13 for firefox webpack home mean setupStore
Benchmark value 2124 exceeds gate value 1935 for firefox webpack home p95 uiStartup
Benchmark value 1734 exceeds gate value 1660 for firefox webpack home p95 load
Benchmark value 1734 exceeds gate value 1660 for firefox webpack home p95 domContentLoaded
Benchmark value 299 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 55 exceeds gate value 49 for firefox webpack home p95 backgroundConnect
Benchmark value 64 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 1703 exceeds gate value 1630 for firefox webpack home p95 loadScripts
Benchmark value 44 exceeds gate value 28 for firefox webpack home p95 setupStore
Sum of mean exceeds: 2054ms | Sum of p95 exceeds: 2336.8ms
Sum of all benchmark exceeds: 4390.8ms

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

SteP-n-s
SteP-n-s previously approved these changes Jul 17, 2025
cursor[bot]

This comment was marked as outdated.

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: Unsafe Type Assertion Causes Metadata Retrieval Failures

The as unknown as CaipAssetType type assertion is unsafely used to cast lowercased CAIP asset IDs (parsedFromAssetId.assetId.toLowerCase() and parsedToAssetId.assetId.toLowerCase()) when retrieving asset metadata. This bypasses TypeScript's type safety and can lead to runtime errors if the lowercased ID is not a valid CaipAssetType or if asset IDs are case-sensitive for non-Ethereum assets.

ui/hooks/bridge/useBridgeQueryParams.ts#L249-L254

const fromTokenMetadata =
assetMetadataByAssetId?.[parsedFromAssetId.assetId] ??
assetMetadataByAssetId?.[
parsedFromAssetId.assetId.toLowerCase() as unknown as CaipAssetType
];

ui/hooks/bridge/useBridgeQueryParams.ts#L279-L282

assetMetadataByAssetId?.[parsedToAssetId.assetId] ??
assetMetadataByAssetId?.[
parsedToAssetId.assetId.toLowerCase() as unknown as CaipAssetType
];

Fix in CursorFix in Web


Bug: Address Formatting Issue in Metadata Fetch

The fetchAssetMetadata function incorrectly changed the returned address field from toHex(address) to address.toLowerCase(). This is problematic because the address parameter can be a CAIP asset ID, causing toLowerCase() to be applied to the entire ID instead of extracting and lowercasing only the hex address reference (unlike the Solana branch). Additionally, toLowerCase() does not ensure the address is a properly formatted hexadecimal string, which toHex previously guaranteed, potentially returning malformed addresses to consumers.

shared/lib/asset-utils.ts#L136-L137

...commonFields,
address: address.toLowerCase(),

Fix in CursorFix in Web


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

@metamaskbot
Copy link
Collaborator

Builds ready [0f043b8]
UI Startup Metrics (1285 ± 60 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1285114215536013261369
load110395213225711441181
domContentLoaded109594413185811341176
domInteractive18144771742
firstPaint658130118943911191165
backgroundConnect2141952478217231
firstReactRender20144852129
getState11381101327
initialActions20174212
loadScripts888740110557926969
setupStore74192710
WebpackHomeuiStartup24091963275615324822643
load19121410229817320282159
domContentLoaded19031403229017219972155
domInteractive2313220321576
firstPaint1656146567192294
backgroundConnect46104247233284
firstReactRender1699039865188316
getState1033551218
initialActions13219733751
loadScripts18981399228017219922153
setupStore167235231623
FirefoxBrowserifyHomeuiStartup15281338225714315631800
load1313113716539413531519
domContentLoaded1313113716539413531518
domInteractive1183853885107322
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect261463102655
firstReactRender312166123160
getState11317320938
initialActions408810216
loadScripts1291112016089213281489
setupStore17322338796
WebpackHomeuiStartup17171499248518217862082
load14571267204114615251762
domContentLoaded14571267204114615251762
domInteractive102535777888294
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3219383383255
firstReactRender5341144115662
getState113200201126
initialActions8024131314
loadScripts14321245201313915041722
setupStore134267271043
Benchmark value 1286 exceeds gate value 1234 for chrome browserify home mean uiStartup
Benchmark value 1103 exceeds gate value 1070 for chrome browserify home mean load
Benchmark value 1096 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 3 exceeds gate value 1 for chrome browserify home mean initialActions
Benchmark value 889 exceeds gate value 830 for chrome browserify home mean loadScripts
Benchmark value 1369 exceeds gate value 1365 for chrome browserify home p95 uiStartup
Benchmark value 42 exceeds gate value 41 for chrome browserify home p95 domInteractive
Benchmark value 231 exceeds gate value 18 for chrome browserify home p95 backgroundConnect
Benchmark value 12 exceeds gate value 1.2 for chrome browserify home p95 initialActions
Benchmark value 970 exceeds gate value 940 for chrome browserify home p95 loadScripts
Benchmark value 2410 exceeds gate value 2192 for chrome webpack home mean uiStartup
Benchmark value 1912 exceeds gate value 1711 for chrome webpack home mean load
Benchmark value 1904 exceeds gate value 1704 for chrome webpack home mean domContentLoaded
Benchmark value 23 exceeds gate value 21 for chrome webpack home mean domInteractive
Benchmark value 46 exceeds gate value 40 for chrome webpack home mean backgroundConnect
Benchmark value 13 exceeds gate value 7 for chrome webpack home mean initialActions
Benchmark value 1899 exceeds gate value 1699 for chrome webpack home mean loadScripts
Benchmark value 2643 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Benchmark value 2159 exceeds gate value 2030 for chrome webpack home p95 load
Benchmark value 2155 exceeds gate value 2005 for chrome webpack home p95 domContentLoaded
Benchmark value 77 exceeds gate value 57 for chrome webpack home p95 domInteractive
Benchmark value 284 exceeds gate value 90 for chrome webpack home p95 backgroundConnect
Benchmark value 51 exceeds gate value 7 for chrome webpack home p95 initialActions
Benchmark value 2153 exceeds gate value 1970 for chrome webpack home p95 loadScripts
Benchmark value 1529 exceeds gate value 1405 for firefox browserify home mean uiStartup
Benchmark value 1314 exceeds gate value 1245 for firefox browserify home mean load
Benchmark value 1314 exceeds gate value 1239 for firefox browserify home mean domContentLoaded
Benchmark value 118 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 31 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 1291 exceeds gate value 1230 for firefox browserify home mean loadScripts
Benchmark value 17 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 1800 exceeds gate value 1660 for firefox browserify home p95 uiStartup
Benchmark value 1519 exceeds gate value 1495 for firefox browserify home p95 load
Benchmark value 1518 exceeds gate value 1495 for firefox browserify home p95 domContentLoaded
Benchmark value 322 exceeds gate value 195 for firefox browserify home p95 domInteractive
Benchmark value 60 exceeds gate value 55 for firefox browserify home p95 firstReactRender
Benchmark value 38 exceeds gate value 24 for firefox browserify home p95 getState
Benchmark value 16 exceeds gate value 2 for firefox browserify home p95 initialActions
Benchmark value 1489 exceeds gate value 1475 for firefox browserify home p95 loadScripts
Benchmark value 96 exceeds gate value 27 for firefox browserify home p95 setupStore
Benchmark value 1717 exceeds gate value 1615 for firefox webpack home mean uiStartup
Benchmark value 1457 exceeds gate value 1380 for firefox webpack home mean load
Benchmark value 1457 exceeds gate value 1380 for firefox webpack home mean domContentLoaded
Benchmark value 103 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 53 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 1433 exceeds gate value 1360 for firefox webpack home mean loadScripts
Benchmark value 2082 exceeds gate value 1935 for firefox webpack home p95 uiStartup
Benchmark value 1762 exceeds gate value 1660 for firefox webpack home p95 load
Benchmark value 1762 exceeds gate value 1660 for firefox webpack home p95 domContentLoaded
Benchmark value 294 exceeds gate value 156 for firefox webpack home p95 domInteractive
Benchmark value 55 exceeds gate value 49 for firefox webpack home p95 backgroundConnect
Benchmark value 62 exceeds gate value 50 for firefox webpack home p95 firstReactRender
Benchmark value 14 exceeds gate value 2 for firefox webpack home p95 initialActions
Benchmark value 1722 exceeds gate value 1630 for firefox webpack home p95 loadScripts
Benchmark value 43 exceeds gate value 28 for firefox webpack home p95 setupStore
Sum of mean exceeds: 1935ms | Sum of p95 exceeds: 2223.8ms
Sum of all benchmark exceeds: 4158.8ms

Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 38 Bytes (0%)
  • ui: 3.23 KiB (0.04%)
  • common: 155 Bytes (0%)

@micaelae micaelae changed the title feat: support swap deep links feat: support swap deep links cp-12.24.0 Jul 17, 2025
@micaelae micaelae changed the title feat: support swap deep links cp-12.24.0 feat: support swap deep links cp-13.0.0 Jul 17, 2025
@micaelae micaelae added this pull request to the merge queue Jul 17, 2025
Merged via the queue into main with commit ccc67c9 Jul 17, 2025
539 of 547 checks passed
@micaelae micaelae deleted the swaps2601-deep-link branch July 17, 2025 20:20
@github-actions github-actions bot locked and limited conversation to collaborators Jul 17, 2025
@metamaskbot metamaskbot added the release-13.1.0 Issue or pull request that will be included in release 13.1.0 label Jul 17, 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

release-13.0.0 Issue or pull request that will be included in release 13.0.0 (also called 12.24.0) team-swaps-and-bridge Swaps and Bridge team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support deep link parameters

6 participants