SwiftUI StreamChat SDK

The SwiftUI SDK is built on top of the StreamChat framework and it’s a SwiftUI alternative to the StreamChatUI 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.

The complete documentation and capabilities of the SwiftUI SDK can be found here and you may find our SwiftUI Chat App tutorial helpful as well.

Main Features

  • Channel list: Browse channels and perform actions on them.
  • Message list: Fast message list that renders many different types of messages.
  • Message Composer: Powerful and customizable message composer, extendable with your own custom attachments.
  • Message reactions: Ready made reactions support, easily configurable depending on your use-cases.
  • Offline support: Browse channels and send messages while offline.
  • Highly customizable components: The components are designed in a way that you can easily customize or completely swap existing views with your own implementation.

Main Principles

  • 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.
  • 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.
  • Swift native API: Uses Swift’s powerful language features to make the SDK usage easy and type-safe.
  • 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.
  • Fully open-source implementation: You have access to the complete source code of the SDK here on GitHub.


The SwiftUI SDK offers three types of components:

  • Screens – Easiest to integrate, but offer small customizations, like branding and text changes.
  • 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.
  • 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.

Free for Makers

Stream 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.

We are hiring

We’ve recently closed a $38 million Series B funding round and we keep actively growing. 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. Check out our current openings and apply via Stream’s website.

Quick Overview

Channel List

Features Preview
A list of channels matching provided query
Channel name and image based on the channel members or custom data
Unread messages indicator
Preview of the last message
Online indicator for avatars
Create new channel and start right away
Customizable channel actions on swipe
Typing and read indicators

Message List

Features Preview
A list of messages in a channel
Photo attachments
Giphy attachments
Video attachments
Link previews
File previews
Custom attachments
Message reactions
Message grouping based on the send time
Thread and inline replies
Typing and read indicators

Message Composer

Features Preview
Support for multiline text, expands and shrinks as needed
Image, video and file attachments
Camera integration
Custom attachments
Instant commands (e.g. giphy)
Custom commands


View Github