---
title: Install the React Native SDK
slug: feature-experimentation/docs/install-sdk-reactnative-prior-to-v4
docTags: 
createdAt: 2026-08-05T20:39:54.000Z
---

The React SDK can be used in both ReactJS and React Native environments and is distributed through [npm](https://www.npmjs.com/package/@optimizely/react-sdk). The React SDK supports datafile caching and offline events persistence for React applications. Add it to your package with NPM:

```shell
npm install --save @optimizely/react-sdk
```

or with Yarn:

```shell
yarn add @optimizely/react-sdk
```

The full source code is available on [GitHub](https://github.com/optimizely/react-sdk).

## Requirements

The React Native SDK requires an ES5-compatible environment and Promise. To run in environments that do not support Promise, you can use promise-polyfill:

```shell
npm install promise-polyfill
```

### Peer dependencies

To use features such as datafile caching and offline events persistence, you must install the following peer dependencies in your React Native application.

```shell
npm install --save @react-native-async-storage/async-storage @react-native-community/netinfo react-native-get-random-values fast-text-encoding
```

- `@react-native-async-storage/async-storage` is required to:
  - Enable datafile caching by storing the datafile on the user's device.
  - Enable event offline persistence by temporarily storing events on the user's device when offline.
- `@react-native-community/netinfo` is required to detect when internet connectivity is restored so that events triggered during the offline mode can be retried.
- `react-native-get-random-values` is required for `crypto.getRandomValues()` support.
- `fast-text-encoding` is required to support encoding for user bucketing.
