Both the Skip Router SDK (@skip-router/core) and Skip Go Core (@skip-go/core) are deprecated. Please migrate to Skip Go Client (@skip-go/client), our actively maintained client package.

@skip-go/client v1.0.0

Breaking changes

This section details the migration from previous versions to the latest @skip-go/client.

No More SkipClient Class

The SkipClient class has been removed. Instead, import and use individual functions directly:

Example import
import {
  assets,
  assetsBetweenChains,
  assetsFromSource,
  recommendAssets,
  bridges,
  balances,
  chains,
  venues,
  ibcOriginAssets,
  route,
  messages,
  messagesDirect,
  submitTransaction,
  trackTransaction,
  transactionStatus,
  executeRoute,
  setClientOptions,
  setApiOptions,
} from '@skip-go/client';

Initialization Changes

If not using executeRoute:

  • Call setApiOptions({ apiUrl, apiKey }) once at initialization.
  • Alternatively, pass apiUrl and apiKey as arguments to each individual API function call.

If using executeRoute:

  • Call setClientOptions() with the same options object previously passed to the SkipClient constructor.
  • Exception: getCosmosSigner, getEVMSigner, and getSVMSigner have been removed from setClientOptions. These signer functions are now passed directly to executeRoute when needed.
  • Renamed: getEVMSigner is now getEvmSigner, and getSVMSigner is now getSvmSigner.
Example migration
- const client = new SkipClient(options);
+ setClientOptions(options); // Only if using executeRoute

- client.chains();
+ chains(); // Assuming apiUrl/apiKey were set via setApiOptions or passed in

Build Format Change

The library build format has changed from CommonJS (CJS) to ES Modules (ESM).

This change enables better tree-shaking, leading to significantly smaller bundle sizes for applications that don’t use all the library’s features.

If you’re not using executeRoute, your final bundle size should decrease dramatically (e.g., from ~5MB to potentially ~7KB for a single API function usage), assuming tree-shaking is enabled in your bundler.

Axios Removed

axios is no longer a dependency. All API calls now utilize the standard window.fetch API internally.

CamelCase Update

All property names in API responses and configuration objects now strictly adhere to camelCase.

Examples:

BeforeAfter
chainIDchainId
apiURLapiUrl
logoURIlogoUri
asset.isCW20asset.isCw20

Named parameter enforcement for API functions

Some methods now require named parameters or an options object instead of positional arguments:

recommendAssets

Old:

await client.recommendAssets(request);
// OR
await client.recommendAssets([request1, request2]);

New:

await recommendAssets({ requests: [request1, request2] });

Wrap the array in a { requests: [...] } object.

ibcOriginAssets

Old:

await client.ibcOriginAssets(assets);

New:

await ibcOriginAssets({ assets: [asset1, asset2] });

Wrap the assets array in a { assets: [...] } object.

getFeeInfoForChain

Parameters for getFeeInfoForChain should now be passed as an object.

Old:

await client.getFeeInfoForChain(chainID);

New:

import { getFeeInfoForChain } from '@skip-go/client'; // Assuming setApiOptions was called

await getFeeInfoForChain({ chainId: chainID });
// Or, if not using setApiOptions globally for apiUrl/apiKey:
// await getFeeInfoForChain({ chainId: chainID, apiUrl: YOUR_API_URL, apiKey: YOUR_API_KEY });

getRecommendedGasPrice

Parameters for getRecommendedGasPrice should now be passed as an object.

Old:

await client.getRecommendedGasPrice(chainID);

New:

import { getRecommendedGasPrice } from '@skip-go/client'; // Assuming setApiOptions was called

await getRecommendedGasPrice({ chainId: chainID });
// Or, if not using setApiOptions globally for apiUrl/apiKey:
// await getRecommendedGasPrice({ chainId: chainID, apiUrl: YOUR_API_URL, apiKey: YOUR_API_KEY });
@skip-router/core v4.0.0

Breaking changes

  • Removed clientID param in SkipClient
  • Added apiKey param in SkipClient
  • Added requiredChainAddresses in SkipClient.route response
  • Added smartSwapOptions in SkipClient.routerequest
Type signature
smartSwapOptions: {
	splitRoutes: boolean
}
@skip-router/core v3.0.0

Breaking changes

  • Changed parameter type of userAddresses from a map of chainIDs to addresses to an array of UserAddress types
Type signature
export interface UserAddress {
  chainID: string;
  address: string;
}
@skip-router/core v2.0.0

Breaking changes

  • Removed SkipClient.executeMultiChainMessage method
  • Renamed SkipClient.getGasAmountForMessage method to SkipClient.getCosmosGasAmountForMessage
  • Renamed SkipClient.getFeeForMessage to SkipClient.getCosmosFeeForMe
  • Renamed MultiChainMsg type to CosmosMsg
  • Renamed and changed parameters of SkipClient.executeMultiChainMsgs to SkipClient.executeTxs
Diff
const client = new SkipClient({
  apiURL: SKIP_API_URL,
// ... rest of your configs
});
- client.executeMultiChainMsgs({
+ client.executeTxs({
	...options
-	msgs: types.Msg[]
+	txs: types.Tx[]
})
  • Param of SkipClient.executeCosmosMessage changed from message:MultiChainMsg to messages: CosmosMsg[]
Diff
const client = new SkipClient({
  apiURL: SKIP_API_URL,
// ... rest of your configs
});
client.executeCosmosMessage({
	...options
-	message: MultiChainMsg
+	messages: CosmosMsg[]
})