Use this file to discover all available pages before exploring further.
Learn how to use Reown AppKit for essential wallet functionalities such as signing messages, sending transactions, and retrieving wallet balances.In this recipe, you will learn how to:
Retrieve the balance of the connected wallet
Sign a message using a connected wallet
Send a transaction to the EVM blockchain
This guide takes approximately 20 minutes to complete.Let’s dive in!
In this guide we are going to use the library Ethers to make calls to the blockchain and to interact with the wallet.To get the balance, sign a message and send a transaction follow the same steps in each operation:
Start by importing the BrowserProvider object, some AppKit hooks to get the account information, chain id and the Provider.
import { useAppKitAccount, useAppKitProvider, useAppKitNetworkCore, type Provider,} from "@reown/appkit/react";import { BrowserProvider, JsonRpcSigner, formatEther, parseUnits,} from "ethers";
Use the useAppKitAccount hook to retrieve the user’s address and check if they are connected. The useAppKitNetworkCore hook to get the chain id and the useAppKitProvider hook to get the wallet provider.
// AppKit hook to get the address and check if the user is connectedconst { address, isConnected } = useAppKitAccount();// AppKit hook to get the chain idconst { chainId } = useAppKitNetworkCore();// AppKit hook to get the wallet providerconst { walletProvider } = useAppKitProvider<Provider>("eip155");
Fetching a user’s balance is straightforward using the BrowserProvider object from ethers.
Create a function to fetch and display (in console) the balance when triggered
// function to get the balanceconst handleGetBalance = async () => { const provider = new BrowserProvider(walletProvider, chainId); const balance = await provider.getBalance(address); const eth = formatEther(balance); console.log(`${eth} ETH`);};
Finally, to call the function you can show the button in a component when isConnected is true
To raise the modal to sign a message with your wallet. You can follow with these steps:
Generate the function to raise the modal to sign the message
// function to sing a msgconst handleSignMsg = async () => { // create the provider and signer const provider = new BrowserProvider(walletProvider, chainId); const signer = new JsonRpcSigner(provider, address); // sign the message const signature = await signer?.signMessage("Hello Reown AppKit!"); // log the signature console.log(signature);};
In order to raise the modal to sign and send a transaction with your wallet. You can follow with these steps:
Create the test transaction
// test transactionconst TEST_TX = { to: "0xd8da6bf26964af9d7eed9e03e53415d37aa96045" as Address, // vitalik address value: parseUnits('0.0001', 'gwei')}
Generate the function to raise the modal to send the transaction
// function to send a TXconst handleSendTx = async () => { // create the provider and signer const provider = new BrowserProvider(walletProvider, chainId); const signer = new JsonRpcSigner(provider, address); // send the transaction const tx = await signer.sendTransaction(TEST_TX); // log the transaction console.log(tx);};
By following this guide, you’ve learned how to integrate Reown AppKit and Ethers in your React application to perform essential wallet operations.
You can now fetch wallet balances, sign messages, and send transactions seamlessly in an EVM-compatible blockchain environment.Keep exploring AppKit to enhance your dApp’s functionality and user experience!