// the find
GetStream/stream-chat-react-native
💬 React-Native Chat SDK ➜ Stream Chat. Includes a tutorial on building your own chat app experience using React-Native, React-Navigation and Stream
Official React Native SDK for Stream Chat, a commercial chat-as-a-service platform. Provides pre-built UI components for channels, messages, threads, attachments, and reactions for both bare React Native and Expo. Aimed at teams who want to ship chat quickly without building the WebSocket layer and message persistence themselves.
- Three example apps at different complexity levels (simple Expo, TypeScript reference, full-featured SampleApp with Slack/WhatsApp-style flows) give you a realistic sense of what you're getting into before committing
- Theming and component override system is well thought out — almost every component can be swapped out via context props, so you're not stuck wrestling with opaque internals when you need custom UI
- CI/CD pipeline is mature: semantic-release, conventional commits, bundle size tracking, and Fastlane distribution scripts are all wired up and checked on every PR
- TypeScript throughout with custom type augmentation support (custom-types.d.ts pattern) so your own channel/message data fields get proper type inference
- 1734 KB JS bundle size is brutal — that's a serious hit for apps where chat is a secondary feature, and there's no documented tree-shaking or partial-import story
- Navigation is explicitly out of scope and left to the consumer, which is fair, but the examples use React Navigation in ways that are tightly coupled to their own screen structure, making it harder to drop into an existing app with different navigation setup
- Minor versions can ship breaking changes per their own README warning — that's a real maintenance tax on adopters, especially given how frequently RN ecosystem churn already forces upgrades
- Hard lock-in to Stream's paid service; there's no abstraction layer over the transport/backend, so switching providers or self-hosting means rewriting everything, not just swapping a config value