whisk

Introduction

A React widget for sending and bridging USDC, built on Circle App Kit.

Whisk is a React component you drop into a page so people can send USDC. Once it's mounted, they can pay anyone with a wallet, on any chain Circle App Kit supports, with or without a bridge in the middle. You don't have to think about wagmi configs, CCTP step ordering, or which RPC speaks Solana; Whisk handles all of that behind the component.

app/page.tsx
import {
  WhiskProvider,
  WhiskSend,
  createWhiskConfig,
  evm,
} from "@usewhisk/react";
import "@usewhisk/react/styles.css";

const config = createWhiskConfig({
  wallets: [evm({ projectId: process.env.WALLETCONNECT_PROJECT_ID! })],
  chains: ["Arc_Testnet", "Base_Sepolia"],
});

export default function Page() {
  return (
    <WhiskProvider config={config}>
      <WhiskSend />
    </WhiskProvider>
  );
}

Save the file. Open the page. That's the entire integration. Connect a wallet, type an address, type an amount, hit send. If the destination is a different chain than the source, Whisk routes through CCTP; if it's the same chain, it skips the bridge.

Two packages

@usewhisk/react ships the components, hooks, and provider. @usewhisk/core ships the engine that drives them; pure TypeScript, no React import. The React package re-exports the few helpers most apps need (chainInfo, composeResolvers, WhiskError subclasses), so you almost never have to import from core directly.

What it does that you don't have to

A note on status

Whisk is live on 17 testnets today. Mainnet is in progress. If you're building toward production, build against testnet first. The API won't change between testnet and mainnet, only the chain identifiers you put in createWhiskConfig.

Where to start

On this page