> ## Documentation Index
> Fetch the complete documentation index at: https://yn-c9bb3266.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Mobile SDK Overview

> Choose the right Yuno mobile SDK for your iOS, Android, or cross-platform integration

## Which mobile SDK should I use?

Yuno provides native and cross-platform mobile SDKs. Use the decision tree below to find the best fit for your app.

<a href="/diagrams/state-and-architecture/mobile-sdk-tree.html" target="_blank" style={{ display: 'block', cursor: 'zoom-in', textDecoration: 'none' }}>
  <iframe src="/diagrams/state-and-architecture/mobile-sdk-tree.html" width="100%" height="450" style={{ border: 'none', borderRadius: '12px', boxShadow: '0 4px 24px rgba(0,0,0,0.08)', pointerEvents: 'none' }} loading="lazy" />
</a>

## Comparison

|                        | iOS SDK        | Android SDK    | Flutter SDK              | React Native SDK  |
| ---------------------- | -------------- | -------------- | ------------------------ | ----------------- |
| **Language**           | Swift          | Kotlin         | Dart                     | TypeScript        |
| **Min platform**       | iOS 14+        | API 21+        | iOS 14+ / API 21+        | iOS 14+ / API 21+ |
| **IDE**                | Xcode 15+      | Android Studio | VS Code / Android Studio | VS Code / Xcode   |
| **Installation**       | CocoaPods, SPM | Gradle (Maven) | pub.dev                  | npm               |
| **Bundle size impact** | \~2 MB         | \~1.8 MB       | \~2.5 MB                 | \~2.2 MB          |
| **Full Checkout**      | Yes            | Yes            | Yes                      | Yes               |
| **Seamless Checkout**  | Yes            | Yes            | Yes                      | Yes               |
| **3DS handling**       | Built-in       | Built-in       | Built-in                 | Built-in          |
| **Card vaulting**      | Yes            | Yes            | Yes                      | Yes               |
| **PCI scope**          | SAQ-A          | SAQ-A          | SAQ-A                    | SAQ-A             |
| **Apple Pay**          | Yes            | --             | iOS only                 | iOS only          |
| **Google Pay**         | --             | Yes            | Android only             | Android only      |

## Prerequisites by platform

<Tabs>
  <Tab title="iOS">
    * Xcode 15 or later
    * iOS 14.0+ deployment target
    * Swift 5.9+
    * CocoaPods 1.14+ or Swift Package Manager
    * Yuno API keys ([Authentication](/getting-started/authentication))
  </Tab>

  <Tab title="Android">
    * Android Studio Hedgehog (2023.1) or later
    * Minimum SDK: API 21 (Android 5.0)
    * Kotlin 1.9+
    * Gradle 8.0+
    * Yuno API keys ([Authentication](/getting-started/authentication))
  </Tab>

  <Tab title="Flutter">
    * Flutter 3.16+
    * Dart 3.2+
    * iOS 14+ / Android API 21+
    * Xcode 15+ (for iOS builds)
    * Android Studio (for Android builds)
    * Yuno API keys ([Authentication](/getting-started/authentication))
  </Tab>

  <Tab title="React Native">
    * React Native 0.72+
    * Node.js 18+
    * iOS 14+ / Android API 21+
    * Xcode 15+ (for iOS builds)
    * Android Studio (for Android builds)
    * Yuno API keys ([Authentication](/getting-started/authentication))
  </Tab>
</Tabs>

## Shared architecture

All Yuno mobile SDKs follow the same integration pattern:

1. **Create a checkout session** server-side via the [Checkout Sessions API](/api-reference/checkout-sessions/create)
2. **Initialize the SDK** with your public API key
3. **Start the checkout** by passing the session token to the SDK
4. **Handle callbacks** for payment success, error, and processing states
5. **Verify payment status** server-side via webhooks or the [GET Payment API](/api-reference/payments/retrieve)

<Warning>
  Never use your private secret key in mobile apps. Only the public API key should be embedded in client-side code. All payment creation and verification must happen server-side.
</Warning>

## Checkout types

Each mobile SDK supports two checkout modes:

<div className="mdx-card-tiles">
  <CardGroup cols={2}>
    <Card title="Full Checkout" icon="credit-card">
      Pre-built UI that renders all enabled payment methods. Fastest integration path with minimal code.
    </Card>

    <Card title="Seamless Checkout" icon="bolt">
      You control payment method selection. Yuno handles the payment form and tokenization in a single flow.
    </Card>
  </CardGroup>
</div>

## Get started

<div className="mdx-card-tiles">
  <CardGroup cols={2}>
    <Card title="iOS SDK" icon="apple" href="/guides/sdk/ios-checkout">
      Native Swift integration for iPhone and iPad.
    </Card>

    <Card title="Android SDK" icon="android" href="/guides/sdk/android-checkout">
      Native Kotlin integration for Android devices.
    </Card>

    <Card title="Flutter SDK" icon="flutter" href="/guides/sdk/flutter-checkout">
      Cross-platform integration with a single Dart codebase.
    </Card>

    <Card title="React Native SDK" icon="react" href="/guides/sdk/react-native-checkout">
      Cross-platform integration for React Native apps.
    </Card>
  </CardGroup>
</div>

## Next steps

<div className="mdx-card-tiles">
  <CardGroup cols={2}>
    <Card title="Web SDK Overview" icon="globe" href="/guides/sdk/overview">
      Building for the web instead? Start here.
    </Card>

    <Card title="Customization" icon="palette" href="/guides/sdk/customization">
      Theme and style your mobile checkout.
    </Card>
  </CardGroup>
</div>
