For AI agents: a documentation index is available at /llms.txt. A markdown version of this page is available at the same URL with .md appended (or via Accept: text/markdown).
Skip to main content

Integrate Embedded Wallets with the Hedera Blockchain in React Native

While using the Embedded Wallets React Native SDK, you get a EIP1193 provider, similar to the MetaMask Provider. Use it with libraries such as viem or ethers to make Hedera blockchain calls like getting the user's account, fetching balance, sign transaction, send transaction, read from and write to the smart contract, etc.

Chain details for Hedera​

  • Chain ID: 0x127
  • Public RPC URL: https://mainnet.hashio.io/api
  • Display Name: Hedera Mainnet
  • Block Explorer Link: https://hashscan.io/mainnet
  • Ticker: HBAR
  • Ticker Name: Hedera

Installation​

Use any EIP-1193 compatible library with the provider from the SDK. These examples use viem:

npm install viem

To use Wagmi hooks instead, see Ethereum hooks (Wagmi).

Initialize​

Set up the SDK as described in Get started, with the chain configured on the dashboard or in web3AuthOptions.chains. After sign-in, read the EIP-1193 provider from useWeb3Auth().connection and create viem clients:

import { useWeb3Auth } from '@web3auth/react-native-sdk'
import { createPublicClient, createWalletClient, custom } from 'viem'

const { connection } = useWeb3Auth()

// Call after the user signs in (isConnected is true)
const transport = custom(connection!.ethereumProvider!)
const walletClient = createWalletClient({ transport })
const publicClient = createPublicClient({ transport })

Get account​

const [address] = await walletClient.getAddresses()

Get balance​

import { formatEther } from 'viem'

const [address] = await walletClient.getAddresses()
const balance = formatEther(await publicClient.getBalance({ address }))

Send transaction​

import { parseEther } from 'viem'

const [account] = await walletClient.getAddresses()

const hash = await walletClient.sendTransaction({
account,
to: '0x40e1c367Eca34250cAF1bc8330E9EddfD403fC56',
value: parseEther('0.001'),
chain: null, // use the provider's active chain
})

const receipt = await publicClient.waitForTransactionReceipt({ hash })

Sign a message​

const [account] = await walletClient.getAddresses()

const signature = await walletClient.signMessage({
account,
message: 'YOUR_MESSAGE',
})