# React Native

You can import Pools SDK into your React Native dapp to enable your users to easily connect to the Pools Wallet

### Install the SDK[​](https://docs.metamask.io/wallet/how-to/connect/set-up-sdk/javascript/react-native/#install-the-sdk) <a href="#install-the-sdk" id="install-the-sdk"></a>

Use `rn-nodeify` to install the SDK. In your project directory, install `rn-nodeify`:

```
yarn add --dev rn-nodeify
```

or

```
npm i --dev rn-nodeify
```

Install the `rn-nodeify` libraries:

```
yarn add react-native-crypto
yarn add react-native-randombytes
yarn add crypto
yarn add process
yarn add stream
yarn add events
```

In your project's `package.json` file, insert the `rn-nodeify` command into the postinstall script:

package.json

```
"scripts": {
  ...,
  "postinstall": "rn-nodeify --install 'crypto,process,stream,events' --hack"
}
```

`rn-nodeify` creates a `shim.js` file in your project root directory. Import it in the root file of your application:

```
import './shim'
```

Install `react-native-background-timer`:

```
yarn add react-native-background-timer

cd ios && pod install && cd ..
```

Install Pools SDK:

```
yarn add @pools/sdk
```

Run the postinstall script after everything is installed:

```
yarn postinstall
```

Finally, install the necessary pods that come with the libraries:

```
cd ios && pod install && cd ..
```

### Use the SDK[​](https://docs.metamask.io/wallet/how-to/connect/set-up-sdk/javascript/react-native/#use-the-sdk) <a href="#use-the-sdk" id="use-the-sdk"></a>

Import, instantiate, and use the SDK by adding something similar to the following to your project script:

```
import PoolsSDK from '@pools/sdk';
import { Linking } from 'react-native';
import BackgroundTimer from 'react-native-background-timer';

const PSDK = new PoolsSDK({
  openDeeplink: (link) => {
    Linking.openURL(link); // Use React Native Linking method or another way of opening deeplinks.
  },
  timer: BackgroundTimer, // To keep the dapp alive once it goes to background.
  dappMetadata: {
    name: 'My dapp', // The name of your dapp.
    url: 'https://mydapp.com', // The URL of your website.
  },
});

const ethereum = PSDK.getProvider();

const accounts = await ethereum.request({ method: 'eth_requestAccounts' });
```

You can configure the SDK using any options and call any provider API methods. Always call `eth_requestAccounts` using `ethereum.request(args)` first, since it prompts the installation or connection popup to appear.

You can use EthersJS with your React Native app:

```
const provider = new ethers.providers.Web3Provider(ethereum);

// Get the balance of an account (by address or ENS name, if supported by network).
const balance = await provider.getBalance(ethereum.selectedAddress);

// Often you need to format the output to something more user-friendly,
// such as in ether (instead of wei).
const balanceInETH = ethers.utils.formatEther(balance);
// '0.182826475815887608'
```

[Edit this page](https://github.com/MetaMask/metamask-docs/edit/main/wallet/how-to/connect/set-up-sdk/javascript/react-native.md)<br>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://pools-chain.gitbook.io/documentation/built-for-developers/pools-sdk/supported-platforms/javascript/react-native.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
