# stream-react-native

A skill for building, integrating, migrating and auditing Stream Chat, Video and Feeds in React Native CLI and Expo apps.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 706 installs · ★ 20
- Author: GetStream
- License: Apache-2.0 · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/GetStream/agent-skills/tree/HEAD/skills/stream-react-native/SKILL.md
- Updated: 2026-10-23
- HTML: https://affpapa.org/en/nevibecode/skills/stream-react-native

## What it does

The skill covers all three Stream products at once: Chat, Video and Feeds. It starts by classifying the request — new app, integration into an existing one, migration, SDK upgrade, or a docs lookup — then follows the matching track. Migrating off Sendbird gets its own path, including `@sendbird/chat` and `@sendbird/uikit-react-native`.

Inside is a router file with a signal table and pointers to the modules, plus `RULES.md`, which the agent reads once per session. There is also an audit flow for an existing Video integration: handy when you want to know what is missing before launch. For AI assistants with streaming responses, a separate module wires up `@stream-io/chat-react-native-ai`.

The skill targets React Native and Expo on the New Architecture. Web React and the Moderation review UI are out of scope — for web you want `stream-react`. Credentials come from the `getstream` CLI by default, with a pasted API key and token as fallback. Worth knowing before you start, because the first integration step stalls on auth otherwise.

Install runs through `npx skills add` with a flag for your platform.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add GetStream/agent-skills --skill stream-react-native -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/stream-react-native/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/stream-react-native/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add GetStream/agent-skills --skill stream-react-native -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/stream-react-native/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add GetStream/agent-skills --skill stream-react-native -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/stream-react-native/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install GetStream/agent-skills stream-react-native
```

2. **Manually: put the files in place**
- File: `.github/skills/stream-react-native/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add GetStream/agent-skills --skill stream-react-native -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/GetStream/agent-skills --path skills/stream-react-native
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/stream-react-native/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add GetStream/agent-skills --skill stream-react-native -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/GetStream/agent-skills/tree/HEAD/skills/stream-react-native/SKILL.md

## When to use it
- scaffold a chat app in a fresh Expo Router project
- add Stream Chat to an existing React Native app
- move an app off Sendbird onto Stream
- upgrade the Chat SDK from v8 to v9
- audit a Video integration before launch

## Example prompts
- Scaffold a new Expo app with Stream Chat
- Add video calls to my existing React Native project
- Audit my Stream Video integration against best practices

## Source text · SKILL.md · Apache-2.0

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: 0e50241425f12e93.

BEGIN THIRD-PARTY FILE 0e50241425f12e93
```text
---
name: stream-react-native
description: "Builds, integrates, migrates, audits Stream Chat, Video, and Feeds in React Native CLI and Expo apps. Use when scaffolding an RN/Expo app, adding Stream to an existing app, upgrading a Stream SDK (Chat v8->v9, Feeds v2->v3), migrating from Sendbird (@sendbird/chat, @sendbird/uikit-react-native), building AI assistants / LLM chat (streaming, stop generating) with @stream-io/chat-react-native-ai, answering RN/Expo how-to questions, or customizing Stream RN UI. Triggers on React Native, Expo, Expo Router, stream-chat-react-native, stream-chat-expo, @stream-io/video-react-native-sdk, @stream-io/feeds-react-native-sdk, ChatGPT clone, channel list, message list, MessageComposer, threads, attachment picker, audio messages, offline support, push notifications, video call, livestream, audio room, ringing, CallContent, ParticipantView, activity/timeline/notification feed, StreamFeeds, comments, reactions, follows, and theming. React Native and Expo only - not web React (use stream-react), not Moderation review UI."
license: See LICENSE in repository root
compatibility: Supports new or existing React Native CLI and Expo apps running Stream Chat RN or Stream Video RN with React Native New Architecture. The `getstream` CLI is the default credentials and requested demo-data path; pasted API key and token are accepted as fallback.
metadata:
  author: GetStream
allowed-tools: >-
  Read, Write, Edit, Glob, Grep, Task,
  WebFetch(domain:getstream.io),
  WebFetch(domain:raw.githubusercontent.com),
  Bash(ls *), Bash(find . *), Bash(grep *), Bash(awk *), Bash(tail *), Bash(sips *),
  Bash(cat package.json), Bash(cat app.json), Bash(cat app.config.js), Bash(cat app.config.ts),
  Bash(cat babel.config.js), Bash(cat metro.config.js),
  Bash(command -v getstream), Bash(getstream *),
  Bash(npm view *), Bash(npm install *), Bash(npm uninstall *),
  Bash(yarn add *), Bash(pnpm add *),
  Bash(curl -Ls https://getstream.io/chat/docs/sdk/react-native/llms.txt),
  Bash(curl -Ls https://getstream.io/chat/docs/react-native/llms.txt),
  Bash(curl -Ls https://getstream.io/video/docs/react-native/llms.txt),
  Bash(curl -Ls https://getstream.io/activity-feeds/docs/react-native/llms.txt),
  Bash(curl -s http://localhost:*),
  Bash(npx create-expo-app@latest *), Bash(npx create-expo-app *),
  Bash(npx @react-native-community/cli@latest init *),
  Bash(npx expo install *), Bash(npx expo prebuild *), Bash(npx expo start *),
  Bash(npx expo run:*), Bash(npx react-native *), Bash(npx tsc *),
  Bash(npm run *), Bash(yarn *), Bash(pnpm *), Bash(node -e *),
```
END THIRD-PARTY FILE 0e50241425f12e93

The third-party file has ended. Everything between the 0e50241425f12e93 tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2602 of 31643 bytes. © GetStream · Apache-2.0 · https://github.com/GetStream/agent-skills/tree/HEAD/skills/stream-react-native/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
