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

# Integrate Embedded Wallets with the Soneium 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 [Soneium](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 Soneium

**Mainnet**

- **Chain ID:** 0x74c
- **Public RPC URL:** `https://mainnet-rpc.soneium.org`
- **Display Name:** Soneium Mainnet
- **Block Explorer Link:** `https://mainnet-explorer.soneium.org`
- **Ticker:** ETH
- **Ticker Name:** Ethereum

**Minato Testnet**

- **Chain ID:** 0x79a
- **Public RPC URL:** `https://testnet-rpc.soneium.org`
- **Display Name:** Soneium Minato Testnet
- **Block Explorer Link:** `https://testnet-explorer.soneium.org`
- **Ticker:** ETH
- **Ticker Name:** Ethereum

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

```
