# Introduction

The Stream Video React Native SDK is a toolkit for building video calling, audio rooms and livestreaming into your app. It ships with UI components, React hooks and context providers, and every call runs on Stream's global edge network for lower latency and higher reliability.

>
> **Tip:** This SDK is the client half of your integration. Call types, recording, transcription, webhooks and SIP are configured from your backend with a server-side SDK or the REST API, and the token your app connects with has to be signed there too. See the [server-side overview](https://getstream.io/video/docs/react-native/v2/server-side/) for what to build there, starting with [users and tokens](https://getstream.io/docs/platform/authentication/).
>

## Build with Stream CLI and Agent Skills

The [Stream CLI](https://getstream.io/cli/docs/) and [Agent Skills](https://getstream.io/agent-skills/docs/) provide AI coding agents, such as Claude Code, Cursor, and Codex, with the tools and knowledge necessary to build apps with Stream.

Install the CLI and add the skills to your project:

```bash
curl -fsSL https://getstream.io/cli.sh | bash
getstream skills stream-react-native
```

Once installed, invoke it from your agent:

```text
/stream Add Stream Video to my React Native app.
```

The `/stream` skill acts as a router, reading your request and dispatching it to the specialist skill. You can also invoke the `/stream-react-native` skill directly.

Stream Agent Skills can also be installed from [skills.sh](https://www.skills.sh/getstream/agent-skills/stream).

## Getting started

If you're new to Stream Video, start with these tutorials:

- [Video calling tutorial](https://getstream.io/video/sdk/react-native/tutorial/video-calling/): Build 1:1 and group calls.
- [Audio room tutorial](https://getstream.io/video/sdk/react-native/tutorial/audio-room/): Build a drop-in audio space.
- [Livestream tutorial](https://getstream.io/video/sdk/react-native/tutorial/livestreaming/): Broadcast to any audience size.
- [Ringing tutorial](https://getstream.io/video/sdk/react-native/tutorial/ringing/): Add incoming and outgoing call ringing.

## What you'll learn

**Core concepts:**

- [Joining and creating calls](https://getstream.io/video/docs/react-native/v2/guides/joining-and-creating-calls/)
- [Camera and microphone](https://getstream.io/video/docs/react-native/v2/guides/camera-and-microphone/)
- [UI components and customization](https://getstream.io/video/docs/react-native/v2/ui-components/overview/)

**Advanced features:**

- [Permissions and moderation](https://getstream.io/video/docs/react-native/v2/guides/permissions-and-moderation/)
- [Layout switching](https://getstream.io/video/docs/react-native/v2/ui-cookbook/runtime-layout-switching/)
- [Push notifications](https://getstream.io/video/docs/react-native/v2/advanced/incoming-calls/overview/)
- [Deep linking](https://getstream.io/video/docs/react-native/v2/advanced/deeplinking/)

## FAQ

**Does it work with Expo?**

Yes, on Expo 50+ with a [development build](https://getstream.io/video/docs/react-native/v2/setup/installation/expo/). Expo Go can't run the SDK's native code.

**What are the minimum requirements?**

React Native 0.73+ or Expo 50+, and Android API level 24. Test on real devices; iOS simulators can't capture audio or video.

**Can incoming calls ring like a phone call?**

Yes, with CallKit on iOS and Firebase plus Android Telecom on Android. Start at the [incoming calls overview](https://getstream.io/video/docs/react-native/v2/advanced/incoming-calls/overview/).

**Does a call survive the app going to the background?**

Yes, once set up: Android needs the foreground service permissions declared and iOS needs the audio and voip background modes with `enableOngoingCalls: true`. See [keeping the call alive](https://getstream.io/video/docs/react-native/v2/guides/keeping-call-alive/).

**Can users share their screen?**

Yes, on both platforms. iOS offers in-app and whole-device modes. See [screen sharing](https://getstream.io/video/docs/react-native/v2/guides/screensharing/overview/).

**Is there picture-in-picture?**

Yes, after per-platform setup. `CallContent` enters [PiP](https://getstream.io/video/docs/react-native/v2/ui-cookbook/picture-in-picture/) automatically on iOS when the app backgrounds, and on Android on the home button press.

**Can calls be moderated automatically?**

Yes. [Call moderation](https://getstream.io/moderation/docs/node/integrations/call-moderation/) watches video keyframes and audio transcriptions in real time. Ask support to enable it.

## Feedback

If something is missing or could be improved, [contact us](https://getstream.io/contact/).

---

For the most recent version of this documentation, visit [https://getstream.io/video/docs/react-native/v2/](https://getstream.io/video/docs/react-native/v2/).