Expo SDK Installation
To get started, install the React Native Expo SDK.
Installation
The command to install the React Native Expo SDK is:
npx
npx expo install @devcycle/react-native-expo-client-sdk
yarn
yarn expo install @devcycle/react-native-expo-client-sdk
Install SDK Dependencies
Install the SDK dependencies, run the following command
npx
npx expo install @react-native-async-storage/async-storage react-native-get-random-values react-native-device-info
yarn
yarn expo install @react-native-async-storage/async-storage react-native-get-random-values react-native-device-info
Install Pods
Add the following packages that are required for React Native Expo functionality as dependencies of your project:
npx pod-install
The @react-native-async-storage/async-storage package provides the ability to leverage on Device Storage that is used for caching by the SDK. The react-native-get-random-values package provides a polyfill for cryptographic functionality used to generate random IDs. The react-native-device-info package provides information about the current device running the SDK, which is required to correctly apply targeting rules.
Import SDK Dependencies
- Import the
@react-native-async-storage/async-storage
package somewhere in your code (e.g. in theApp.jsx
file). (see example below) - Import the
react-native-get-random-values
package somewhere in your code (e.g. in theApp.jsx
file). (see example below) - Import the
react-native-device-info
package and setglobal.DeviceInfo = DeviceInfo
. (see example below)
Example of the above steps:
import React from 'react'
import 'react-native-get-random-values'
import DeviceInfo from 'react-native-device-info'
import '@react-native-async-storage/async-storage'
import { withDevCycleProvider } from '@devcycle/react-native-expo-client-sdk'
global.DeviceInfo = DeviceInfo
Wrap Application in HOC
Wrap your application component tree in either the withDevCycleProvider
or asyncWithDVCProvider
higher-order component (HOC), as explained in the Getting Started section.
export default withDevCycleProvider({ sdkKey: '<DEVCYCLE_CLIENT_SDK_KEY>' })(
App,
)
Example
A complete working example of an App.jsx
file is below:
import React from 'react'
import { View, Text } from 'react-native'
import 'react-native-get-random-values'
import DeviceInfo from 'react-native-device-info'
import '@react-native-async-storage/async-storage'
import { withDevCycleProvider } from '@devcycle/react-native-expo-client-sdk'
global.DeviceInfo = DeviceInfo
function App() {
return (
<View
style={{
flex: 1,
justifyContent: 'center',
alignItems: 'center',
}}
>
<Text>My React App</Text>
</View>
)
}
export default withDevCycleProvider({ sdkKey: '<DEVCYCLE_CLIENT_SDK_KEY>' })(
App,
)