Skip to content
Dashboard

Installation

Detour provides a React Native SDK (@swmansion/react-native-detour) compatible with Expo and bare React Native projects.

Before installation, make sure your app is created in the Detour Dashboard and you have:

  • appID from API configuration
  • publishable apiKey from API configuration
  • platform integration snippets from App configuration
Terminal window
npm install @swmansion/react-native-detour

For Expo projects (including prebuild), install peer dependencies with Expo CLI so versions are matched to your Expo SDK:

Terminal window
npx expo install expo-application expo-clipboard expo-constants expo-device expo-localization @react-native-async-storage/async-storage

If you are not using Expo CLI, install peer dependencies with your package manager and pin versions compatible with your React Native/Expo Modules setup.

Terminal window
npm install expo-application expo-clipboard expo-constants expo-device expo-localization @react-native-async-storage/async-storage

The peer dependencies above (expo-application, expo-clipboard, expo-constants, expo-localization) are Expo Modules, and they ship native code that has to be autolinked into your android/ and ios/ projects. In an Expo project this happens automatically. In a bare React Native CLI project you add Expo Modules once:

Terminal window
npx install-expo-modules@latest

This sets up Expo Modules autolinking (and on iOS raises the deployment target to the Expo Modules minimum).

install-expo-modules also switches the native JS bundling step to Expo CLI (export:embed), which requires metro.config.js to extend expo/metro-config (a superset of @react-native/metro-config, safe in bare projects). The tool usually migrates this for you. Verify it, especially if you had a customized metro.config.js:

metro.config.js
const { getDefaultConfig } = require("expo/metro-config");
const { mergeConfig } = require("@react-native/metro-config");
module.exports = mergeConfig(getDefaultConfig(__dirname), {});

Then align the Expo package versions to your setup:

Terminal window
npx expo install --fix
import { type Config } from '@swmansion/react-native-detour';
export const detourConfig: Config = {
apiKey: process.env.EXPO_PUBLIC_DETOUR_API_KEY!,
appID: process.env.EXPO_PUBLIC_DETOUR_APP_ID!,
shouldUseClipboard: true,
};

Keep apiKey and appID in environment variables or another secure configuration layer.

  1. Implement the provider and link handling in Usage.
  2. Pick a runnable app pattern in Examples.
  3. If upgrading existing code, follow Migration to v2 and start from From 0.x or From 1.0.1.