Configuration
This page details your widget configuration options. Tweak it to fit your exact user experience needs!
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, onlyamountIn
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.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.
customGasAmount
: Gas amount for CosmosSDK chain transactions. Default:300_000
.slippage
: Default slippage percentage (0-100) for CosmosSDK chain swaps. Default:1
.
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
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.
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., fromviem
). -
getSvmSigner(): Promise<PhantomWalletAdapter>
Returns a Solana-compatible signer, such as aPhantomWalletAdapter
.
Complete Example for injected wallet functionality: