# Introduction

## Before starting

Expo is a powerful open-source platform that allows developers to build, deploy, and quickly iterate on native iOS, Android, and web apps from the same JavaScript codebase. It provides a set of tools and services for building applications that target a wide range of platforms with a single codebase, making the process of app development faster and easier.

Footprint's integration with Expo is designed specifically to leverage Expo's unique environment. This package - footprint-expo - allows Footprint to work seamlessly within Expo's framework. The implementation, though similar to our web-based solution, uses an in-app browser (webview) instead of iframes, providing a smooth, native-like experience for the user.

**Important:** This package cannot be used in the "Expo Go" app because it requires custom native code. You'll need to rebuild your app as described in the [Adding custom native code](https://docs.expo.dev/workflow/customizing/) guide using `npx expo prebuild`.

## Minimum version requirements

Before proceeding with the installation, make sure your environment meets the minimum version requirements:

| Dependency | Minimum Version       |
| ---------- | --------------------- |
| Expo       | Last 3 major versions |

## Installation

1. Install `@onefootprint/footprint-expo` version 3 or higher.

```bash
npm install @onefootprint/footprint-expo
```

2. Install required peer dependencies

```bash
npm install expo-linking expo-web-browser @fingerprintjs/fingerprintjs-pro-react-native
```

3. For iOS, install pods:

```bash
npx pod-install
```

4. For Android, add the Fingerprint Pro Maven repository to the `allprojects` block in your `android/build.gradle`:

```groovy
allprojects {
    repositories {
        google()
        mavenCentral()
        maven { url 'https://www.jitpack.io' }
        maven { url 'https://maven.fpregistry.io/releases' }
    }
}
```

This is required because `@fingerprintjs/fingerprintjs-pro-react-native` hosts its Android SDK on a custom Maven repository. Without this, your Android build will fail with dependency resolution errors.