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

# SDKs Overview

> Learn what OMS wallets do and which SDKs are available.

OMS wallets let an app create, restore, and use a wallet for a user without sending them to a separate wallet app. The SDKs handle wallet authentication, session state, wallet selection, transaction submission, message signing, signature verification, ID-token issuance, and balance reads where each SDK exposes those helpers.

Non-custodial wallets are non-custodial smart contract wallets powered by OMS Wallet. They give users consumer-grade onboarding without extensions, seed phrases, or separate wallet apps, while giving apps session-based signing, sponsored gas support, and programmable transaction flows.

## Functionality

| Functionality                      | Description                                                                                                                                                                                                                                                                                                                              |
| ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Authentication and wallet creation | Start and complete user authentication, resolve the user's non-custodial wallet, and create a wallet when the authenticated user does not already have one. Email OTP is available across SDKs; TypeScript, React Native, Swift, and Kotlin support OIDC redirect auth; React Native, Swift, and Kotlin also support OIDC ID-token auth. |
| Wallet selection                   | TypeScript, React Native, Swift, and Kotlin can automatically select the first matching wallet, or use manual wallet selection when your app needs to present existing wallets plus a create-new-wallet action.                                                                                                                          |
| Session state                      | Restore completed wallet sessions with platform storage where supported, so apps can continue wallet operations after the initial sign-in flow.                                                                                                                                                                                          |
| Network registry                   | Use built-in supported-network entries and lookup helpers when SDKs expose them. React Native lists supported networks and accepts `chainId` string values for transaction, signing, and balance APIs.                                                                                                                                   |
| Transactions                       | Send native token transactions and contract calls from the non-custodial wallet. On supported testnets, fee options are automatically sponsored.                                                                                                                                                                                         |
| Message signing and verification   | Sign messages and typed data from the non-custodial wallet, then verify signatures through wallet public APIs.                                                                                                                                                                                                                           |
| Backend verification               | Request an ID token for the active wallet and verify it on your backend against the issuer JWKS. This is exposed by TypeScript, React Native, Swift, and Kotlin.                                                                                                                                                                         |
| Balances & history                 | Read wallet token balances through the SDK balance clients. Balance amounts are returned as raw base-unit values.                                                                                                                                                                                                                        |

## Guides

Guides are use-case oriented and show the same flow across every SDK that exposes the required capability.

| Use Case                    | Description                                                                                                          | Guide                                                                          |
| --------------------------- | -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
| Send USDC                   | Authenticate a non-custodial wallet, prepare a 6-decimal USDC amount, and submit an ERC-20 `transfer` contract call. | [Send USDC](/wallets/sdk/guides/send-usdc)                                     |
| Backend wallet verification | Request a wallet ID token, verify it against the staging JWKS, and read trusted wallet claims on your backend.       | [Backend Wallet Verification](/wallets/sdk/guides/backend-wallet-verification) |

## Supported SDKs

| SDK          | Best For                                                                                                                                        | Start Here                                                      |
| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- |
| TypeScript   | Web, Node, and JavaScript apps that use viem-compatible EVM values and OIDC redirect auth.                                                      | [TypeScript quickstart](/wallets/sdk/typescript/quickstart)     |
| React Native | Bare React Native iOS and Android apps that need native wallet sessions, OIDC redirect or ID-token auth, and module-level TypeScript functions. | [React Native quickstart](/wallets/sdk/react-native/quickstart) |
| Swift        | iOS 15+ and macOS 12+ apps that need Keychain-backed wallet sessions, OIDC token or redirect auth, and native Swift transaction helpers.        | [Swift quickstart](/wallets/sdk/swift/quickstart)               |
| Kotlin       | Android apps with `minSdk 26`, Android Keystore-backed request signing, OIDC redirect auth, and optional OIDC ID-token auth.                    | [Kotlin quickstart](/wallets/sdk/kotlin/quickstart)             |
