> ## Documentation Index
> Fetch the complete documentation index at: https://docs.polygon.technology/llms.txt
> Use this file to discover all available pages before exploring further.

# React Native SDK quickstart

> Install the React Native OMS Wallet SDK, authenticate a wallet, and send a test transaction.

This quickstart creates one wallet client, signs in with email OTP, and submits a zero-value transaction on Polygon Amoy.

## Install the SDK

The SDK supports React Native 0.85 or newer with React 19.2 or newer. Android requires `minSdk 24`, `compileSdk 36`, Java 17, and Android 10 or newer at runtime. iOS requires deployment target 15 or newer and Xcode 26.

<Tabs>
  <Tab title="Bare React Native">
    ```bash theme={null}
    npm install @polygonlabs/oms-wallet-react-native
    npx pod-install
    ```

    React Native autolinking connects the Android and iOS modules.
  </Tab>

  <Tab title="Expo">
    ```bash theme={null}
    npx expo install @polygonlabs/oms-wallet-react-native
    npx expo prebuild
    npx expo run:ios
    # or: npx expo run:android
    ```

    Use Expo SDK 56 and a development build or EAS Build. The package contains native code, so it does not run in Expo Go. It does not require an SDK config plugin.
  </Tab>
</Tabs>

React Native Web is not supported.

## Create the client

Create exactly one `OMSWallet` instance and reuse it for the lifetime of the app. Constructing another instance replaces the native client behind the first instance.

```typescript wallet.ts theme={null}
import { OMSWallet } from '@polygonlabs/oms-wallet-react-native'

export const omsWallet = new OMSWallet({
  publishableKey: 'YOUR_PUBLISHABLE_KEY',
})
```

Use `omsWallet.wallet` for authenticated wallet operations. Use the independent `omsWallet.indexer` client for read-only balance and history queries.

## Authenticate with email

Request a one-time code, then complete authentication with the code entered by the user:

```typescript theme={null}
await omsWallet.wallet.startEmailAuth({
  email: 'user@example.com',
})

const { walletAddress } = await omsWallet.wallet.completeEmailAuth({
  code: '123456',
})

console.log('Active wallet:', walletAddress)
```

Automatic wallet selection is the default. The result is a completed wallet session for the selected wallet.

## Send a test transaction

Wallet writes require the active session created above. Use a value in raw base units and an exported network:

```typescript theme={null}
import { Networks } from '@polygonlabs/oms-wallet-react-native'

const transaction = await omsWallet.wallet.sendTransaction({
  network: Networks.amoy,
  to: '0x1111111111111111111111111111111111111111',
  value: '0',
})

console.log(transaction.status, transaction.txnHash ?? transaction.txnId)
```

The method prepares, executes, and waits for transaction status by default. See [send transactions](/wallets/sdk/react-native/send-transactions) for fee selection and polling controls.

Continue with [authentication](/wallets/sdk/react-native/authentication) for native provider ID tokens, redirects, and manual wallet selection. See [send transactions](/wallets/sdk/react-native/send-transactions) for contract calls, fee behavior, and status handling.
