Skip to main content
Visual Configuration Tool: Want to see how your configuration options look before implementing them? Try studio.skip.build - our interactive widget builder that lets you customize themes, assets, routes, and more with a live preview.

Component Props

The Widget component accepts the following props.

defaultRoute

Customizes the initial route displayed on widget load. Query supported assets using the Skip Go API /assets endpoint. Setting this triggers a route request on render.
  • amountIn: Preset input amount for exact amount in request.
  • amountOut: Preset output amount for exact amount out request. If both specified, only amountIn is used.
  • srcChainId : Source chain ID.
  • srcAssetDenom: Source asset denomination.
  • destChainId: Destination chain ID.
  • destAssetDenom: Destination asset denomination.

routeConfig

Customizes enabled route types.
  • allowMultiTx: Allow multi-transaction routes. Default: true.
  • allowUnsafe: Allow unsafe routes. Default: false. More info.
  • bridges: Restrict routing to specific bridges. Default: empty (all bridges).
  • swapVenues: Restrict routing to specific swap venues. Default: empty (all venues).
  • goFast: Enable Go Fast transfers. Default: false. More info.
  • experimentalFeatures: Array of experimental features to enable. Include 'eureka' to enable routing with Eureka assets.
  • smartSwapOptions: Advanced swapping features like EVM Swaps and split trade routes. More info.

batchSignTxs

Controls whether all transactions in a multi-transaction route should be signed upfront or individually as they are executed.
  • Default: true
  • When enabled, all transactions in the route will be requested for signature at the beginning of the execution. They will then be broadcast one by one in sequence.
  • When disabled, each transaction will be signed individually just before it is broadcast.
Example scenario with batchSignTxs: true: For a route: Solana → Noble → Cosmos (3 transactions requiring signatures)
  • All 3 transactions will be prompted for signature upfront
  • After signing, they will be broadcast sequentially: Solana first, then Noble, then Cosmos
EVM Transaction Limitation: If an EVM transaction appears as the second or later transaction in a route, batch signing cannot be performed upfront. In such cases, the EVM transaction and any subsequent transactions will need to be signed individually when they are ready to be executed.

filter

Key value pair of chainIds or specific asset denoms allowed on source and destination assets
Example:

filterOut

Opposite of filter. Key value pair of chainIds not allowed or specific asset denoms not allowed
Example:

settings

Sets defaults for user-customizable settings.
  • slippage: Default slippage percentage (0-100) for CosmosSDK chain swaps. Default: 1.
  • useUnlimitedApproval: Set the EVM allowance to the max amount when an approval is required. Default: false.

onlyTestnet

onlyTestnet: Boolean to show only testnet data. Default: false (mainnet data only).

endpointOptions

Override default Skip proxied endpoints. Whitelisting required, reach out here.

apiUrl

String to override default Skip Go API proxied endpoints. Whitelisting required, reach out here.

brandColor

Customizes the main highlight color of the widget

borderRadius

Controls the corner roundness of cards and buttons in the widget. This is not a top-level prop — set it under theme via theme.borderRadius.

theme

Advanced widget appearance customization options

chainIdsToAffiliates

Define fees per chain and recipient addresses.
Total basisPointsFee must be consistent across chains. Addresses must be valid for respective chains.

enableSentrySessionReplays

Enables sentry session replays on the widget to help with troubleshooting errors. Default: false.

enableAmplitudeAnalytics

Enable Amplitude analytics for the widget to improve user experience. Default: false.

disableShadowDom

Disables shadow dom, useful if there are issues with libraries not supporting shadow-dom or for enabling server side rendering Default: false. (shadow dom is enabled by default to avoid styling conflicts/issues)

hideAssetsUnlessWalletTypeConnected

Filters assets based on connected wallet types (currently only supports Sei Cosmos/EVM). Added in v3.7.3. Default: false.

assetSymbolsSortedToTop

Prioritizes assets by recommended symbol when their pinning, search-match, and balance priorities are equal. Symbols are ordered as listed. To pin an asset above search matches and balances, use assetAnnotations with selector.pinToTop instead.

assetAnnotations

Render a per-asset annotation (badge / description / highlight / pin-to-top), keyed by recommended symbol.
  • variant: color of the badge / description / highlight. info uses the brand color, warning and error use the theme’s warning/error colors.
  • swapPage.label: renders a badge on the swap page (source and destination rows).
  • selector.description: detail line under the asset name in the token selector.
  • selector.pinToTop: pins the asset to the very top of the token selector (above balances, and above search matches).
Example:

filterOutUnlessUserHasBalance

Like filterOut, but the assets/chains are only hidden unless the user holds a balance of them.

walletConnect

WalletConnect configuration used for wallet connections.

simulate

Whether the widget simulates transactions before executing the route to validate gas and balances.
  • Default: true

rootId

If specified, adds a data-root-id attribute to all root elements of the widget (including portals), useful for document.querySelector or scoped styling.

modalZIndex

Custom z-index for the widget’s modals.
  • Default: 10

skipExplorerUrl

Base URL of the Skip explorer that transaction history links point to.
  • Default: https://explorer.skip.build

callbacks

Event handling functions.
  • onWalletConnected: Called when a wallet is connected.
  • onWalletDisconnected: Called when a wallet is disconnected.
  • onTransactionBroadcasted: Called when a transaction is broadcasted. This is called multiple times for multi-transaction routes.
  • onTransactionComplete: Triggered when a transaction is completed.
  • onTransactionFailed: Triggered when a transaction fails.

connectedAddresses & signers

If your application has already connected to a user’s wallet (e.g., via MetaMask for EVM networks, Phantom for Solana, or Keplr for Cosmos), you must provide both the connectedAddresses and corresponding signer functions in order to enable the widget’s injected wallet functionality. See an implementation example here. WalletClient comes from the viem package. Adapter comes from the @solana/wallet-adapter-base package. And OfflineSigner comes from the @cosmjs package.
  • Type: Record<ChainId, Address>
Example:

Signer Functions

Each signer function below must be implemented to fully leverage the injected wallet capabilities:
  • getCosmosSigner(): Promise<OfflineSigner> Returns a Cosmos-compatible signer.
  • getEvmSigner(): Promise<WalletClient> Returns an EVM-compatible signer (e.g., from viem).
  • getSvmSigner(): Promise<PhantomWalletAdapter> Returns a Solana-compatible signer, such as a PhantomWalletAdapter.
Complete Example for injected wallet functionality: