Skip to content

fix(bridge): preserve Unified SwapBridge funnel metrics - #9986

Open
bfullam wants to merge 3 commits into
mainfrom
swaps-4977-4979-fix-funnel-metrics
Open

fix(bridge): preserve Unified SwapBridge funnel metrics#9986
bfullam wants to merge 3 commits into
mainfrom
swaps-4977-4979-fix-funnel-metrics

Conversation

@bfullam

@bfullam bfullam commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add has_sufficient_funds to Unified SwapBridge Quotes Received metrics for SWAPS-4977.
  • Preserve explicit slippage intent and normalized slippage limits across quote, submission, and history metrics for SWAPS-4979.
  • Support client fallbacks for incomplete quote USD and token-symbol data, while preserving Quick Buy and Batch Sell legacy behavior.

Test plan

  • yarn workspace @metamask/bridge-controller test --coverage=false --runInBand --testPathPatterns=src/utils/metrics/properties.test.ts
  • yarn workspace @metamask/bridge-status-controller test --coverage=false --runInBand --testPathPatterns=src/utils/metrics.test.ts
  • Bridge status-controller tests and Batch Sell tests
  • Core typecheck and targeted ESLint
  • Prettier and git diff --check

Note

Low Risk
Changes are limited to analytics payloads and optional history metadata; swap/bridge execution logic is unchanged.

Overview
This PR tightens Unified SwapBridge analytics so quote-through-completion events carry consistent slippage and balance context.

In bridge-controller, Quotes Received now includes has_sufficient_funds (from !insufficientBal), slippage_limit defaults to 0 instead of undefined (treating 0 as auto), and getQuotesReceivedProperties accepts optional client fallbacks for slippage_limit, custom_slippage, USD amount, and token symbols when the active quote is missing or incomplete.

In bridge-status-controller, submit flows thread quotesReceivedContext into pre-submit and history creation so custom_slippage and slippage_limit match what the client captured at quote time; customSlippage is persisted on history items and used when rebuilding post-submit metrics, with legacy inference kept for Batch Sell and Quick Buy where explicit flags were not stored before.

Reviewed by Cursor Bugbot for commit eedff66. Bugbot is set up for automated code reviews on this repo. Configure here.

Capture sufficient-funds and explicit slippage context consistently across quote and post-submission events.
@bfullam
bfullam requested review from a team as code owners August 27, 2026 13:21
@bfullam
bfullam deployed to default-branch August 27, 2026 13:21 — with GitHub Actions Active
@cursor
cursor Bot requested review from infiniteflower and micaelae August 27, 2026 13:29
Align the slippage metrics test with the latest quote metadata API and restore linked unreleased changelog entries.
@bfullam

