Stream Chat
APIs and SDKs for building in-app chat, messaging, and activity feeds, with pre-built UI kits for React, React Native, and native mobile platforms.
Use Cases
Free Tier
Free Build plan: 1,000 MAU, 100 concurrent connections, 1M API calls/month, 10GB API bandwidth/month. No credit card required.
How to Maximize the Free Tier
The free Build plan caps you at 1,000 monthly active users and 100 concurrent connections — fine for a beta or small community, but you must upgrade ($399/mo Start) before a real launch, so time your migration. Watch the 1M API call budget: cron jobs that poll query channels are the most common cause of overage, so use webhooks and channel watches instead of polling. Message storage is limited on free ('Limits Apply'), so mirror messages to your own database via webhooks early if you need history. Combine with Neon or Supabase for user/message persistence, and issue user tokens server-side (e.g., a Cloudflare Worker) instead of the client-side generator before going public.
Getting Started
Sign up at getstream.io with GitHub or email (no credit card) → create a new app in the dashboard and select Chat + your platform (React, React Native, etc.) → copy the app ID, key, and secret → install the SDK (npm install stream-chat) → initialize the client with your app ID and key → generate a user token (dashboard generator works for testing; use a backend for production) → connect the user, create a channel, and send your first message.
Pros
- UI kits: Pre-built, customizable chat UI components for React and native platforms save weeks of frontend work
- No credit card: Free Build plan activates immediately with no payment method and no surprise charges
- Rich features: Threads, reactions, typing indicators, moderation, and read states work out of the box
Cons
- MAU ceiling: 1,000 MAU is a hard cap; the next tier is a steep $399/mo jump for small projects
- Concurrent limit: 100 concurrent connections blocks realistic load testing and can drop users during spikes
- Storage limits: Message storage is limited on free — long-term history requires your own persistence via webhooks