---
title: MMP SDKs for Expo: Config Plugins Compared
description: Which MMPs support Expo: config plugin or package, licence, minimum Expo and OS version, docs for 9 vendors. Every one needs a development build, not Expo Go.
url: https://mmpsdk.com/frameworks/expo/
---

[Home](https://mmpsdk.com/) / [Frameworks](https://mmpsdk.com/frameworks/) / Expo

# MMP SDKs for *Expo*

Expo support for attribution SDKs, from npm and each vendor's own docs: which vendors publish a config plugin, which document a community plugin and which have no Expo route at all.

**Short answer**

6 of the 9 MMPs tracked here publish an official Expo SDK: Airbridge, AppMetrica, AppsFlyer, Kochava, Linkrunner and Singular. Adjust and Branch document a route maintained by someone else. No Expo SDK found for Tenjin.

## Expo pinout: one pin per MMP

Filled pins have an official SDK. Pins are in A to Z order.

- 1 [Adjust](https://mmpsdk.com/mmp/adjust/)
- 2 [Airbridge](https://mmpsdk.com/mmp/airbridge/)
- 3 [AppMetrica](https://mmpsdk.com/mmp/appmetrica/)
- 4 [AppsFlyer](https://mmpsdk.com/mmp/appsflyer/)
- 5 [Branch](https://mmpsdk.com/mmp/branch/)

**FW-EX** **Expo** 6 of 9 official

- 6 [Kochava](https://mmpsdk.com/mmp/kochava/)
- 7 [Linkrunner](https://mmpsdk.com/mmp/linkrunner/)
- 8 [Singular](https://mmpsdk.com/mmp/singular/)
- 9 [Tenjin](https://mmpsdk.com/mmp/tenjin/)

Official Vendor-documented Community only None found

## Expo SDKs compared

Last checked 2 Nov 2026. Package, version and licence from npm; minimum OS from podspecs, Gradle files and vendor docs.

| MMP | Status | Package | Registry | Version | Licence | Minimum OS | Repo | Install docs | Notes |
|---|---|---|---|---|---|---|---|---|---|
| [Adjust](https://mmpsdk.com/mmp/adjust/) | Vendor-documented | [@config-plugins/react-native-adjust + react-native-adjust](https://www.npmjs.com/package/@config-plugins/react-native-adjust) | npm | 14.0.2 | MIT | iOS 12; Android API 21 | [Source](https://github.com/expo/config-plugins/tree/main/packages/react-native-adjust) | [Install docs](https://dev.adjust.com/en/sdk/react-native) | Adjust's RN docs have an Expo tab; the config plugin is maintained in expo/config-plugins and cannot be used with Expo Go. |
| [Airbridge](https://mmpsdk.com/mmp/airbridge/) | Official | [airbridge-expo-sdk + airbridge-react-native-sdk](https://www.npmjs.com/package/airbridge-expo-sdk) | npm | 4.11.0 | MIT | Not published | Not public | [Install docs](https://help.airbridge.io/en/developers/expo-sdk-v4) | Configured as a plugin in app.json; the docs page does not mention Expo Go, prebuild or development builds. |
| [AppMetrica](https://mmpsdk.com/mmp/appmetrica/) | Official | [@appmetrica/react-native-analytics](https://www.npmjs.com/package/@appmetrica/react-native-analytics) | npm | 4.2.0 | MIT | Not published | [Source](https://github.com/appmetrica/appmetrica-react-native-plugin) | [Install docs](https://appmetrica.yandex.com/docs/en/sdk/react-native/analytics/quick-start) | Docs give Expo steps requiring expo-dev-client (development build, not Expo Go); no config plugin mentioned. |
| [AppsFlyer](https://mmpsdk.com/mmp/appsflyer/) | Official | [react-native-appsflyer (Expo config plugin via app.json plugins)](https://www.npmjs.com/package/react-native-appsflyer) | npm | 7.0.2-v2 | MIT | Expo SDK 52+ (New Architecture) | [Source](https://github.com/AppsFlyerSDK/appsflyer-react-native-plugin) | [Install docs](https://dev.appsflyer.com/hc/docs/rn_expoinstallation) | Requires expo-dev-client development build and expo prebuild; not Expo Go. |
| [Branch](https://mmpsdk.com/mmp/branch/) | Vendor-documented | [@config-plugins/react-native-branch (with react-native-branch)](https://www.npmjs.com/package/@config-plugins/react-native-branch) | npm | 13.0.2 | MIT | Expo SDK 54+ | [Source](https://github.com/expo/config-plugins) | [Install docs](https://help.branch.io/developer-hub/react-native-expo-integration) | Branch documents Expo but says the config plugin is community-maintained; needs a development build, not Expo Go. |
| [Kochava](https://mmpsdk.com/mmp/kochava/) | Official | [react-native-kochava-measurement](https://www.npmjs.com/package/react-native-kochava-measurement) | npm | 5.0.0 | Proprietary (Kochava terms) | iOS 15.5; Android API 21 | [Source](https://github.com/Kochava/reactnative-kochavameasurement-releases) | [Install docs](https://support.kochava.com/articles/sdk-integration/48867-reactnative-sdk/) | React Native docs list Expo 54 as a minimum; a config plugin is documented only for an older major version. |
| [Linkrunner](https://mmpsdk.com/mmp/linkrunner/) | Official | [expo-linkrunner (config plugin) + rn-linkrunner](https://www.npmjs.com/package/expo-linkrunner) | npm | 3.6.5 | MIT | Expo SDK 52+; iOS 15.0 | [Source](https://github.com/linkrunner-labs/expo-linkrunner) | [Install docs](https://docs.linkrunner.io/sdk/expo?utm_source=mmpsdk&utm_medium=referral&utm_campaign=frameworks-expo) | Config plugin applied at npx expo prebuild; needs a development build, not Expo Go. |
| [Singular](https://mmpsdk.com/mmp/singular/) | Official | [singular-react-native (ships app.plugin.js Expo config plugin)](https://www.npmjs.com/package/singular-react-native) | npm | 4.3.1 | MIT | Not published | [Source](https://github.com/singular-labs/react-native-sdk) | [Install docs](https://support.singular.net/hc/en-us/articles/360038415852) | The Expo config plugin ships inside Singular's React Native package; a development build is needed. |
| [Tenjin](https://mmpsdk.com/mmp/tenjin/) | None found | No package found |  |  |  |  |  |  | Tenjin docs and the react-native-tenjin README do not mention Expo; package ships no config plugin. |

"Not published" means no primary source states the value; it does not mean there is no minimum. Registry and repo links are for reference.

## What the SDK needs from you

The setup steps that apply to any attribution SDK in a Expo app. Each vendor datasheet lists that vendor's own requirements.

- **Development build**
  Attribution SDKs contain native code, so they do not run in Expo Go. Use a development build ( `expo-dev-client`) or EAS Build.
- **Config plugin**
  Add the vendor's config plugin to the `plugins` array in `app.json` or `app.config.js`. It writes the Info.plist keys, Android manifest entries and Associated Domains during `npx expo prebuild`.
- **Android permissions**
  Check what the plugin adds to the manifest. Singular's plugin, for example, adds `INTERNET`, `ACCESS_NETWORK_STATE` and `com.google.android.gms.permission.AD_ID`.
- **Play Install Referrer**
  Comes with the vendor's React Native package in most cases; nothing extra in Expo unless the vendor's Android docs ask for it.
- **ATT prompt**
  Set `NSUserTrackingUsageDescription` through `ios.infoPlist` in app config (or the plugin's option), then show the prompt with `expo-tracking-transparency` or the SDK's own method.
- **Deep links**
  Set `ios.associatedDomains` and `android.intentFilters` with `autoVerify` in app config, and make sure Expo Router or your linking config passes the URL to the SDK.

## Questions

**Which MMPs have an official Expo SDK?**

6 of the 9 MMPs tracked here publish an official Expo SDK: Airbridge, AppMetrica, AppsFlyer, Kochava, Linkrunner and Singular. Adjust and Branch document a route maintained by someone else. No Expo SDK found for Tenjin.

**How do I install an MMP SDK in a Expo app?**

npx expo install the package, add its config plugin to app.json, then npx expo prebuild and run a development build. Expo Go cannot load these native SDKs.

**Can I use an MMP SDK in Expo Go?**

No. Expo Go only contains the native modules Expo ships, so an attribution SDK with its own native code needs a development build or an EAS build. Every Expo route in this table assumes that.

**What is the difference between a vendor and a community Expo config plugin?**

A vendor plugin is published inside or alongside the vendor's own package, so it moves with SDK releases. A community plugin, such as those in the expo/config-plugins repository, is maintained separately and can lag behind a new SDK version.

**What is an MMP SDK?**

An MMP SDK is the library a mobile measurement partner asks you to add to your app. It records the first open, in-app events and deep link opens, and sends them to the MMP so installs can be matched to the ad or link that drove them.

**Is every MMP SDK open source?**

No. Many wrappers and SDKs are MIT licensed, but some native SDKs are proprietary: AppsFlyer's native iOS and Android SDKs, Kochava's SDKs and AppMetrica's Flutter plugin are published under proprietary terms. The licence column in each table shows what the registry or repository states.

## Other frameworks

- [FW-RN **React Native** npm install the vendor package, then run pod install in the ios folder. Autolinking wires up the native side. *9 of 9 official*](https://mmpsdk.com/frameworks/react-native/)
- [FW-FL **Flutter** flutter pub add the package, then check the iOS deployment target in the Podfile and minSdk in android/app/build.gradle. *8 of 9 official*](https://mmpsdk.com/frameworks/flutter/)
- [FW-UN **Unity** Add the package by Git URL in Unity Package Manager or import the .unitypackage, then resolve native dependencies (often with EDM4U) before building for iOS and Android. *8 of 9 official*](https://mmpsdk.com/frameworks/unity/)
- [FW-CP **Capacitor** npm install the plugin, then npx cap sync to copy it into the iOS and Android projects. *4 of 9 official*](https://mmpsdk.com/frameworks/capacitor/)
- [FW-CD **Cordova** cordova plugin add the package, then rebuild both platforms. *7 of 9 official*](https://mmpsdk.com/frameworks/cordova/)
- [FW-IOS **iOS (native)** Add the Swift package in Xcode or the pod to your Podfile, then initialise the SDK early in the app's launch. *9 of 9 official*](https://mmpsdk.com/frameworks/ios/)
- [FW-AND **Android (native)** Add the artifact to your Gradle dependencies (and the vendor's Maven repository if it is not on Maven Central), then initialise the SDK in Application.onCreate. *9 of 9 official*](https://mmpsdk.com/frameworks/android/)
- [FW-WEB **Web** Add the vendor's script tag or npm package to the site, then initialise it with your app or project key. *7 of 9 official*](https://mmpsdk.com/frameworks/web/)
