Overview
Building on top of the Stream Chat API, the Stream Chat iOS component libraries include everything you need to build feature-rich and high-functioning chat user experiences out of the box.
We have a component libraries available for both UIKit and SwiftUI. Each library includes an extensive set of fast performing and customizable UI components which allow you to get started quickly with little to no plumbing required. The libraries supports:
- Rich media messages
- Reactions
- Threads and quoted replies
- Text input commands (ex: Giphy and @mentions)
- Image and file uploads
- Video playback
- Read state and typing indicators
- Channel and message lists
- Push (APN or Firebase)
- Offline storage
- OSX
#
ArchitectureStreamChat Swift SDK consists of three separate frameworks:
StreamChatUI
provides a set of reusable and customizable UI components to add chat to your UIKit application.StreamChatSwiftUI
provides a set of reusable and customizable UI components to add chat to your SwiftUI application.StreamChat
is the low-level client that provides the main chat functionality including offline storage and optimistic updates. You can use it directly in case you want to build your own UI layer for the chat.
We suggest using either StreamChatUI
or StreamChatSwiftUI
for most of our users. Unless your UI is completely different from the common industry standard, you should be able to customize the built-in components to match your needs.
note
You can use this library to develop OSX application by using the StreamChat
framework
#
DependenciesThis SDK tries to keep the list of external dependencies to a minimum, these are the dependencies currently used:
#
StreamChatUI- Nuke for loading images
- SwiftyGif for high performance gif rendering
- StreamChat the low-level client to Stream Chat API
#
StreamChatSwiftUI- Nuke for loading images
- NukeUI for loading images
- Gifu for high performance gif rendering
- StreamChat the low-level client to Stream Chat API
#
StreamChat- Starscream to handle WebSocket connections
note
Starting 4.6.0, and in order to improve the developer experience, dependencies are hidden inside our libraries. (Does not apply to StreamChatSwiftUI's dependencies yet)
#
Choosing the right SDKWhen integrating with our chat platform, you get to choose which SDK you would like to integrate with.
Our best options are either the Swift or SwiftUI SDKs. The Swift SDK is built using UIKit components, our SwiftUI SDK is built using SwiftUI components. We suggest you choose what is closest to your current App.
Do note, integrating our SwiftUI SDK into a UIKit based app is fully supported. It could provide you and your development team an amazing opportunity to get started with SwiftUI in your codebase.
#
Upgrade and Versioning StrategyThe StreamChat Swift SDK adheres to the semantic versioning rules.
- Bug fixes and behavior improvements cause patch version bump.
- New features are shipped with an increased minor version.
- Incompatible changes in the API will cause a major version increase.
Occasionally, the SDK can include visual changes (whitespace, color changes, sizing, etc) in minor versions, as we are continuously improving the default look of our UI components. Bumping the major version for such changes would not be practical.
#
How Should I Specify My Dependency Version?You should either use a fixed version, or an optimistic operator (a.k.a. squiggly arrow), with all three versions specified.
For example with CocoaPods:
pod 'StreamChat', '~> 4.0.0'
To stay up-to-date with our updates and get a detailed breakdown of what's new, subscribe to the releases of getstream/stream-chat-swift by clicking the "watch" button. You can further tweak your watch preferences and subscribe only to the release events.