{"id":15288678,"url":"https://github.com/getstream/stream-chat-swiftui","last_synced_at":"2026-01-27T23:23:46.370Z","repository":{"id":36953837,"uuid":"429370550","full_name":"GetStream/stream-chat-swiftui","owner":"GetStream","description":"SwiftUI Chat SDK ➜ Stream Chat 💬 ","archived":false,"fork":false,"pushed_at":"2025-05-09T13:27:51.000Z","size":127613,"stargazers_count":396,"open_issues_count":10,"forks_count":100,"subscribers_count":31,"default_branch":"develop","last_synced_at":"2025-05-15T10:06:49.460Z","etag":null,"topics":["chat","chat-api","chat-application","chat-sdk","chatting-app","ios","sdk","stream-chat","streamio","swiftui","swiftui-chat","swiftui-components","swiftui-framework"],"latest_commit_sha":null,"homepage":"https://getstream.io/chat/sdk/swiftui/","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GetStream.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-11-18T09:32:21.000Z","updated_at":"2025-05-15T09:28:05.000Z","dependencies_parsed_at":"2024-01-05T10:27:23.831Z","dependency_job_id":"f64957df-2e5f-4740-866c-39beb1babb3b","html_url":"https://github.com/GetStream/stream-chat-swiftui","commit_stats":{"total_commits":845,"total_committers":27,"mean_commits":"31.296296296296298","dds":"0.17869822485207099","last_synced_commit":"b1069292429ceae97f29521548eeb3888d581d91"},"previous_names":[],"tags_count":81,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GetStream%2Fstream-chat-swiftui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GetStream%2Fstream-chat-swiftui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GetStream%2Fstream-chat-swiftui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GetStream%2Fstream-chat-swiftui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GetStream","download_url":"https://codeload.github.com/GetStream/stream-chat-swiftui/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254319721,"owners_count":22051074,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chat","chat-api","chat-application","chat-sdk","chatting-app","ios","sdk","stream-chat","streamio","swiftui","swiftui-chat","swiftui-components","swiftui-framework"],"created_at":"2024-09-30T15:52:02.681Z","updated_at":"2026-01-16T10:54:25.382Z","avatar_url":"https://github.com/GetStream.png","language":"Swift","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"ReadmeAssets/iOS_Chat_Messaging.png\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://sonarcloud.io/summary/new_code?id=GetStream_stream-chat-swiftui\"\u003e\u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=GetStream_stream-chat-swiftui\u0026metric=coverage\" /\u003e\u003c/a\u003e\n\n  \u003cimg id=\"stream-chat-swiftui-label\" alt=\"StreamChatSwiftUI\" src=\"https://img.shields.io/badge/StreamChatSwiftUI-9.78%20MB-blue\"/\u003e\n\u003c/p\u003e\n\n## SwiftUI StreamChat SDK\n\nThe SwiftUI SDK is built on top of the [StreamChat](https://getstream.io/chat/docs/ios-swift/?language=swift) framework and it's a SwiftUI alternative to the [StreamChatUI](https://getstream.io/chat/docs/sdk/ios/) SDK. It's built completely in SwiftUI, using declarative patterns, that will be familiar to developers working with SwiftUI. The SDK includes an extensive set of performant and customizable UI components which allow you to get started quickly with little to no plumbing required.\n\nThe complete documentation and capabilities of the SwiftUI SDK can be found [here](https://getstream.io/chat/docs/sdk/ios/swiftui/) and you may find our [SwiftUI Chat App tutorial](https://getstream.io/tutorials/swiftui-chat/) helpful as well.\n\n## Main Features\n\n- **Channel list:** Browse channels and perform actions on them.\n- **Message list:** Fast message list that renders many different types of messages.\n- **Message Composer:** Powerful and customizable message composer, extendable with your own custom attachments.\n- **Message reactions:** Ready made reactions support, easily configurable depending on your use-cases.\n- **Offline support:** Browse channels and send messages while offline.\n- **Highly customizable components:** The components are designed in a way that you can easily customize or completely swap existing views with your own implementation.\n\n## Main Principles\n\n- **Progressive disclosure:** The SDK can be used easily with very minimal knowledge of it. As you become more familiar with it, you can dig deeper and start customizing it on all levels.\n- **Familiar behavior**: The UI elements are good platform citizens and behave like native elements; they respect `tintColor`, paddings, light/dark mode, dynamic font sizes, etc.\n- **Swift native API:** Uses Swift's powerful language features to make the SDK usage easy and type-safe.\n- **Uses `SwiftUI` patterns and paradigms:** The API follows the declarative nature and patterns of SwiftUI. It makes integration with your existing SwiftUI code easy and familiar.\n- **Fully open-source implementation:** You have access to the complete source code of the SDK here on GitHub.\n\n## Architecture\n\nThe SwiftUI SDK offers three types of components:\n\n- Screens - Easiest to integrate, but offer small customizations, like branding and text changes.\n- Stateful components - Offer more customization options and possibility to inject custom views. Also fairly simple to integrate, if the extension points are suitable for your chat use-case. These components come with view models.\n- Stateless components - These are the building blocks for the other two types of components. In order to use them, you would have to provide the state and data. Using these components only make sense if you want to implement completely custom chat experience.\n\n## Documentation Generation\n\nTo generate the documentation for SwiftUI StreamChat SDK, run the following command:\n\n```bash\nxcodebuild docbuild -skipMacroValidation -skipPackagePluginValidation -derivedDataPath .derivedData -scheme StreamChatSwiftUI -destination generic/platform=iOS | xcpretty\nopen .derivedData/Build/Products/Debug-iphoneos/StreamChatSwiftUI.doccarchive\n```\n\nThis will build the documentation archive and automatically open it in Xcode.\n\n## Free for Makers\n\nStream is free for most side and hobby projects. You can use Stream Chat for free if you have less than five team members and no more than $10,000 in monthly revenue.\n\n---\n\n## We are hiring\nWe'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.\nOur 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.\nCheck out our current openings and apply via [Stream's website](https://getstream.io/team/#jobs).\n\n## Quick Overview\n\n### Channel List\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth width=\"50%\"\u003eFeatures\u003c/th\u003e\n    \u003cth width=\"30%\"\u003ePreview\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e A list of channels matching provided query \u003c/td\u003e\n    \u003cth rowspan=\"9\"\u003e\u003cimg src=\"ReadmeAssets/ChannelListPreview.gif?raw=true\" width=\"80%\" /\u003e\u003c/th\u003e\n  \u003c/tr\u003e\n   \u003ctr\u003e \u003ctd\u003e Channel name and image based on the channel members or custom data\u003c/td\u003e \u003c/tr\u003e\n  \u003ctr\u003e \u003ctd\u003e Unread messages indicator \u003c/td\u003e \u003c/tr\u003e\n  \u003ctr\u003e \u003ctd\u003e Preview of the last message \u003c/td\u003e \u003c/tr\u003e\n  \u003ctr\u003e \u003ctd\u003e Online indicator for avatars \u003c/td\u003e \u003c/tr\u003e\n  \u003ctr\u003e \u003ctd\u003e Create new channel and start right away \u003c/td\u003e \u003c/tr\u003e\n  \u003ctr\u003e \u003ctd\u003e Customizable channel actions on swipe \u003c/td\u003e \u003c/tr\u003e\n  \u003ctr\u003e \u003ctd\u003e Typing and read indicators \u003c/td\u003e \u003c/tr\u003e\n  \u003ctr\u003e\u003ctd\u003e \u003c/td\u003e \u003c/tr\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n### Message List\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth width=\"50%\"\u003eFeatures\u003c/th\u003e\n    \u003cth width=\"30%\"\u003ePreview\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e A list of messages in a channel \u003c/td\u003e\n    \u003cth rowspan=\"14\"\u003e\u003cimg src=\"ReadmeAssets/MessageListPreview.gif?raw=true\" width=\"80%\" /\u003e\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e \u003ctd\u003e Photo attachments \u003c/td\u003e \u003c/tr\u003e\n  \u003ctr\u003e \u003ctd\u003e Giphy attachments \u003c/td\u003e \u003c/tr\u003e\n  \u003ctr\u003e \u003ctd\u003e Video attachments \u003c/td\u003e \u003c/tr\u003e\n  \u003ctr\u003e \u003ctd\u003e Link previews \u003c/td\u003e \u003c/tr\u003e\n  \u003ctr\u003e \u003ctd\u003e File previews \u003c/td\u003e \u003c/tr\u003e\n  \u003ctr\u003e \u003ctd\u003e Custom attachments \u003c/td\u003e \u003c/tr\u003e\n  \u003ctr\u003e \u003ctd\u003e Message reactions \u003c/td\u003e \u003c/tr\u003e\n  \u003ctr\u003e \u003ctd\u003e Message grouping based on the send time \u003c/td\u003e \u003c/tr\u003e\n  \u003ctr\u003e \u003ctd\u003e Thread and inline replies \u003c/td\u003e \u003c/tr\u003e\n  \u003ctr\u003e \u003ctd\u003e Typing and read indicators \u003c/td\u003e \u003c/tr\u003e\n  \u003ctr\u003e \u003ctd\u003e Async voice messages \u003c/td\u003e \u003c/tr\u003e\n  \u003ctr\u003e \u003ctd\u003e Polls support \u003c/td\u003e \u003c/tr\u003e\n  \u003ctr\u003e\u003ctd\u003e \u003c/td\u003e \u003c/tr\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n---\n\n### Message Composer\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth width=\"50%\"\u003eFeatures\u003c/th\u003e\n    \u003cth width=\"30%\"\u003ePreview\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e Support for multiline text, expands and shrinks as needed \u003c/td\u003e\n    \u003cth rowspan=\"10\"\u003e\u003cimg src=\"ReadmeAssets/Message_Composer_Bezels.png?raw=true\" width=\"80%\" /\u003e\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e \u003ctd\u003e Image, video and file attachments \u003c/td\u003e \u003c/tr\u003e\n  \u003ctr\u003e \u003ctd\u003e Camera integration \u003c/td\u003e \u003c/tr\u003e\n  \u003ctr\u003e \u003ctd\u003e Custom attachments \u003c/td\u003e \u003c/tr\u003e\n  \u003ctr\u003e \u003ctd\u003e Recording async voice messages \u003c/td\u003e \u003c/tr\u003e\n  \u003ctr\u003e \u003ctd\u003e Creation of polls \u003c/td\u003e \u003c/tr\u003e\n  \u003ctr\u003e \u003ctd\u003e Mentions \u003c/td\u003e \u003c/tr\u003e\n  \u003ctr\u003e \u003ctd\u003e Instant commands (e.g. giphy) \u003c/td\u003e \u003c/tr\u003e\n  \u003ctr\u003e \u003ctd\u003e Custom commands \u003c/td\u003e \u003c/tr\u003e\n  \u003ctr\u003e\u003ctd\u003e \u003c/td\u003e \u003c/tr\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n---\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetstream%2Fstream-chat-swiftui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgetstream%2Fstream-chat-swiftui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetstream%2Fstream-chat-swiftui/lists"}