Use @circle-fin/app-kit
to bridge USDC from Ethereum Sepolia to Arc Testnet with a browser wallet and
the viem adapter.
This Vite + TypeScript page connects an EIP-6963 wallet (for example MetaMask),
creates a Circle adapter from the provider, then calls bridge() and
retryBridge() when needed.
- Node.js 22 or later
- An EIP-6963 browser wallet such as MetaMask
- Testnet USDC on Ethereum Sepolia
- Native gas token on Ethereum Sepolia for the wallet transaction
This project does not require environment variables or API keys.
npm install
npm run devOpen the local Vite URL in a browser with your wallet installed.
npm run build- Discovers an EIP-6963 browser wallet and requests account access.
- Creates a viem adapter with
createViemAdapterFromProvider(). - Bridges 1 USDC from
Ethereum_SepoliatoArc_Testnetwithkit.bridge(). - Retries with
kit.retryBridge()if the result state is"error". - Streams App Kit action events into the on-page output panel.
src/main.ts— wallet connect, adapter creation, bridge, and retry. Changefrom/tochain,amount, and optionaltokenin the bridge call for different chains, amounts, or tokens.
This sample defaults to USDC. To bridge a
non-USDC token, pass
token on the same kit.bridge() call in src/main.ts — for example
token: "EURC" (also "wETH", "cirBTC", or a configured asset's
tokenId). Fund the source wallet with that token. amount stays a
human-readable decimal string (EURC uses 6 decimals, cirBTC 8, wETH 18).
Both chains must support CCTP for non-USDC, and the token must be configured on both. Check supported blockchains and tokens.