> ## Documentation Index
> Fetch the complete documentation index at: https://www.cometchat.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Expo Integration

> CometChat Calling SDK v4 - Stable Release - Expo Integration Guide for React Native

<Info>
  **Quick Reference** - Key Expo setup steps:

  ```json theme={null}
  // Android: app.json → android block
  "permissions": ["CAMERA", "RECORD_AUDIO", "INTERNET", "MODIFY_AUDIO_SETTINGS"],
  "plugins": [["expo-build-properties", { "android": { "minSdkVersion": 24 } }]]

  // iOS: app.json → ios block
  "infoPlist": {
    "NSCameraUsageDescription": "This app uses the camera for video calls.",
    "NSMicrophoneUsageDescription": "This app uses the microphone for audio/video calls."
  }
  ```
</Info>

## Add the CometChatCalls Dependency

<Note>
  To add CometChat Calls SDK, please refer to the steps mentioned [here](/calls/v4/react-native/setup#add-the-cometchatcalls-dependency).
</Note>

## Permissions

Our React Native Calls SDK does not work with Expo GO since it requires some custom native modules. Also, expo does not recommend using Expo GO for building production grade apps. So in order to use our Calls SDK in an expo app you need to use [development builds](https://docs.expo.dev/develop/development-builds/introduction/). You can follow the official Expo [guide](https://docs.expo.dev/guides/local-app-development/) for more details.

<Warning>
  Expo GO is not supported. You must use [development builds](https://docs.expo.dev/develop/development-builds/introduction/) to use the CometChat Calls SDK in an Expo app.
</Warning>

### Android

You need to add the below `permissions` & `plugin` block inside `android` block of the `app.json` file. You need to install `expo-build-properties` package in your app.

<Tabs>
  <Tab title="app.json">
    ```json theme={null}
    "permissions": [
      "CAMERA",
      "READ_EXTERNAL_STORAGE",
      "WRITE_EXTERNAL_STORAGE",
      "VIBRATE",
      "INTERNET",
      "MODIFY_AUDIO_SETTINGS",
      "RECORD_AUDIO",
      "ACCESS_NETWORK_STATE"
    ],
    "plugins": [
      [
        "expo-build-properties",
        {
          "android": {
            "minSdkVersion": 24,
            "extraMavenRepos": ["https://dl.cloudsmith.io/public/cometchat/cometchat-pro-android/maven/"]
          }
        }
      ]
    ]
    ```
  </Tab>
</Tabs>

### iOS

You need to add the below `permissions` block inside `ios` block of the `app.json` file.

<Tabs>
  <Tab title="app.json">
    ```json theme={null}
    "infoPlist": {
        "NSCameraUsageDescription": "This app uses the camera for video calls.",
        "NSMicrophoneUsageDescription": "This app uses the microphonr for audio/video calls."
    }
    ```
  </Tab>
</Tabs>

## Initialize CometChat Calls

<Note>
  To initialize CometChat Calls SDK, please refer to the guide [here](/calls/v4/react-native/setup#initialize-cometchatcalls)
</Note>

## Troubleshooting

<AccordionGroup>
  <Accordion title="Build fails with native module errors">
    Ensure you're using a development build, not Expo GO. Run `npx expo prebuild` followed by `npx expo run:android` or `npx expo run:ios` to create a development build with native modules.
  </Accordion>

  <Accordion title="Android build fails with minSdkVersion error">
    Verify that `minSdkVersion` is set to at least `24` in the `expo-build-properties` plugin config.
  </Accordion>

  <Accordion title="Camera or microphone not working on iOS">
    Check that `NSCameraUsageDescription` and `NSMicrophoneUsageDescription` are set in the `infoPlist` block of your `app.json`.
  </Accordion>
</AccordionGroup>

***

## Next Steps

<CardGroup cols={2}>
  <Card title="Calls SDK Setup" icon="gear" href="/calls/v4/react-native/setup">
    Complete Calls SDK installation and initialization guide
  </Card>

  <Card title="Call Session" icon="video" href="/calls/v4/react-native/call-session">
    Start and manage call sessions after setup is complete
  </Card>

  <Card title="Ringing" icon="phone-volume" href="/calls/v4/react-native/ringing">
    Implement incoming and outgoing call UI with ringing
  </Card>

  <Card title="SDK Setup" icon="wrench" href="/sdk/react-native/setup-sdk">
    Set up the core CometChat Chat SDK for React Native
  </Card>
</CardGroup>
