> ## Documentation Index
> Fetch the complete documentation index at: https://cometchat-22654f5b-docs-rn-guide-message-privately.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Setup

> Setup — CometChat documentation.

## Get your Application Keys

[Signup for CometChat](https://app.cometchat.com) and then:

1. Create a new app
2. Head over to the **API & Auth Keys** section and note the **Auth Key**, **App ID** & **Region**

## Add the CometChat Dependency

Install the package as NPM module:

<Tabs>
  <Tab title="JavaScript">
    ```js theme={null}
    npm install @cometchat-pro/react-native-chat@2.4.1 --save
    ```
  </Tab>
</Tabs>

**In order to integrate the CometChat Pro React Native SDK, you need to install one more dependencies**

**1.** Async-Storage:

<Tabs>
  <Tab title="JavaScript">
    ```js theme={null}
    npm install @react-native-async-storage/async-storage
    ```
  </Tab>
</Tabs>

<Note>
  v2.4+ onwards, Voice & Video Calling functionality has been moved to a separate library. In case you plan to use the calling feature, please install the Calling dependency (@cometchat-pro/react-native-calls). `npm install @cometchat-pro/react-native-calls@2.1.2 --save` The calling component requires some configuration. Please follow the steps mentioned [here](/sdk/react-native/2.0/setup#calling-component-configuration).
</Note>

## Calling Component Configuration

### Android:

Goto `./android` folder and open **project level** `build.gradle` file and add all repository URLs in the `repositories` block under the `allprojects` section.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    allprojects {
      repositories {
        maven {
    			url "https://dl.cloudsmith.io/public/cometchat/cometchat-pro-android/maven/"
    		}
      }
    }
    ```
  </Tab>
</Tabs>

Also in the same file in `buildscript` section in `ext` block make sure you have set **minSdkVersion** to **24.**

<Tabs>
  <Tab title="java">
    ```
    buildscript {
        ext {
            buildToolsVersion = "29.0.2"
            minSdkVersion = 24
            compileSdkVersion = 29
            targetSdkVersion = 29
        }
    }
    ```
  </Tab>
</Tabs>

### iOS:

Please update the minimum target version in the Podfile. Goto ./ios folder and open the Podfile. In the Podfile update the platform version to `11.0`

<Tabs>
  <Tab title="Podfile">
    ```
    platform :ios, '11.0'
    ```
  </Tab>
</Tabs>

Open the `ios/App` folder and run `pod install` this will create an `App.xcworkspace` open this and run the app.

## Initialize CometChat

The `init()` method initialises the settings required for CometChat. The `init()` method takes the below parameters:

1. appID - You CometChat App ID
2. appSettings - An object of the AppSettings class can be created using the AppSettingsBuilder class. The region field is mandatory and can be set using the `setRegion()` method.

The `AppSettings` class allows you to configure two settings:

* Region: The region where your app was created.
* [Presence Subscription](/sdk/react-native/2.0/user-presence)

You need to call `init()` before calling any other method from CometChat. We suggest you call the `init()` method on app startup, preferably in the `index.js` file.

<Tabs>
  <Tab title="JavaScript">
    ```js theme={null}
    let appId = "APP_ID";
    let region = "REGION";
    let appSetting = new CometChat.AppSettingsBuilder()
                            .subscribePresenceForAllUsers()
                            .setRegion(region)
                            .build();
    CometChat.init(appId, appSetting).then(
    	() => {
    		console.log("Initialization completed successfully");
    	}, error => {
    		console.log("Initialization failed with error:", error);
    	}
    );
    ```
  </Tab>
</Tabs>

Make sure you replace the `APP_ID` with your CometChat **App ID** and `REGION` with your **App Region** in the above code.

| Parameter  | Description                         |
| ---------- | ----------------------------------- |
| appID      | CometChat App ID                    |
| appSetting | An object of the AppSettings class. |
