Skip to content

Conversation

micaelae
Copy link
Member

@micaelae micaelae commented Sep 15, 2025

Explanation

Adds a new selector selectDefaultSlippagePercentage that returns the default slippage for a given chain and token combination

  • Returns 0.5 if requesting a bridge quote
  • Returns undefined (auto) if requesting a Solana swap
  • Returns 0.5 if both tokens are stablecoins (based on dynamic stablecoins list from LD chain config)
  • Returns 2 for all other EVM swaps

Clients can migrate existing slippage default logic and stablecoin config to this selector. Example usage:

const getDefaultSlippage = createSelector(
  [
    (state) => state.metamask,
    (state) => getFromChain(state)?.chainId,
    (state) => getToChain(state)?.chainId,
    (state) => getFromToken(state)?.address,
    (state) => getToToken(state)?.address,
  ],
  (
    controllerStates,
    srcChainId,
    destChainId,
    srcTokenAddress,
    destTokenAddress,
  ) => {
    return selectDefaultSlippagePercentage(controllerStates, {
      srcChainId,
      destChainId,
      srcTokenAddress,
      destTokenAddress,
    });
  },
);

Extension integration PR: MetaMask/metamask-extension#35961

References

Fixes https://consensyssoftware.atlassian.net/browse/SWAPS-2873

Checklist

  • I've updated the test suite for new or updated code as appropriate
  • I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
  • I've communicated my changes to consumers by updating changelogs for packages I've changed, highlighting breaking changes as necessary
  • I've prepared draft pull requests for clients and consumer packages to resolve any breaking changes

@micaelae micaelae requested a review from a team as a code owner September 15, 2025 23:33
cursor[bot]

This comment was marked as outdated.

@micaelae micaelae requested a review from a team as a code owner September 15, 2025 23:41
@micaelae micaelae marked this pull request as draft September 15, 2025 23:42
@micaelae micaelae marked this pull request as ready for review September 16, 2025 00:24
@micaelae
Copy link
Member Author

@metamaskbot publish-preview

@micaelae micaelae enabled auto-merge (squash) September 16, 2025 00:30
Copy link
Contributor

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/account-tree-controller": "0.15.1-preview-8029191",
  "@metamask-previews/accounts-controller": "33.1.0-preview-8029191",
  "@metamask-previews/address-book-controller": "6.1.1-preview-8029191",
  "@metamask-previews/announcement-controller": "7.0.3-preview-8029191",
  "@metamask-previews/app-metadata-controller": "1.0.0-preview-8029191",
  "@metamask-previews/approval-controller": "7.1.3-preview-8029191",
  "@metamask-previews/assets-controllers": "75.0.0-preview-8029191",
  "@metamask-previews/base-controller": "8.3.0-preview-8029191",
  "@metamask-previews/bridge-controller": "43.0.0-preview-8029191",
  "@metamask-previews/bridge-status-controller": "43.0.0-preview-8029191",
  "@metamask-previews/build-utils": "3.0.3-preview-8029191",
  "@metamask-previews/chain-agnostic-permission": "1.1.1-preview-8029191",
  "@metamask-previews/composable-controller": "11.0.0-preview-8029191",
  "@metamask-previews/controller-utils": "11.12.0-preview-8029191",
  "@metamask-previews/delegation-controller": "0.7.0-preview-8029191",
  "@metamask-previews/earn-controller": "7.0.0-preview-8029191",
  "@metamask-previews/eip-5792-middleware": "1.1.0-preview-8029191",
  "@metamask-previews/eip1193-permission-middleware": "1.0.0-preview-8029191",
  "@metamask-previews/ens-controller": "17.0.1-preview-8029191",
  "@metamask-previews/error-reporting-service": "2.0.0-preview-8029191",
  "@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-8029191",
  "@metamask-previews/foundryup": "1.0.1-preview-8029191",
  "@metamask-previews/gas-fee-controller": "24.0.0-preview-8029191",
  "@metamask-previews/gator-permissions-controller": "0.1.0-preview-8029191",
  "@metamask-previews/json-rpc-engine": "10.0.3-preview-8029191",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-8029191",
  "@metamask-previews/keyring-controller": "23.1.0-preview-8029191",
  "@metamask-previews/logging-controller": "6.0.4-preview-8029191",
  "@metamask-previews/message-manager": "12.0.2-preview-8029191",
  "@metamask-previews/messenger": "0.2.0-preview-8029191",
  "@metamask-previews/multichain-account-service": "0.8.0-preview-8029191",
  "@metamask-previews/multichain-api-middleware": "1.0.0-preview-8029191",
  "@metamask-previews/multichain-network-controller": "0.12.0-preview-8029191",
  "@metamask-previews/multichain-transactions-controller": "5.0.0-preview-8029191",
  "@metamask-previews/name-controller": "8.0.3-preview-8029191",
  "@metamask-previews/network-controller": "24.1.0-preview-8029191",
  "@metamask-previews/network-enablement-controller": "1.1.0-preview-8029191",
  "@metamask-previews/notification-services-controller": "18.1.0-preview-8029191",
  "@metamask-previews/permission-controller": "11.0.6-preview-8029191",
  "@metamask-previews/permission-log-controller": "4.0.0-preview-8029191",
  "@metamask-previews/phishing-controller": "13.1.0-preview-8029191",
  "@metamask-previews/polling-controller": "14.0.0-preview-8029191",
  "@metamask-previews/preferences-controller": "19.0.0-preview-8029191",
  "@metamask-previews/profile-sync-controller": "25.0.0-preview-8029191",
  "@metamask-previews/rate-limit-controller": "6.0.3-preview-8029191",
  "@metamask-previews/remote-feature-flag-controller": "1.7.0-preview-8029191",
  "@metamask-previews/sample-controllers": "1.0.0-preview-8029191",
  "@metamask-previews/seedless-onboarding-controller": "4.0.0-preview-8029191",
  "@metamask-previews/selected-network-controller": "24.0.0-preview-8029191",
  "@metamask-previews/shield-controller": "0.1.2-preview-8029191",
  "@metamask-previews/signature-controller": "33.0.0-preview-8029191",
  "@metamask-previews/subscription-controller": "0.0.0-preview-8029191",
  "@metamask-previews/token-search-discovery-controller": "3.3.0-preview-8029191",
  "@metamask-previews/transaction-controller": "60.3.0-preview-8029191",
  "@metamask-previews/user-operation-controller": "39.0.0-preview-8029191"
}

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.

2 participants