Amplitude's Guides and Surveys SDK enables you to deploy Guides and Surveys on your website or application.
The Guides and Surveys React Native SDK requires:
Install the Guides and Surveys React Native SDK as a package with npm or Yarn.
npm install @amplitude/plugin-engagement-react-native
npm install @react-native-async-storage/async-storage
yarn add @amplitude/plugin-engagement-react-native
yarn add @react-native-async-storage/async-storage
@react-native-async-storage/async-storage ensures the native module links correctly, since the engagement native module uses it.Run pod install in the ios directory.
cd ios
bundle exec pod install
//index.js
import {Linking} from 'react-native';
import { init, add } from '@amplitude/analytics-react-native';
import { getPlugin, handleURL } from '@amplitude/plugin-engagement-react-native';
init('<<< YOUR API KEY HERE >>>');
add(getPlugin());
Linking.getInitialURL().then(async (url) => {
if (url) {
const didHandleURL = await handleURL(url);
if (didHandleURL) { return; }
// Handle a non-Amplitude SDK URL
}
});
Linking.addEventListener('url', async ({ url }) => {
const didHandleURL = await handleURL(url);
if (didHandleURL) { return; }
// Handle a non-Amplitude SDK URL
});
serverZone used to initialize @amplitude/analytics-react-native will automatically be used (ref), so you don't need to pass serverZone in the options argument to init.| Parameter | Type | Description |
|---|---|---|
apiKey |
string |
Required. API key of the Amplitude project you want to use. |
options.serverUrl |
string |
Optional. Sets a custom server URL for API requests. Useful for proxy setups. Default: https://gs.amplitude.com (US) or https://gs.eu.amplitude.com (EU) |
options.cdnUrl |
string |
Optional. Sets a custom CDN URL for static assets. Useful for proxy setups. Default: https://cdn.amplitude.com (US) or https://cdn.eu.amplitude.com (EU) |
options.mediaUrl |
string |
Optional. Sets a custom URL for proxying nudge images. Useful for proxy setups when images are blocked. Default: https://engagement-static.amplitude.com (US) or https://engagement-static.eu.amplitude.com (EU) |
options.logLevel |
LogLevel.None or LogLevel.Error or LogLevel.Warn or LogLevel.Verbose or LogLevel.Debug. |
Optional. Sets the log level. Default: LogLevel.Warn |
options.locale |
string |
Optional. Sets the locale for localization. Default: undefined. Not setting a language means the default language is used. |
Make sure the API key you provide to Guides & Surveys matches the API key used to initialize your Amplitude Analytics SDK.
Booting the plugin (with a user ID) enables Guides and Surveys to be shown:
import {
track,
setDeviceId,
setUserId,
} from '@amplitude/analytics-react-native';
import { useEffect } from 'react';
export default function App() {
useEffect(() => {
//
// setting the User ID in @amplitude/analytics-react-native
// --and-- passing it to boot() is necessary
//
setUserId('rn-test-user-1');
setDeviceId('test-device-1');
getPlugin().boot('rn-test-user-1', 'test-device-1');
}, []);
}
After installing the SDK, add your React Native application to your Amplitude project settings so it appears as a platform option when you create guides and surveys.
To add your application:
After you add your application, it appears as a platform option when you create or edit guides and surveys. This enables you to deliver guides and surveys to your React Native app users.
Minimum SDK version is available for mobile SDK versions 3.0.0 and later. Use this setting as a safety control when you identify a critical issue in an older SDK release.
To configure a minimum SDK version:
When you set this value, Guides and Surveys compares the configured minimum with the SDK version in each app build:
This setting lets you stop guides and surveys on known problematic SDK versions without rolling back your application release.
Suppose app version 120 uses Guides and Surveys SDK 3.0.2, and app version 121 uses Guides and Surveys SDK 3.1.0 with a bug fix. If you set Minimum SDK version to 3.1.0:
120 no longer loads Guides and Surveys.121 continues to load Guides and Surveys.Pin and tooltip guides require the ability for the SDK to target specific views on screen. The Engagement SDK uses the "testID" property on an element in the React Native DOM.
In the example component below, "welcome-banner" is the element targeting string that should be used in the Guides and Surveys dashboard.
import React from 'react';
import { View, Text, StyleSheet } from 'react-native';
/**
* A simple component with a testID that can be targeted
* by the Amplitude Guides & Surveys SDK.
*/
export default function WelcomeBanner() {
return (
<View
testID="welcome-banner" // Element targeting via testID
style={styles.banner}
>
<Text style={styles.bannerText}>
Welcome to the App!
</Text>
</View>
);
}
Previewing guides and surveys direclty in your application allows you to experience what your users will. Previewing makes it much easier to iterate on copy, targeting rules, trigger logic, etc.
To locate the URL scheme:
amp-abcdefgh12345678.AmplitudeURLScheme.amp-abc123.To locate the URL scheme:
amp-abcdefgh12345678.Add the following intent filter to the main activity to your project's AndroidManifest.xml file:
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Add your URL scheme from Amplitude Dashboard here -->
<!-- ex: android:scheme="amp-12345" -->
<data android:scheme="<your-unique-scheme-id>" />
</intent-filter>
</activity>
The initialization code snippet already takes care of URL handling for preview links. Specifically, this code:
Linking.getInitialURL().then(async (url) => {
if (url) {
const didHandleURL = await handleURL(url);
if (didHandleURL) { return; }
// Handle a non-Amplitude SDK URL
}
});
Linking.addEventListener('url', async ({ url }) => {
const didHandleURL = await handleURL(url);
if (didHandleURL) { return; }
// Handle a non-Amplitude SDK URL
});
Pins and tooltips can't target tab bar items in navigation components (such as @react-navigation/bottom-tabs). Tab bars use native components that exist outside the standard React Native view hierarchy, which prevents the SDK from reliably locating and attaching guides to these elements.
Pins and tooltips can't target views or elements that are:
You can access the changelog here.
February 27th, 2026
Need help? Contact Support
Visit Amplitude.com
Have a look at the Amplitude Blog
Learn more at Amplitude Academy
© 2026 Amplitude, Inc. All rights reserved. Amplitude is a registered trademark of Amplitude, Inc.