Skip to content

perf: reuse canonical deep link URL for verification#43520

Draft
davidmurdoch wants to merge 1 commit into
mainfrom
david/optimize-deep-link-verification
Draft

perf: reuse canonical deep link URL for verification#43520
davidmurdoch wants to merge 1 commit into
mainfrom
david/optimize-deep-link-verification

Conversation

@davidmurdoch

Copy link
Copy Markdown
Contributor

Description

Reuses the canonical deep-link URL across parsing and signature verification so signed links avoid canonicalizing the same URL twice. This also narrows verify so callers pass the required signature and the already-canonical URL directly.

This implements the optimization discussed in #37086 (comment).

Changelog

CHANGELOG entry: null

Related issues

Fixes: N/A

Manual testing steps

  1. yarn test:unit shared/lib/deep-links - passed
  2. yarn lint:changed:fix - passed
  3. yarn lint:tsc - failed on existing repo-wide missing packages/type errors; no changed files were reported

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
Copy Markdown
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.

@mm-token-exchange-service mm-token-exchange-service Bot added the team-extension-platform Extension Platform team label Jun 12, 2026

const signature = await verify(url);
const signatureStr = url.searchParams.get(SIG_PARAM);
const signature = signatureStr
@mm-token-exchange-service

Copy link
Copy Markdown
Builds ready [90614fc]
Deprecated Browserify fallback builds
⚡ Performance Benchmarks (Total: 🟢 14 pass · 🟡 11 warn · 🔴 0 fail)

Baseline (latest main): a568d9c | Date: 6/12/2026 | Pipeline: 27441692241 | Baseline logs

Interaction Benchmarks · Samples: 5
Benchmarkchrome-webpackfirefox-webpack
loadNewAccount
[Sentry log · main/release]
🟡 [CI log]🟢 [CI log]
confirmTx
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]
bridgeUserActions
[Sentry log · main/release]
🟢 [CI log]🟡 [CI log]
🟡 bridge_search_token

📈 Results compared to the previous 5 runs on main

  • loadNewAccount/load_new_account: -22%
  • loadNewAccount/total: -22%
  • loadNewAccount/inp: -30%
  • confirmTx/lcp: +11%
  • bridgeUserActions/bridge_load_asset_picker: -12%
  • bridgeUserActions/tbt: +19%
  • bridgeUserActions/inp: -26%
  • loadNewAccount/load_new_account: +26%
  • loadNewAccount/total: +26%
  • loadNewAccount/inp: +56%
  • loadNewAccount/fcp: -48%
  • loadNewAccount/lcp: +1240%
  • confirmTx/confirm_tx: +11%
  • confirmTx/longTaskCount: -100%
  • confirmTx/longTaskTotalDuration: -100%
  • confirmTx/longTaskMaxDuration: -100%
  • confirmTx/tbt: -100%
  • confirmTx/total: +11%
  • confirmTx/inp: -10%
  • confirmTx/fcp: +11%
  • confirmTx/lcp: +1236%
  • bridgeUserActions/bridge_load_page: +88%
  • bridgeUserActions/bridge_load_asset_picker: +66%
  • bridgeUserActions/bridge_search_token: +217%
  • bridgeUserActions/longTaskCount: -100%
  • bridgeUserActions/longTaskTotalDuration: -100%
  • bridgeUserActions/longTaskMaxDuration: -100%
  • bridgeUserActions/tbt: -100%
  • bridgeUserActions/total: +190%
  • bridgeUserActions/inp: -26%
  • bridgeUserActions/fcp: +13%
  • bridgeUserActions/lcp: +1263%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 loadNewAccount/FCP: p75 1.9s
  • 🟡 confirmTx/FCP: p75 1.8s
  • 🟡 confirmTx/FCP: p75 1.9s
  • 🟡 bridgeUserActions/FCP: p75 1.9s
Startup Benchmarks · Samples: 100
Benchmarkchrome-webpackfirefox-webpack
startupStandardHome
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
startupPowerUserHome
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]

