SDK Installation (React Native)
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:
appIDfrom API configuration- publishable
apiKeyfrom API configuration - platform integration snippets from App configuration
Install package
- NPM
- YARN
- PNPM
- BUN
npm install @swmansion/react-native-detour
yarn add @swmansion/react-native-detour
pnpm add @swmansion/react-native-detour
bun add @swmansion/react-native-detour
Install peer dependencies (Expo projects)
For Expo projects (including prebuild), install peer dependencies with Expo CLI so versions are matched to your Expo SDK:
npx expo install expo-application expo-clipboard expo-constants expo-device expo-localization @react-native-async-storage/async-storage
Bare React Native projects
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.
- NPM
- YARN
- PNPM
- BUN
npm install expo-application expo-clipboard expo-constants expo-device expo-localization @react-native-async-storage/async-storage
yarn add expo-application expo-clipboard expo-constants expo-device expo-localization @react-native-async-storage/async-storage
pnpm add expo-application expo-clipboard expo-constants expo-device expo-localization @react-native-async-storage/async-storage
bun add expo-application expo-clipboard expo-constants expo-device expo-localization @react-native-async-storage/async-storage
@react-native-async-storage/async-storageis optional if you provide a custom storage adapter in config. See Custom Storage.
Expo Modules setup (React Native CLI)
The peer dependencies above (expo-application, expo-clipboard, expo-constants, expo-localization) are Expo Modules — 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:
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:
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:
npx expo install --fix
If the app throws at startup or a release build fails after adding Expo Modules, see bare React Native CLI build issues.
Credentials in app config
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.
Next steps
- Implement the provider and link handling in SDK Usage.
- Pick a runnable app pattern in Examples.
- If upgrading existing code, follow Migration to v2 and start from From 0.x or From 1.0.1.