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

# Integrate Embedded Wallets with the Moonbeam 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 [Moonbeam](https://ethereum.org/) 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 Moonbeam

**Mainnet**

- **Chain ID:** 0x504
- **Public RPC URL:** `https://rpc.api.moonbeam.network`
- **Display Name:** Moonbeam Mainnet
- **Block Explorer Link:** `https://moonbeam.moonscan.io`
- **Ticker:** GLMR
- **Ticker Name:** Glimmer

**Moonbase Alpha Testnet**

- **Chain ID:** 0x507
- **Public RPC URL:** `https://rpc.api.moonbase.moonbeam.network`
- **Display Name:** Moonbase Alpha Testnet
- **Block Explorer Link:** `https://moonbase.moonscan.io`
- **Ticker:** `DEV`
- **Ticker Name:** `DEV` Token

## 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',
})

```