📈 Results compared to the previous 5 runs on main

  • startupPowerUserHome/numNetworkReqs: -13%
  • startupStandardHome/inp: +50%
  • startupStandardHome/fcp: +16%
  • startupPowerUserHome/domInteractive: +12%
  • startupPowerUserHome/backgroundConnect: -17%
  • startupPowerUserHome/setupStore: +31%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🔴 startupPowerUserHome/INP: p75 552ms
  • 🟡 startupPowerUserHome/LCP: p75 2.7s
User Journey Benchmarks · Samples: 5 · mock API
Benchmarkchrome-webpackfirefox-webpack
onboardingImportWallet
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
onboardingNewWallet
[Sentry log · main/release]
🟢 [CI log]🟡 [CI log]
🟡 total
assetDetails
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]
solanaAssetDetails
[Sentry log · main/release]
🟢 [CI log]🟡 [CI log]
importSrpHome
[Sentry log · main/release]
🟡 [CI log]🟡 [CI log]
sendTransactions
[Sentry log · main/release]
🟢 [CI log]🟡 [CI log]
swap
[Sentry log · main/release]
🟢 [CI log]🟢 [CI log]

📈 Results compared to the previous 5 runs on main

  • onboardingImportWallet/srpButtonToSrpForm: +12%
  • onboardingImportWallet/confirmSrpToPwForm: +11%
  • onboardingImportWallet/pwFormToMetricsScreen: +17%
  • onboardingImportWallet/metricsToWalletReadyScreen: +13%
  • onboardingImportWallet/doneButtonToHomeScreen: -84%
  • onboardingImportWallet/openAccountMenuToAccountListLoaded: -73%
  • onboardingImportWallet/longTaskCount: -80%
  • onboardingImportWallet/longTaskTotalDuration: -94%
  • onboardingImportWallet/longTaskMaxDuration: -91%
  • onboardingImportWallet/tbt: -98%
  • onboardingImportWallet/total: -82%
  • onboardingNewWallet/doneButtonToAssetList: -14%
  • onboardingNewWallet/longTaskCount: -50%
  • onboardingNewWallet/longTaskTotalDuration: -49%
  • onboardingNewWallet/longTaskMaxDuration: -20%
  • onboardingNewWallet/tbt: -54%
  • onboardingNewWallet/total: -13%
  • solanaAssetDetails/assetClickToPriceChart: -80%
  • solanaAssetDetails/longTaskCount: -100%
  • solanaAssetDetails/longTaskTotalDuration: -100%
  • solanaAssetDetails/longTaskMaxDuration: -100%
  • solanaAssetDetails/tbt: -100%
  • solanaAssetDetails/total: -80%
  • solanaAssetDetails/inp: -53%
  • solanaAssetDetails/fcp: -24%
  • solanaAssetDetails/lcp: -17%
  • solanaAssetDetails/cls: -97%
  • importSrpHome/loginToHomeScreen: -13%
  • importSrpHome/openAccountMenuAfterLogin: +16%
  • importSrpHome/homeAfterImportWithNewWallet: -39%
  • importSrpHome/longTaskCount: -31%
  • importSrpHome/longTaskTotalDuration: -32%
  • importSrpHome/longTaskMaxDuration: -14%
  • importSrpHome/tbt: -34%
  • importSrpHome/total: -34%
  • importSrpHome/inp: -17%
  • sendTransactions/selectTokenToSendFormLoaded: -26%
  • sendTransactions/inp: -32%
  • sendTransactions/lcp: +15%
  • sendTransactions/cls: -88%

🌐 Core Web Vitals — 🟢 good · 🟡 needs improvement · 🔴 poor (web.dev thresholds)

  • 🟡 importSrpHome/INP: p75 208ms
  • 🟡 importSrpHome/FCP: p75 1.9s
  • 🟡 solanaAssetDetails/FCP: p75 1.8s
  • 🟡 importSrpHome/FCP: p75 1.9s
  • 🟡 sendTransactions/FCP: p75 2.0s
Dapp Page Load Benchmarks · Samples: 100
Benchmarkchrome-webpack
dappPageLoad
[Sentry log · main/release]
🟢 [CI log]
Bundle size diffs
  • background: 58 Bytes (0%)
  • ui: 195 Bytes (0%)
  • common: -58 Bytes (0%)

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

Labels

size-M team-extension-platform Extension Platform team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants