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
TheWidget 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, onlyamountInis 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.
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
filterOut
Opposite of filter.
Key value pair of chainIds not allowed or specific asset denoms not allowed
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.infouses the brand color,warninganderroruse 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).
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>
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., fromviem). -
getSvmSigner(): Promise<PhantomWalletAdapter>Returns a Solana-compatible signer, such as aPhantomWalletAdapter.