Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/getstream/stream-chat-swiftui

SwiftUI Chat SDK ➜ Stream Chat 💬
https://github.com/getstream/stream-chat-swiftui

chat chat-api chat-application chat-sdk chatting-app ios sdk stream-chat streamio swiftui swiftui-chat swiftui-components swiftui-framework

Last synced: about 1 month ago
JSON representation

SwiftUI Chat SDK ➜ Stream Chat 💬

Awesome Lists containing this project

README

        




StreamChatSwiftUI

## SwiftUI StreamChat SDK

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

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

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

## Architecture

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](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.
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](https://getstream.io/team/#jobs).

## 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
Mentions
Instant commands (e.g. giphy)
Custom commands

---