# Choose an SDK

> Which InfluTo SDK fits your app — React Native and Expo, native iOS, native Android, Flutter, or web and Capacitor — and what each one needs for RevenueCat or store-direct.

Install exactly one InfluTo SDK per app: the one for the language your app is written in. All five follow the same wire contract, have the same methods, and support both purchase-validation paths, so everything else in these docs applies whichever you pick.

## Pick by stack

| Your app is built with | Use | Guide |
|---|---|---|
| React Native, Expo | `@influto/react-native-sdk` | [React Native & Expo](https://docs.influ.to/sdk/react-native.md) |
| Swift — SwiftUI or UIKit | `influto-ios` (Swift Package Manager) | [iOS](https://docs.influ.to/sdk/ios.md) |
| Kotlin or Java | `to.influ:android-sdk` | [Android](https://docs.influ.to/sdk/android.md) |
| Flutter (Dart) | `influto` | [Flutter](https://docs.influ.to/sdk/flutter.md) |
| Capacitor, Ionic, Cordova, a PWA or a website wrapped as an app | `@influto/web` | [Web & Capacitor](https://docs.influ.to/sdk/web.md) |
| Anything else (Unity, Kotlin Multiplatform, a backend) | The HTTP API | [HTTP API](https://docs.influ.to/reference/http-api.md) |

A React Native app with native iOS and Android modules still uses the React Native SDK — one SDK per app, not per platform.

## Packages

| Your app | Package | Registry | Latest | Source |
|---|---|---|---|---|
| React Native / Expo | `@influto/react-native-sdk` | [npm](https://www.npmjs.com/package/@influto/react-native-sdk) | 1.6.1 | [influto/influto-react-native](https://github.com/influto/influto-react-native) |
| iOS (Swift) | `github.com/influto/influto-ios` | [Swift Package Manager](https://swiftpackageindex.com/influto/influto-ios) | 1.1.1 | [influto/influto-ios](https://github.com/influto/influto-ios) |
| Android (Kotlin) | `to.influ:android-sdk` | [Maven Central](https://central.sonatype.com/artifact/to.influ/android-sdk) | 1.1.1 | [influto/influto-android](https://github.com/influto/influto-android) |
| Flutter (Dart) | `influto` | [pub.dev](https://pub.dev/packages/influto) | 1.1.1 | [influto/influto-flutter](https://github.com/influto/influto-flutter) |
| Web / Capacitor / PWA | `@influto/web` | [npm](https://www.npmjs.com/package/@influto/web) | 1.0.1 | [npm package](https://www.npmjs.com/package/@influto/web) |

## What every SDK does

- `initialize` once at startup with the app's API key — throws on failure.
- `checkAttribution` at launch to find out whether the install was referred — never throws.
- `identifyUser` when you know who the user is, so purchases can be matched to the referral.
- `validateCode` / `applyCode` and a ready-made code field for codes people type in.
- `checkAccess` for free-access codes, `reportPurchase` for store-direct apps, `trackEvent` for funnel events.

Every method, with signatures for each platform: [SDK reference](https://docs.influ.to/reference/sdk.md).

## Purchases: what each SDK needs

Choose RevenueCat or store-direct per app ([how to choose](https://docs.influ.to/integrations.md)). What you add depends on the SDK:

| SDK | RevenueCat: tagging the subscriber | Store-direct: automatic purchase capture |
|---|---|---|
| React Native | Automatic when `react-native-purchases` is installed | Needs `expo-iap` or `react-native-iap` installed |
| iOS | Pass a `revenueCatAttributeSetter` in the config | Built in (StoreKit 2) |
| Android | Automatic, or pass a `revenueCatAttributeSetter` | Add `to.influ:android-sdk-billing` |
| Flutter | Pass a `revenueCatHook` in the config | Add `influto_iap` and enable its observer |
| Web | Pass a `revenueCat` binding | Pass a `purchaseSource` (Capacitor, Cordova or Play Digital Goods) |

Automatic capture only runs on apps set to store-direct, so it can never double-report a RevenueCat app. Each SDK guide shows the exact code.

## Requirements

| SDK | Minimum |
|---|---|
| React Native | React Native 0.60+, `@react-native-async-storage/async-storage` |
| iOS | iOS 16, Swift 5.9 (also macOS 13, tvOS 16, watchOS 9) |
| Android | minSdk 24, Java 17 toolchain |
| Flutter | Flutter 3.22, Dart 3.4 |
| Web | Any ES2019 browser or WebView; Capacitor plugins optional |

None of the SDKs use advertising identifiers or ask for App Tracking Transparency. What they send, and what to declare in the stores: [Privacy & App Store review](https://docs.influ.to/advanced/privacy.md).
