Swift Chat переносит элементы интерфейса iMessage в SwiftUI-приложения

Разработчик и основатель студии Union St Бен Сейдж выпустил библиотеку Swift Chat для SwiftUI. Проект объединяет набор элементов интерфейса, стилизованных под iMessage, и позволяет использовать похожую механику чатов в собственных приложениях.
По словам Сейджа, работа над библиотекой заняла около года. Изначально она появилась из практической задачи: сервису персональной охраны Protector потребовался встроенный чат с интерфейсом, напоминающим iMessage. Позже аналогичный запрос поступил от представителей Polymarket. Вместо того чтобы заново реализовывать одни и те же компоненты для каждого клиента, разработчик решил собрать их в отдельный универсальный инструмент.
Что входит в Swift Chat
Библиотека содержит не только базовые элементы переписки. В ней предусмотрены анимированный индикатор набора текста, статусы отправки и прочтения сообщений, реакции, групповые чаты и автоматическая группировка сообщений.
Swift Chat также поддерживает разные типы вложений: изображения, видео, аудиозаписи, файлы, геолокацию и опросы. Автор постарался воспроизвести интерактивное поведение стандартного приложения Apple — в том числе скрытие клавиатуры жестом и физику прокрутки сообщений.
Сочетание SwiftUI и UIKit
Внутри проекта используются оба фреймворка. Например, сообщения отображаются с помощью UICollectionView из UIKit, хотя разработчик, подключающий библиотеку, взаимодействует с ней через API SwiftUI. Такой подход понадобился потому, что некоторые особенности интерфейса iMessage оказалось трудно реализовать только стандартными средствами SwiftUI.
Swift Chat рассчитана на iOS 18 и более новые версии операционной системы. Для работы с библиотекой нужны Xcode 16 и Swift 6.1. Проект опубликован на GitHub, а использовать его можно бесплатно, включая коммерческие приложения.
Лицензия при этом содержит ограничения: запрещены декомпиляция библиотеки и её распространение в составе других SDK. Таким образом, Swift Chat предназначена для непосредственного подключения к приложениям, которым требуется готовый чатовый интерфейс в стиле iMessage.


