Model or dataset
GetStream/stream-chat-react-native avatar
GetStream/stream-chat-react-native

stream-chat-react-native ships a monorepo with three packages and leaves navigation to you

💬 React-Native Chat SDK ➜ Stream Chat. Includes a tutorial on building your own chat app experience using React-Native, React-Navigation and Stream

1,182 stars377 forksTypeScriptNOASSERTION

At a glance

What is it?
The official React Native and Expo SDK for Stream Chat, distributed as a core package plus native and Expo variants, with example apps and agent skills for scaffolding. Two things to read before adopting it: minor releases may contain breaking changes, and routing between components is the consumer's job.
Who is it for?
Adopt stream-chat-react-native if you are building a chat experience on React Native and you want a hosted backend rather than running one, and if the Stream pricing model fits a project with fewer than five team members and under ten thousand dollars in monthly revenue.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A monorepo with a core package and two delivery variants

The package.json describes the shape of the repository better than the README does. It is a private root package with seven Yarn workspaces: a shared TypeScript config, then `package/`, `package/native-package/` and `package/expo-package/`, then the three example applications.

Three publishable packages from one source is the interesting part. A core package holds the logic, and the native and Expo packages are the delivery mechanisms for the two ways a React Native app is built. The Expo package removes the native build step, and the native package carries it. For a consumer this matters at install time, because the variant you depend on determines whether your CI needs Android and iOS toolchains.

The dependency metadata records which packages ship as prebuilt binaries, which is a newer Yarn feature that avoids compiling them on install: `@swc/core`, `better-sqlite3`, `react-native-nitro-modules` and `unrs-resolver` are all marked as built. The presence of `react-native-nitro-modules` alongside `better-sqlite3` suggests the native side leans on Nitro modules for its native pieces.

The tooling is modern and opinionated. The engine requirement is Node 22.13 or newer, TypeScript is pinned at 6.0.3, and the lint stack is ESLint 9 with a flat config at `eslint.config.mjs`, the React, React Hooks, React Native, import and Jest plugins, plus Prettier with its own config and ignore file, and Husky for git hooks. The `resolutions` block pins `@types/react` to 19.2 or newer across the workspace, which is the kind of thing that stops two workspaces disagreeing about React types.

There is also a `perf/` directory, an `ai-docs/` directory, and a `dotgit/` directory, which is worth noting because the last one is unusual enough to be worth understanding before you clone it.

Agent skills, and an AGENTS.md for people working on the SDK itself

The repository has embraced AI coding assistants in a way that is worth examining, because it is more structured than a single instruction file.

There is an `ai-docs/` directory and an `AGENTS.md` at the root, described in the README as covering repository structure, commands and conventions for contributors working on the library with an agent. A `CLAUDE.md` sits alongside it, and there is a `.claude/` directory, so the project keeps per-tool instructions as well as a tool-neutral one.

The consumer facing side is different. The README points to agent skills that teach an agent how to use the SDK correctly, installed with a two step process.

bash
curl -fsSL https://getstream.io/cli.sh | bash
getstream init

After that the agent is given a slash command to run.

code
/stream-react-native create a new Expo chat app
/stream-react-native upgrade stream-chat-react-native to v9

The described capabilities are scaffolding a new Expo or React Native CLI app with the SDK wired up, adding Stream to an existing app, auditing an existing integration, and migrating between SDK major versions, including from Sendbird. It works with Claude Code, Cursor, Codex and any other agent that reads the universal `.agents` location.

Two observations. The migration path from Sendbird being handled by a skill tells you that a meaningful number of teams arrive with an existing chat product to replace, which is the normal reason to adopt a hosted chat backend. And the audit capability is a genuinely useful thing to point an agent at when you inherit an integration you do not understand.

The release process is automated, using workspaces and semantic-release, with conventional commits enforced through commitlint and a `commitlint.config.js` at the root, and the process documented in a RELEASE_PROCESS.md file.

Navigation is the consumer's job, and minor releases can break

The README has a Keep in mind section with two numbered items, and both are things a team discovers the hard way if they skip it.

The first is that navigation between different components is something the SDK expects consumers to implement. The SDK gives you the chat screens and the message list, and the navigation between them, the entry point, the deep links and the channel list routing are your app's concern. The repository points at the example app for the pattern. For anyone coming from a component library that ships a navigator, this is a different contract, and it is a normal one, since chat UIs differ enough between apps that baking in navigation tends to be wrong.

The second is that minor releases may come with some breaking changes, and you should always check the release notes before upgrading a minor version. That is an unusual statement to make about a package at version 9, where semantic versioning normally promises that a minor release is safe.

The release history shows why the statement is there. v9.10.0 was published on 2026-10-14, v9.9.4 on 2026-10-12 and v9.9.3 on 2026-10-08, three releases in six days, with the last push to the repository on 2026-10-15. A project shipping that often will occasionally change a prop or a type in a patch, which is why the release notes are the place to look before upgrading.

The default branch is `develop`, so a clone gives you the working branch rather than the last release, which is a normal convention for a repo with automated releases and one more reason to install from npm rather than from git.

The examples, the samples and what the free tier actually covers

The repository includes two example apps by its own description, one built with Expo and a more full featured one built with the React Native CLI, and the example directory actually holds three: `ExpoMessaging`, `SampleApp` and `ExpoChatGPTSample`.

The third one, the GPT sample, tells you the direction the vendor is pushing, and it sits next to a separate repository, GetStream/react-native-samples, that holds the fully fledged demos. That repository contains a Slack clone, an iMessage clone and a WhatsApp clone, each built with React Native and Stream Chat. Those are the fastest way to see what the SDK looks like when it is doing real work, rather than in a minimal message list.

On cost, the README states that Stream is free for most side and hobby projects, and gives the qualification: the project or company needs fewer than five team members and less than ten thousand dollars in monthly revenue. The full pricing is on the chat pricing page. That is a specific and unusually readable free tier, and it is the first thing to check against your own situation.

The JS bundle size badge in the README reads 1975 KB, which is large for a chat SDK and is a reasonable thing to weigh if you are optimising startup for a mobile app. It is a single number without a comparison, so treat it as a data point rather than a verdict.

The tutorial is the recommended starting point, and the README says it teaches how to use the SDK and also how to make frequently required changes, which is the distinction between a getting started page and a document aimed at the second week of a project.

Licence, governance and who is behind it

The repository carries a LICENSE file and a Contributor License Agreement form that contributors must sign first, and the metadata reports a licence GitHub could not classify, which is what a custom corporate licence looks like from outside. The SDK is published to npm as `stream-chat-react-native`, and the source is under the GetStream organisation with a SECURITY.md, a CONTRIBUTING.md and a PULL_REQUEST_TEMPLATE.md.

That combination, a custom licence plus a CLA plus a company-backed team, is the honest picture of this project. It is not a community foundation project, and the README says so directly with a hiring section. The company describes a 38 million dollar Series B round closed in 2021 and says its APIs are used by more than a billion end users, and invites applications through its site.

The practical read for an adopter is that this is a well funded vendor SDK with an active release train and a responsive team, and that your dependency is on a commercial service rather than on a foundation project. That changes what happens when the vendor changes pricing, and it changes who you can ask for a feature. The free tier and the pricing page are the two things to read before you commit, and the v9 migration path in the agent skills suggests that major version upgrades are a real recurring cost.

The documentation site is getstream.io/chat/docs/sdk/reactnative, the SDK reference is a separate page, and the release notes live on the GitHub releases page. The contributing docs for the library itself are in the repository wiki under the dev setup page.

Editorial conclusion

Adopt stream-chat-react-native if you are building a chat experience on React Native and you want a hosted backend rather than running one, and if the Stream pricing model fits a project with fewer than five team members and under ten thousand dollars in monthly revenue. Do not adopt it if you need navigation between screens to come from the SDK, because the README is explicit that consumers implement that themselves, and do not treat a minor version bump as a safe upgrade since the release notes are where breaking changes land. Verify first that the account tier you need exists, that the Expo variant or the native variant matches your build setup, and that you read the release notes between your current version and the target.

Frequently asked questions

What is the difference between the core, native and Expo packages in stream-chat-react-native?

The repository is a Yarn workspace monorepo with a shared TypeScript config and three publishable packages under package/, package/native-package/ and package/expo-package/. The Expo package avoids a native build step while the native package carries it, and both build on the core package.

Does the SDK provide navigation between chat screens?

No. The README states that navigation between different components is something consumers are expected to implement, and points at the example app in the repository for the pattern.

Is it safe to upgrade to a new minor version of stream-chat-react-native?

The README warns that minor releases may come with some breaking changes and says to always check the release notes before upgrading a minor version. Recent releases include v9.10.0 on 2026-10-14 and v9.9.4 on 2026-10-12.

What does the free tier for Stream Chat cover?

Stream is free for most side and hobby projects, and the README states the qualification: the project or company needs fewer than five team members and less than ten thousand dollars in monthly revenue.

Can an AI coding agent scaffold an app with this SDK?

Yes. The agent skills are installed with curl -fsSL https://getstream.io/cli.sh | bash followed by getstream init, and the /stream-react-native skill can scaffold a new Expo or React Native CLI app, add Stream to an existing app, audit an integration, or migrate between SDK major versions.

Official sources

  1. GetStream/stream-chat-react-native on GitHub
  2. Issues
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/getstream-stream-chat-react-native.svg)](https://hysenlabs.com/projects/getstream-stream-chat-react-native)

Was this useful?