> ## 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.

# OMS Wallet SDKs

> Choose an OMS Wallet SDK for a web, React Native, iOS, or Android application.

OMS Wallet SDKs provide the same wallet model across TypeScript, React Native, Swift, and Kotlin. Choose the SDK for your application runtime, then follow that SDK's quickstart and workflow pages.

## SDK model

Create one `OMSWallet` entry point from your publishable key. It exposes two clients:

| Client    | Responsibility                                                                           | Active wallet session required                  |
| --------- | ---------------------------------------------------------------------------------------- | ----------------------------------------------- |
| `wallet`  | Authentication, wallet selection, sessions, transactions, signing, and access management | Yes for operations that use the selected wallet |
| `indexer` | Balances and transaction history for an address                                          | No                                              |

Authentication establishes a credential. Automatic wallet selection then selects or creates a smart contract account and starts the active wallet session. Manual selection leaves authentication pending until the application selects or creates a wallet.

For native Swift, Kotlin, and React Native applications, prefer OIDC ID-token authentication when the provider SDK returns an ID token. Use redirect authentication when sign-in must run through a browser. Fixed OMS relay providers and custom OIDC providers are separate configurations.

## Choose an SDK

| SDK          | Package                                                                         | Runtime                                                          | Quickstart                                           |
| ------------ | ------------------------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------- |
| TypeScript   | `@polygonlabs/oms-wallet`                                                       | Browser, JavaScript, or Node.js                                  | [TypeScript](/wallets/sdk/typescript/quickstart)     |
| React Native | `@polygonlabs/oms-wallet-react-native`                                          | Bare React Native or Expo development builds for iOS and Android | [React Native](/wallets/sdk/react-native/quickstart) |
| Swift        | `OMSWallet` with Swift Package Manager or `oms-wallet-swift-sdk` with CocoaPods | iOS 15+ and macOS 12+                                            | [Swift](/wallets/sdk/swift/quickstart)               |
| Kotlin       | `io.github.0xsequence:oms-wallet-kotlin-sdk`                                    | Android 10 / API 29+                                             | [Kotlin](/wallets/sdk/kotlin/quickstart)             |

Expo Go cannot load the React Native SDK because it contains native code. Use an Expo development build or a bare React Native application.

## Common workflows

Each SDK documents the same sequence of developer decisions:

1. Authenticate the user and activate a wallet.
2. Restore and manage the wallet session and access credentials.
3. Send transactions through one prepare, fee-selection, execute, and status lifecycle.
4. Sign and verify messages or typed data.
5. Read balances and transaction history for any address.

<CardGroup cols={2}>
  <Card title="Send USDC" href="/wallets/sdk/guides/send-usdc">
    Submit an ERC-20 transfer from an active wallet.
  </Card>

  <Card title="Backend wallet verification" href="/wallets/sdk/guides/backend-wallet-verification">
    Request and verify an OMS Wallet ID token.
  </Card>
</CardGroup>
