WalletKit prompts the user to review all transactions in the batch before signing. It displays details of each transaction and any expected changes in assets. The user can then sign the transaction using their 6-digit pin.

Batching is available for Smart Wallets and each batched transaction is broadcasted on-chain as a single transaction.

import { useWalletKitLink } from "@walletkit/react-link";
import { parseUnits } from "viem";

export function App() {
  const walletKit = useWalletKitLink();
  const [hash, setHash] = useState("");

  const sendTransaction = async () => {
    const hash = await walletKit.signAndSendTransactions([
      {
        abi: erc20ABI,
        address: USDC_ADDRESS,
        functionName: "approve",
        args: [
          "0x000000000000000000000000000000000000dead",
          parseUnits("5", 6),
        ],
      },
      {
        abi: erc20ABI,
        address: USDC_ADDRESS,
        functionName: "transfer",
        args: [
          "0x000000000000000000000000000000000000dead",
          parseUnits("5", 6),
        ],
      },
    ]);
    setHash(hash);
  };

  return (
    <div>
      <button onClick={() => sendTransaction()}>Send Transaction</button>
      {hash ? <div>Transaction: {hash}</div> : null}
    </div>
  );
}