- Browser wallet
- Circle Wallets
Use this flow to send USDC with a connected browser wallet. The example uses Arc
Testnet.Create a 2.1. Discover a browser wallet with
3.1. Call
This is the only App Kit-specific send call you need after the wallet is
connected:
Prerequisites
Before you begin, ensure that you’ve:- Installed Node.js v22+.
- Installed a browser wallet such as MetaMask and added the Arc Testnet network.
- Funded your wallet with testnet USDC from the Circle Faucet.
Step 1. Set up the project
1.1. Create the project and install dependencies
Create a new directory, install the App Kit packages, and add local browser demo tooling:Shell
1.2. Configure TypeScript (optional)
This step is optional. It helps prevent missing types in your IDE or editor.
tsconfig.json file configured for ESM and Node:Shell
Step 2. Connect a browser wallet
This step shows the core browser wallet integration flow: discover anEIP-6963 provider, create an App
Kit adapter from the selected provider, and pass that adapter into an App Kit
SDK method.The snippets below keep wallet discovery, wallet connection, and adapter setup
in small helper functions for readability.2.1. Discover a browser wallet with EIP-6963
This pattern is standards-based. The example uses MetaMask as the selected
wallet, but the discovery flow works with any wallet that announces an
EIP-6963 provider.TypeScript
2.2. Connect the wallet and request account access
After you select a provider, request account access before calling an App Kit SDK method. This should happen in a user-triggered action such as aConnect wallet button.TypeScript
2.3. Create a Viem adapter from the selected wallet provider
Use the discovered provider to request account access, then create the App Kit adapter that signs transactions in the browser:TypeScript
Step 3. Send USDC
3.1. Call kit.send()
This is the only App Kit-specific send call you need after the wallet is
connected:TypeScript
Using another
token or
blockchain? Change the
token and
chain values in kit.send() and ensure the connected wallet holds enough
funds to complete the transfer.3.2. Verify the transaction
Afterkit.send() resolves, inspect the returned result. Use the transaction
explorer URL to verify the amount and recipient on the blockchain.The following is an example of how the result of a successful send might look in
the browser console. The values are used in this example only and are not a real
transaction:Shell