> ## Documentation Index
> Fetch the complete documentation index at: https://help.airbridge.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Expo SDK (Deprecated)

![NPM Version](https://img.shields.io/npm/v/airbridge-expo-sdk/sdk-v2?label=airbridge-expo-sdk)

![](https://img.shields.io/badge/airbridge--react--native--sdk-2.8.6-blue)

<Danger>
  **Deprecated SDK**

  This SDK has been deprecated. Migrate to the latest version, [Expo SDK v4](/en/developers/expo-sdk-v4).

  Starting October 1, 2026, we will fix only critical issues that could cause your app to be rejected in app store review, and on October 1, 2028, all support will end.
</Danger>

### SDK Installation

***

#### Package Installation

Install `airbridge-expo-sdk` and `airbridge-react-native-sdk` using npm.

```bash lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
npm install --save airbridge-expo-sdk
npm install --save airbridge-react-native-sdk
```

<Danger>
  **Attention**

  Airbridge Expo SDK does not support `expo go` environments. Please use it with `expo prebuild` or `eas build`.
</Danger>

### Project Setup

#### app.json

Add following setting to your `app.json` file.

```json app.json lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
{
  "expo": {
    ...
    "plugins": [
      ...
      [
        "airbridge-expo-sdk",
        {
          "appName": "APP_NAME",
          "appToken": "APP_TOKEN"
        }
      ]
    ]
  }
}
```

<Note>
  `APP_NAME` is the App Name and `APP_TOKEN` is the App SDK Token that can be found on the \[Settings]>\[Tokens] page in the Airbridge dashboard.
</Note>

###### airbridge.json

1. Create an `airbridge.json`file in the project folder.
2. Configure settings in JSON format.

###### Example

```json lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
{
    "sessionTimeoutSeconds": 300,
    "autoStartTrackingEnabled": true,
    "userInfoHashEnabled": true,
    "trackAirbridgeLinkOnly": false,
    "facebookDeferredAppLinkEnabled": false,
    "locationCollectionEnabled": false,
    "trackingAuthorizeTimeoutSeconds": 30,
    "sdkSignatureSecretID": "YOUR_SDK_SIGNATURE_SECRET_ID",
    "sdkSignatureSecret": "YOUR_SDK_SIGNATURE_SECRET",
    "logLevel": "warning"
}
```

###### Description

| Name | Type | Default | Description |
| - | - | - | - |
| sessionTimeoutSeconds | Number | 300 | An app open event will not be sent when the app is reopened within the designated period. |
| autoStartTrackingEnabled | Boolean | true | When set to false, no events will be sent until `Airbridge.state.startTracking()`is called. |
| userInfoHashEnabled | Boolean | true | When set to false, user email and user phone information are sent without being hashed. |
| trackAirbridgeLinkOnly | Boolean | false | When set to true, deep link events are sent only when app is opened with an Airbridge deep link. |
| facebookDeferredAppLinkEnabled | Boolean | false | When set to true and the Facebook SDK is installed, Facebook Deferred App Link data is collected. |
| locationCollectionEnabled | Boolean | false | When set to true, location information is collected. (Android Only)<br />Two permissions must be allowed in AndroidManifest.xml<br />android.permission.ACCESS\_FINE\_LOCATION<br />android.permission.ACCESS\_COARSE\_LOCATION |
| trackingAuthorizeTimeoutSeconds | Number | 0 | When timeout is set, Install event is delayed until `Request tracking authorization alert`is clicked. (iOS only) |
| sdkSignatureSecretID | String | null | Protects against SDK spoofing. Both sdkSignatureSecretID and sdkSignatureSecret values must be applied. |
| sdkSignatureSecret | String | null | Protects against SDK spoofing. Both sdkSignatureSecretID and sdkSignatureSecret values must be applied. |
| logLevel | String | warning | Adjusts the log record level for Airbridge.<br />logLevel: "debug" \| "info" \| "warning" \| "error" \| "fault" |

#### Testing the SDK

Check if install events are sent when the application is installed and opened.

###### Check in the Airbridge Dashboard

Events from the Airbridge SDK are shown at the "Airbridge Dashboard → Raw Data → App Real-time Logs".

1. Go to "Airbridge Dashboard → Raw Data → App Real-time Logs".
2. Search for the device's ADID (IDFA, IDFV, GAID).

<Danger>
  **Attention**

  Logs may be delayed for up to 5 minutes.
</Danger>

## Deep Link Setup

***

### Dashboard Setup

Please refer to the guides below to setup your deep links in the Airbridge dashboard.

* iOS Deep Link Dashboard Setup [Guide](/en/developers/deprecated-ios-sdk-v1#dashboard-setup)
* Android Deep Link Dashboard Setup [Guide](/en/developers/deprecated-android-sdk-v2#dashboard-setup)

### Project Setup

###### app.json

Add the following settings to your `app.json` file.

```json lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
{
  "expo": {
    ...
    "scheme": "YOUR_SCHEME",
    "android": {
      ...
      "intentFilters": [{
        "autoVerify": true,
        "action": "VIEW",
        "data": { "scheme": "https", "host": "APP_NAME.airbridge.io" },
        "category": ["BROWSABLE", "DEFAULT"]
      }, {
        "autoVerify": true,
        "action": "VIEW",
        "data": { "scheme": "https", "host": "APP_NAME.deeplink.page" },
        "category": ["BROWSABLE", "DEFAULT"]
      }, {
        "autoVerify": true,
        "action": "VIEW",
        "data": { "scheme": "http", "host": "APP_NAME.airbridge.io" },
        "category": ["BROWSABLE", "DEFAULT"]
      }, {
        "autoVerify": true,
        "action": "VIEW",
        "data": { "scheme": "http", "host": "APP_NAME.deeplink.page" },
        "category": ["BROWSABLE", "DEFAULT"]
      }]
    },
    "ios": {
      ...
      "associatedDomains": [
        "applinks:APP_NAME.airbridge.io",
        "applinks:APP_NAME.deeplink.page"
      ]
    }
  }
}
```

<Note>
  `YOUR_SCHEME` is the URI Scheme that can be found on the  \[Tracking Link]>\[Deep Links] page in the Airbridge dashboard.
</Note>

###### setDeeplinkListener

Register a function that will be called whenever a deep link or a deferred deep link opens the application.

```javascript lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
import Airbridge from 'airbridge-react-native-sdk'

Airbridge.deeplink.setDeeplinkListener((deeplink) => {
    // code that will run when app is opened with deep-link or deferred-deep-link
    // deeplink = YOUR_SCHEME://...
    console.log(deeplink)
})
```

<Danger>
  **Attention**

  If you call `setDeeplinkListener` multiply, only last listener will receive deeplink.
</Danger>

### Custom Domain Setup (Optional)

###### app.json

Add the following settings to your `app.json` file.

```json lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
{
  "expo": {
    ...
    "android": {
      ...
      "intentFilters": [{
        "autoVerify": true,
        "action": "VIEW",
        "data": { "scheme": "https", "host": "YOUR_DOMAIN.YOUR_DOMAIN.example" },
        "category": ["BROWSABLE", "DEFAULT"]
      }, {
        "autoVerify": true,
        "action": "VIEW",
        "data": { "scheme": "http", "host": "YOUR_DOMAIN.YOUR_DOMAIN.example" },
        "category": ["BROWSABLE", "DEFAULT"]
      }]
    },
    "ios": {
      ...
      "associatedDomains": [
        "applinks:YOUR_DOMAIN.YOUR_DOMAIN.example"
      ]
    },
    "plugins": [
      ...
      [
        "airbridge-expo-sdk",
        {
          ...
          "customDomains": [
            "YOUR_DOMAIN.YOUR_DOMAIN.example"
          ]
        }
      ]
    ]
  }
}
```

<Note>
  `YOUR_DOMAIN.YOUR_DOMAIN.example` can be found at the "Airbridge dashboard → Tracking Link → Domain Setting → Custom Domain".
</Note>

### Test Deep Link

Click on your URI scheme to test if your deep link has been properly set up in the Airbridge SDK.

* `YOUR_SCHEME://`

The results will show on the "Airbridge dashboard → Raw Data → App Real-time Log" tab if everything is working.

## User Setup

***

Please refer to [this guide](/en/developers/deprecated-react-native-sdk-v2#user-setup).

## Device Setup

***

Please refer to [this guide](/en/developers/deprecated-react-native-sdk-v2#device-setup).

## Event Setup

***

Please refer to this [guide](/en/developers/deprecated-react-native-sdk-v2#event-setup).

## Advanced Setup

***

### SDK Signature Setup

Protection against SDK spoofing is possible once you set your SDK Signature.

This feature is available for the Airbridge Expo SDK v2.2.0 and Airbridge React Native SDK v2.3.0 and above.

Add the following lines in the airbridge.json file.

```json lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
{
    "sdkSignatureSecretID": "YOUR_SDK_SIGNATURE_SECRET_ID",
    "sdkSignatureSecret": "YOUR_SDK_SIGNATURE_SECRET"
}
```

<Note>
  The SDK Signature Credentials are required for the SDK Signature setup. Refer to this [article](/en/guides/sdk-signature#configuring-the-sdk-signature-credentials) to learn how to create them.
</Note>

### Other Advanced Settings

Please refer to this [guide](/en/developers/deprecated-react-native-sdk-v2#advanced-setup).

## Migration guide

***

When updating the SDK, please consider the contents corresponding to the versions between \`previous version\` and \`subsequent version\`.

#### 2.6.0

For Airbridge apps created after September 4, 2023, the issue where the deep link URL provided in the deep link callback decodes the content entered in the Airbridge dashboard twice has been resolved in versions v2.5.0 \~ v2.5.2.

#### 2.5.1

For Airbridge apps created after September 4, 2023, the deep link URL provided in the deep link callback no longer adds the airbridge\_referrer.

When updating the iOS app, it is determined by the last calculated SKAdNetwork Conversion Value and no additional calculations are made.

* In versions below 2.5.1, the SKAdNetwork Conversion Value is calculated for up to 24 hours only.
* This will not be a problem for new installs.

`deeplink.page` has been deprecated. From version 2.5.1, we recommend writing code using the deep link domain `abr.ge`

* `deeplink.page` is still supported and operates for backward compatibility.

#### 2.5.0

The default value of "trackingAuthorizeTimeout" is changed to 30 seconds.

#### Update 1.x.x → 2.0.0

The event transmission API that existed in the previous version 1 is deleted and replaced with the following API.

```javascript lines theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
/**
 * Send event to server.
 * @param {string} category event name
 * @param {EventOption} [option={}] event options
 */
trackEvent(category: string, option?: EventOption): void;
```

Please refer to the guide below.

* [`Migration guide`](https://airbridge.readme.io/page/react-native-2xx-migration-guide)

#### Update 1.0.0 → 1.1.0

Please refer to the guide below.

* [`Migration guide`](https://airbridge.readme.io/page/airbridge-expo-sdk-110-migration-guide)

<link rel="alternate" hrefLang="en" href="https://help.airbridge.io/en/developers/deprecated-expo-sdk-v2" />

<link rel="alternate" hrefLang="ko" href="https://help.airbridge.io/ko/developers/deprecated-expo-sdk-v2" />


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.