Repolode
exyte

exyte/Chat

A SwiftUI chat UI framework for iOS with customizable message cells, a built-in media picker, and support for text, media, audio, location and documents.

Stars
1,893
Forks
341
Open issues
0
Last commit
20 days ago

What is it?

Chat is a Swift package that provides a ready-made chat screen for SwiftUI apps. It handles the message list with pagination, the input bar, and the sending flow, while the app supplies the networking and storage. When the user sends a message, the library calls a closure with a draft, and the app decides how to deliver it.

Message cells and input views can be replaced with custom SwiftUI builders, and you can mix custom cells with the default style in the same chat. The library supports replies, edits and deletes through a message menu, long-press context menus, and swipe actions. Messages can contain styled text or markdown, photos and videos, audio recordings, link previews, GIFs and stickers via Giphy, arbitrary files, and static or live location.

The project targets iOS 17 and later and is distributed through Swift Package Manager. Its README also includes Firestore and mock-bot example projects.

Key features

  • 01Paginated message list with a send closure that leaves networking to the app
  • 02Custom message cells and input views via SwiftUI view builders
  • 03Built-in photo and video picker with multiple selection and camera access
  • 04Reply, edit and delete through a default or custom long-press menu
  • 05Supports text, media, audio, links with previews, GIFs, documents and locations

Use cases

  • Adding an in-app messaging screen to an iOS app written in SwiftUI
  • Building a chat interface with custom bubble designs on top of a backend you already have
  • Sending photos, videos and files in a conversation without writing a picker from scratch
  • Providing live location sharing between users in a messaging feature

Quick start

  1. 1

    Add the package via Swift Package Manager using the repository URL

  2. 2

    Import ExyteChat and create a ChatView with your messages

Things to know

  • Supports iOS only, built with SwiftUI.
  • CocoaPods support is deprecated after version 2.4.2.

Topics

FAQ

What is Chat?
A SwiftUI chat UI framework for iOS with customizable message cells, a built-in media picker, and support for text, media, audio, location and documents. Chat is a Swift package that provides a ready-made chat screen for SwiftUI apps. It handles the message list with pagination, the input bar, and the sending flow, while the app supplies the networking and storage. When the user sends a message, the library calls a closure with a draft, and the app decides how to deliver it.
Is Chat free to use? What license does it have?
Chat is open source under the MIT license. Check the license terms before using it in commercial products.
Is Chat still maintained?
Actively maintained. The last commit to Chat was on Oct 1, 2026.
What can I use Chat for?
Adding an in-app messaging screen to an iOS app written in SwiftUI Building a chat interface with custom bubble designs on top of a backend you already have Sending photos, videos and files in a conversation without writing a picker from scratch Providing live location sharing between users in a messaging feature
How do I install Chat?
Add the package via Swift Package Manager using the repository URL Import ExyteChat and create a ChatView with your messages
Where can I get Chat?
The source code and installation instructions are on GitHub: https://github.com/exyte/Chat

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects