> For the complete documentation index, see [llms.txt](/llms.txt).

# Integrate Embedded Wallets with the Arc Blockchain in React Native

While using the Embedded Wallets React Native SDK, you get a [EIP1193](https://eips.ethereum.org/EIPS/eip-1193) provider, similar to the [MetaMask Provider](/metamask-connect/evm/reference/provider-api/). Use it with libraries such as [viem](https://viem.sh) or [ethers](https://docs.ethers.org/v6/) to make [Arc](https://www.arc.io/) 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 Arc

note

Arc uses USDC as its native gas token. Native balances (`eth_getBalance`, `msg.value`) use 18 decimals; the [USDC ERC-20 interface](https://docs.arc.io/arc/references/contract-addresses#usdc)at `0x3600000000000000000000000000000000000000` uses 6 decimals. Both share one balance. See [EVM differences](https://docs.arc.io/arc/references/evm-differences)and [Add Arc to a wallet](https://docs.arc.io/integrate/wallets/add-arc-to-a-wallet).

**Testnet**

- **Chain ID:** 0x4CEF52 (5042002)
- **Public RPC URL:** `https://rpc.testnet.arc.io`
- **Display Name:** Arc Testnet
- **Block Explorer Link:** `https://testnet.arcscan.app`
- **Ticker:** USDC
- **Ticker Name:** USDC

## Installation

Use any [EIP-1193](https://eips.ethereum.org/EIPS/eip-1193) compatible library with the provider from the SDK. These examples use [viem](https://viem.sh):

**npm**

```bash
npm install viem

```

**Yarn**

```bash
yarn add viem

```

**pnpm**

```bash
pnpm add viem

```

**Bun**

```bash
bun add viem

```

To use Wagmi hooks instead, see [Ethereum hooks (Wagmi)](/embedded-wallets/sdk/react-native/ethereum-hooks/).

## Initialize

Set up the SDK as described in [Get started](/embedded-wallets/sdk/react-native/), 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:

```tsx
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

```tsx
const [address] = await walletClient.getAddresses()

```

## Get balance

```tsx
import { formatEther } from 'viem'

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

```

## Send transaction

```tsx
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

```tsx
const [account] = await walletClient.getAddresses()

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

```