bfullam commented Aug 27, 2026

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-preview

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@8.0.0-preview-eedff6680
@metamask-previews/accounts-controller@39.1.1-preview-eedff6680
@metamask-previews/address-book-controller@7.1.2-preview-eedff6680
@metamask-previews/ai-controllers@0.8.0-preview-eedff6680
@metamask-previews/analytics-controller@2.0.0-preview-eedff6680
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-eedff6680
@metamask-previews/announcement-controller@8.1.0-preview-eedff6680
@metamask-previews/app-metadata-controller@2.0.1-preview-eedff6680
@metamask-previews/approval-controller@9.0.2-preview-eedff6680
@metamask-previews/assets-controller@14.0.2-preview-eedff6680
@metamask-previews/assets-controllers@111.1.3-preview-eedff6680
@metamask-previews/authenticated-user-storage@3.0.2-preview-eedff6680
@metamask-previews/base-controller@9.1.0-preview-eedff6680
@metamask-previews/base-data-service@1.0.0-preview-eedff6680
@metamask-previews/bitcoin-regtest-up@1.0.0-preview-eedff6680
@metamask-previews/bridge-controller@80.0.0-preview-eedff6680
@metamask-previews/bridge-status-controller@75.3.0-preview-eedff6680
@metamask-previews/build-utils@3.0.4-preview-eedff6680
@metamask-previews/chain-agnostic-permission@1.7.0-preview-eedff6680
@metamask-previews/chomp-api-service@4.0.1-preview-eedff6680
@metamask-previews/claims-controller@0.6.1-preview-eedff6680
@metamask-previews/client-controller@1.0.1-preview-eedff6680
@metamask-previews/client-utils@2.1.1-preview-eedff6680
@metamask-previews/compliance-controller@2.1.0-preview-eedff6680
@metamask-previews/composable-controller@12.0.1-preview-eedff6680
@metamask-previews/config-registry-controller@3.1.0-preview-eedff6680
@metamask-previews/connectivity-controller@0.3.0-preview-eedff6680
@metamask-previews/controller-utils@12.3.0-preview-eedff6680
@metamask-previews/core-backend@9.0.0-preview-eedff6680
@metamask-previews/delegation-controller@3.0.2-preview-eedff6680
@metamask-previews/earn-controller@12.2.6-preview-eedff6680
@metamask-previews/eip-5792-middleware@3.0.5-preview-eedff6680
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-eedff6680
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-eedff6680
@metamask-previews/eth-block-tracker@15.0.1-preview-eedff6680
@metamask-previews/eth-json-rpc-middleware@24.0.1-preview-eedff6680
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-eedff6680
@metamask-previews/foundryup@1.0.1-preview-eedff6680
@metamask-previews/gas-fee-controller@26.3.2-preview-eedff6680
@metamask-previews/gator-permissions-controller@5.0.2-preview-eedff6680
@metamask-previews/geolocation-controller@1.0.0-preview-eedff6680
@metamask-previews/java-tron-up@1.0.0-preview-eedff6680
@metamask-previews/json-rpc-engine@10.5.0-preview-eedff6680
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-eedff6680
@metamask-previews/keyring-controller@27.1.1-preview-eedff6680
@metamask-previews/kyc-controller@0.0.0-preview-eedff6680
@metamask-previews/local-node-utils@1.0.0-preview-eedff6680
@metamask-previews/logging-controller@9.0.0-preview-eedff6680
@metamask-previews/message-manager@14.1.2-preview-eedff6680
@metamask-previews/messenger@2.0.0-preview-eedff6680
@metamask-previews/messenger-cli@0.2.0-preview-eedff6680
@metamask-previews/money-account-api-data-service@0.4.1-preview-eedff6680
@metamask-previews/money-account-balance-service@2.4.3-preview-eedff6680
@metamask-previews/money-account-controller@1.0.0-preview-eedff6680
@metamask-previews/money-account-upgrade-controller@3.0.2-preview-eedff6680
@metamask-previews/money-account-utils@1.1.0-preview-eedff6680
@metamask-previews/multichain-account-service@13.0.2-preview-eedff6680
@metamask-previews/multichain-api-middleware@4.0.3-preview-eedff6680
@metamask-previews/multichain-network-controller@3.2.4-preview-eedff6680
@metamask-previews/multichain-transactions-controller@7.1.2-preview-eedff6680
@metamask-previews/name-controller@9.1.2-preview-eedff6680
@metamask-previews/network-connection-banner-controller@0.2.1-preview-eedff6680
@metamask-previews/network-controller@36.0.0-preview-eedff6680
@metamask-previews/network-enablement-controller@6.0.5-preview-eedff6680
@metamask-previews/notification-services-controller@26.0.1-preview-eedff6680
@metamask-previews/passkey-controller@3.1.0-preview-eedff6680
@metamask-previews/permission-controller@13.1.1-preview-eedff6680
@metamask-previews/permission-log-controller@5.1.0-preview-eedff6680
@metamask-previews/perps-controller@13.0.0-preview-eedff6680
@metamask-previews/phishing-controller@17.4.0-preview-eedff6680
@metamask-previews/platform-api-docs@0.0.0-preview-eedff6680
@metamask-previews/polling-controller@16.0.9-preview-eedff6680
@metamask-previews/preferences-controller@23.1.0-preview-eedff6680
@metamask-previews/profile-metrics-controller@4.0.3-preview-eedff6680
@metamask-previews/profile-sync-controller@29.0.0-preview-eedff6680
@metamask-previews/ramps-controller@20.0.0-preview-eedff6680
@metamask-previews/rate-limit-controller@7.0.1-preview-eedff6680
@metamask-previews/react-data-query@1.0.0-preview-eedff6680
@metamask-previews/remote-feature-flag-controller@6.0.0-preview-eedff6680
@metamask-previews/sample-controllers@5.0.6-preview-eedff6680
@metamask-previews/seedless-onboarding-controller@10.1.1-preview-eedff6680
@metamask-previews/selected-network-controller@26.1.7-preview-eedff6680
@metamask-previews/sentinel-api-service@1.0.1-preview-eedff6680
@metamask-previews/shield-controller@6.0.1-preview-eedff6680
@metamask-previews/signature-controller@39.2.10-preview-eedff6680
@metamask-previews/smart-transactions-controller@25.1.1-preview-eedff6680
@metamask-previews/snap-account-service@2.1.2-preview-eedff6680
@metamask-previews/social-controllers@2.8.0-preview-eedff6680
@metamask-previews/solana-test-validator-up@1.0.0-preview-eedff6680
@metamask-previews/stellar-quickstart-up@0.0.0-preview-eedff6680
@metamask-previews/storage-service@1.0.2-preview-eedff6680
@metamask-previews/subscription-controller@8.0.1-preview-eedff6680
@metamask-previews/transaction-controller@69.6.1-preview-eedff6680
@metamask-previews/transaction-pay-controller@27.0.0-preview-eedff6680
@metamask-previews/user-operation-controller@41.2.9-preview-eedff6680
@metamask-previews/wallet@12.0.2-preview-eedff6680
@metamask-previews/wallet-cli@0.0.0-preview-eedff6680

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant