Recommended: JavaScript SDK for React Native
While this SDK is still supported, we recommend using newer JavaScript SDK, which is optimized for React Native, but also comes with a host of other benefits.
Check if a wallet is an Ethereum wallet
const wallet = dynamicClient.wallets.primary
if (!wallet) {
throw new Error('Wallet is not found')
}
if (wallet.chain !== 'EVM') {
throw new Error('Wallet is not a EVM wallet')
}
```
### Read only actions/Viem Public Client
If you want to read data from the blockchain, you will want a ["Public Client"](https://viem.sh/docs/clients/public.html) (Viem terminology)
<CodeGroup>
```typescript createClient.ts
import { ViemExtension } from '@dynamic-labs/legacy-viem-extension'
export const dynamicClient = createClient({
environmentId: 'YOUR-ENVIRONMENT-ID',
}).extend(ViemExtension())
```
```typescript fetchViemPublicClient.ts
import { mainnet } from 'viem/chains'
const publicViemClient = dynamicClient.viem.createPublicClient({ chain: mainnet })
```
</CodeGroup>
### Write actions/Viem Wallet Client
If you want to write data to the blockchain, you will need a ["Wallet Client"](https://viem.sh/docs/clients/wallet.html) (Viem terminology), or a ["Signer"](https://docs.ethers.io/v5/api/signer/) (Ethers terminology). Both allow you to sign transactions with the private key.
<CodeGroup>
```typescript dynamicClient.ts
import { createClient } from '@dynamic-labs/legacy-client'
import { ViemExtension } from '@dynamic-labs/legacy-viem-extension'
export const dynamicClient = createClient({
environmentId: 'YOUR-ENVIRONMENT-ID',
}).extend(ViemExtension())
```
```typescript fetchViemWalletClient.ts
import { dynamicClient } from './dynamicClient';
const walletViemClient = dynamicClient.viem.createWalletClient({
wallet: dynamicClient.wallets.primary,
})
```
</CodeGroup>
## Send multiple transactions atomically
If you want to send multiple transactions atomically, you can use the `sendCalls` method. This requires the wallet to support EIP-5792.
Coming soon.
## Examples
We've included a few examples of how to use the EVM wallet connector in this section:
- [Get balance for all connected wallets](/react-native/wallets/using-wallets/evm/get-balance-for-all-wallets)
- [Get balance for a single wallet](/react-native/wallets/using-wallets/evm/get-wallet-balance)
- [Send a transaction](/react-native/wallets/using-wallets/evm/send-a-transaction)
- [Send balance using embedded wallet](/react-native/wallets/using-wallets/general/send-balance)
- [Sign a message](/react-native/wallets/using-wallets/evm/sign-a-message)