|
1 | 1 | # Official Flutter packages for [Stream Chat](https://getstream.io/chat/sdk/flutter/) |
2 | 2 |
|
3 | | - |
| 3 | + |
4 | 4 |
|
5 | 5 | [](https://github.com/GetStream/stream-chat-flutter/actions/workflows/stream_flutter_workflow.yml) |
6 | 6 | [](https://github.com/invertase/melos) |
7 | 7 |
|
| 8 | +V10 brings a modern redesign, a unified design system shared across all Stream SDK platforms, and improved developer experience. |
| 9 | + |
8 | 10 | **Quick Links** |
9 | 11 |
|
10 | 12 | - [Register](https://getstream.io/chat/trial/) to get an API key for Stream Chat |
11 | 13 | - [Flutter Chat SDK Tutorial](https://getstream.io/chat/flutter/tutorial/) |
12 | | -- [Chat UI Kit](https://getstream.io/chat/ui-kit/) |
13 | | -- [Sample apps](https://github.com/GetStream/flutter-samples) |
| 14 | +- [Documentation](https://getstream.io/chat/docs/sdk/flutter/) |
| 15 | +- [Sample app](sample_app) |
14 | 16 |
|
15 | | -This repository contains code for our [Dart](https://dart.dev/) and [Flutter](https://flutter.dev/) chat clients. |
| 17 | +## What's New in V10 |
16 | 18 |
|
17 | | -Stream allows developers to rapidly deploy scalable feeds and chat messaging with an industry leading 99.999% uptime SLA guarantee. |
| 19 | +Version 10 is a major update to the Stream Chat Flutter SDK: |
18 | 20 |
|
19 | | -**V8 Migration Guide** |
| 21 | +- **Modern redesign** — refreshed channel list, message list, composer, reactions, avatars, and media viewer with a cleaner, more polished default look. |
| 22 | +- **Unified design system** — design tokens (colors, typography, spacing, icons) are now consistent across all Stream SDK platforms. Theming is rebuilt around `StreamTheme`, a Flutter `ThemeExtension` registered on `MaterialApp.theme`. |
| 23 | +- **Cross-platform name alignment** — APIs and component names now match their iOS, Android, React, and React Native counterparts (e.g. `StreamMessageComposer`, `StreamChannelListItem`). |
| 24 | +- **`StreamComponentFactory`** — a single customization entry point that replaces the scattered builder slots that previously lived on each widget. |
| 25 | +- **Cookbook** — new task-oriented recipes for common customizations. |
20 | 26 |
|
21 | | -For upgrading from V7 to V8, please refer to the [V8 Migration Guide](https://getstream.io/chat/docs/sdk/flutter/guides/migration_guide_8_0/) |
| 27 | +See the [V10 Migration Guide](https://getstream.io/chat/docs/sdk/flutter/guides/migration-guide-10-0/) for a full list of breaking changes and upgrade instructions. |
22 | 28 |
|
23 | | -## Sample apps and demos |
24 | | -Check out our [sample_app](sample_app) to see Stream Chat's core features in action. For more sample apps and demos, visit [GetStream/flutter-samples](https://github.com/GetStream/flutter-samples). |
| 29 | +## Features |
25 | 30 |
|
26 | | -## Free for Makers |
| 31 | +The UI package ships an extensive set of performant and customizable widgets: |
27 | 32 |
|
28 | | -Stream is free for most side and hobby projects. To qualify your project/company needs to have < 5 team members and < $10k in monthly revenue. |
29 | | -For complete pricing details visit our [Chat Pricing Page](https://getstream.io/chat/pricing/) |
| 33 | +- Rich media messages with Markdown rendering |
| 34 | +- Reactions |
| 35 | +- Threads and quoted replies |
| 36 | +- Typing and read indicators |
| 37 | +- Channel and message lists |
| 38 | +- Message composer with autocomplete triggers (`@` mentions, `/` commands) |
| 39 | +- Image, video, and file uploads with previews and a built-in media gallery viewer |
| 40 | +- Voice messages |
| 41 | +- Polls |
| 42 | +- Drafts |
| 43 | +- Pinned messages |
| 44 | +- Message reminders |
| 45 | +- Message actions context menu (reply, edit, copy, pin, delete, flag, mute, block, and more) |
| 46 | +- Message search |
| 47 | +- Giphy support |
| 48 | +- AI assistant streaming responses |
| 49 | +- Push notifications (Firebase, APN, and Huawei) |
| 50 | +- Offline storage and optimistic updates |
| 51 | +- Static and live location sharing |
| 52 | +- Localization |
| 53 | +- and a lot more. |
30 | 54 |
|
31 | | -## Structure |
32 | | -Stream Chat Dart is a monorepo built using [Melos](https://docs.page/invertase/melos). Individual packages can be found in the `packages` directory while configuration and top level commands can be found in `melos.yaml`. |
| 55 | +## Sample App |
33 | 56 |
|
34 | | -To get started, run `bootstrap` after cloning the project. |
| 57 | +Check out the [`sample_app`](sample_app) in this repository — a fully functional messenger built with `stream_chat_flutter` that demonstrates the SDK's core features end to end. It is the recommended reference when wiring things up in your own app. |
35 | 58 |
|
36 | | -```shell |
37 | | -melos bootstrap |
38 | | -``` |
| 59 | +For more sample apps and demos, visit [GetStream/flutter-samples](https://github.com/GetStream/flutter-samples). |
| 60 | + |
| 61 | +## Free for Makers |
| 62 | + |
| 63 | +Stream is free for most side and hobby projects. To qualify, your project/company needs to have fewer than five team members and under $10,000 in monthly revenue. |
| 64 | +For complete pricing details, visit our [Chat Pricing Page](https://getstream.io/chat/pricing/). |
39 | 65 |
|
40 | | -## Packages |
41 | | -We provide a variety of packages depending on the level of customization you want to achieve. |
| 66 | +## Packages |
| 67 | + |
| 68 | +Stream Chat Dart is a monorepo built using [Melos](https://docs.page/invertase/melos). Individual packages can be found in the `packages` directory; configuration and top-level commands live in `melos.yaml`. |
| 69 | + |
| 70 | +The SDK is layered — each package builds on top of the previous: |
42 | 71 |
|
43 | 72 | ### [`stream_chat`](https://github.com/GetStream/stream-chat-flutter/tree/master/packages/stream_chat) |
44 | | -A pure Dart package that can be used on any Dart project. It provides a low-level client to access the Stream Chat service. |
45 | 73 |
|
46 | | -### [`stream_chat_persistence`](https://github.com/GetStream/stream-chat-flutter/tree/master/packages/stream_chat_persistence) |
47 | | -This package provides a persistence client for fetching and saving chat data locally. Stream Chat Persistence uses Moor as a disk cache. |
| 74 | +The low-level client (LLC), a pure Dart package that wraps the Stream Chat API. Use it directly if you want to build your own UI and state layer. |
48 | 75 |
|
49 | 76 | ### [`stream_chat_flutter_core`](https://github.com/GetStream/stream-chat-flutter/tree/master/packages/stream_chat_flutter_core) |
50 | | -This package provides business logic to fetch common things required for integrating Stream Chat into your application. The `core` package allows more customisation and hence provides business logic but no UI components. |
| 77 | + |
| 78 | +Provides the business logic, controllers, and builders required to integrate Stream Chat into a Flutter app, without shipping any UI of its own. |
51 | 79 |
|
52 | 80 | ### [`stream_chat_flutter`](https://github.com/GetStream/stream-chat-flutter/tree/master/packages/stream_chat_flutter) |
53 | | -This library includes both a low-level chat SDK and a set of reusable and customizable UI components. |
| 81 | + |
| 82 | +The full UI SDK. Includes a set of reusable and customizable UI widgets on top of the core and low-level client packages. **This is the recommended starting point for most apps.** |
| 83 | + |
| 84 | +### [`stream_chat_persistence`](https://github.com/GetStream/stream-chat-flutter/tree/master/packages/stream_chat_persistence) |
| 85 | + |
| 86 | +Provides a Drift-backed persistence client for offline storage. Plugs into any of the packages above. |
54 | 87 |
|
55 | 88 | ### [`stream_chat_localizations`](https://github.com/GetStream/stream-chat-flutter/tree/master/packages/stream_chat_localizations) |
56 | | -This library includes a set of localization files for the Flutter UI components. |
57 | 89 |
|
58 | | -## Flutter Chat Tutorial |
| 90 | +Provides a set of localizations for the UI SDK. |
59 | 91 |
|
60 | | -The best place to start is the [Flutter Chat Tutorial](https://getstream.io/chat/flutter/tutorial/). |
61 | | -It teaches you how to use this SDK and also shows how to make frequently required changes. |
| 92 | +### Choosing the Right Package |
| 93 | + |
| 94 | +We recommend using `stream_chat_flutter` for most apps. Unless your UI is completely different from the common industry standard, you should be able to customize the built-in widgets to match your needs. |
| 95 | + |
| 96 | +- Use `stream_chat_flutter_core` if you need full UI control but want the data/state logic handled for you. |
| 97 | +- Use `stream_chat` directly for maximum control over architecture, UI, and data. |
| 98 | + |
| 99 | +You can also mix and match — it is common to use the UI SDK for most screens and drop down to the low-level client for specific operations. |
| 100 | + |
| 101 | +## Getting Started |
| 102 | + |
| 103 | +To get started, run `bootstrap` after cloning the project: |
62 | 104 |
|
63 | | -## Example Apps |
| 105 | +```shell |
| 106 | +melos bootstrap |
| 107 | +``` |
64 | 108 |
|
65 | | -Every package folder includes a fully functional example with setup instructions. |
| 109 | +The best place to start is the [Flutter Chat Tutorial](https://getstream.io/chat/flutter/tutorial/). |
| 110 | +It teaches you how to use this SDK and shows how to make frequently required changes. |
66 | 111 |
|
67 | | -We also provide a set of sample apps created using the Stream Flutter SDK at [this location](https://github.com/GetStream/flutter-samples). |
| 112 | +Every package folder also includes a fully functional `example` with setup instructions. |
68 | 113 |
|
69 | 114 | ## Versioning Policy |
70 | 115 |
|
71 | | -All of the Stream Chat packages follow [semantic versioning](https://semver.org/). |
| 116 | +All of the Stream Chat packages follow [semantic versioning](https://semver.org/): |
72 | 117 |
|
73 | | -See our [versioning policy documentation](https://getstream.io/chat/docs/sdk/flutter/basics/versioning_policy/) for more information. |
| 118 | +- Bug fixes and behavior improvements cause a **patch** version bump. |
| 119 | +- New features are shipped with an increased **minor** version. |
| 120 | +- Incompatible API changes cause a **major** version increase. |
74 | 121 |
|
75 | | -## We are hiring |
| 122 | +Occasionally, the SDK can include visual changes (whitespace, color, sizing) in minor versions as we continuously improve the default look of our UI widgets. |
76 | 123 |
|
77 | | -We've recently closed a [\$38 million Series B funding round](https://techcrunch.com/2021/03/04/stream-raises-38m-as-its-chat-and-activity-feed-apis-power-communications-for-1b-users/) and we keep actively growing. |
| 124 | +See the [installation docs](https://getstream.io/chat/docs/sdk/flutter/basics/installation/) and the [releases page](https://github.com/GetStream/stream-chat-flutter/releases) for the full version history. |
| 125 | + |
| 126 | +## We Are Hiring |
| 127 | + |
| 128 | +We've recently closed a [$38 million Series B funding round](https://techcrunch.com/2021/03/04/stream-raises-38m-as-its-chat-and-activity-feed-apis-power-communications-for-1b-users/) and we keep actively growing. |
78 | 129 | Our APIs are used by more than a billion end-users, and you'll have a chance to make a huge impact on the product within a team of the strongest engineers all over the world. |
79 | 130 |
|
80 | 131 | Check out our current openings and apply via [Stream's website](https://getstream.io/team/#jobs). |
81 | | - |
|
0 commit comments