Swiftpack.co - badoo/Chatto as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
A lightweight framework to build chat applications, made in Swift
.package(url: "https://github.com/badoo/Chatto.git", from: "4.1.0")

Chatto Build Status codecov.io CocoaPods Compatible Carthage compatible

Chatto is a Swift lightweight framework to build chat applications. It's been designed to be extensible and performant. Along with Chatto there is ChattoAdditions, a companion framework which includes cells for messages and an extensible input component. You can find more details about how it was implemented in our blog. See them in action!


  • Calculation of collection view changes and layout in background
  • Supports pagination in both directions and autoloading
  • Message count contention for fast pagination and rotation with thousands of messsages
  • Accessory view revealing by swiping from right
  • Interactive keyboard dismissal
  • Text bubbles
  • Photo bubbles
  • Extensible input bar

How to use

Check the wiki!

How to contribute

If you just have a question, please reach us in our gitter room

If you'd like to file a bug report, suggest changes or submit a pull request, please check our contribution guide

How to install


  1. Make sure use_frameworks! is added to your Podfile.

  2. Include the following in your Podfile:

# Swift 5
pod 'Chatto', '= 4.1.0'
pod 'ChattoAdditions', '= 4.1.0' # if you want to use the cells or the input component
# Swift 4.2
pod 'Chatto', '= 3.4.0'
pod 'ChattoAdditions', '= 3.4.0' # if you want to use the cells or the input component
# Swift 4
pod 'Chatto', '= 3.3.1'
pod 'ChattoAdditions', '= 3.3.1' # if you want to use the cells or the input component
# Swift 3
pod 'Chatto', '= 3.2.0'
pod 'ChattoAdditions', '= 3.2.0' # if you want to use the cells or the input component
# Swift 2.x
pod 'Chatto', '= 2.1.0'
pod 'ChattoAdditions', '= 2.1.0' # if you want to use the cells or the input component

If you like living on the bleeding edge, you can use the master branch with:

pod 'Chatto', :git => 'https://github.com/badoo/Chatto', :branch => 'master'
pod 'ChattoAdditions', :git => 'https://github.com/badoo/Chatto', :branch => 'master'
  1. Run pod install


If you’re using Carthage, simply add Chatto to your Cartfile:

# Swift 5
github "badoo/Chatto"
# Swift 2.x
github "badoo/Chatto" "swift-2"


  1. Clone, add as a submodule or download.
  2. Drag and drop Chatto and/or ChattoAdditions project to your workspace
  3. Add Chatto and/or ChattoAdditions to Embedded binaries


Source code is distributed under MIT license.


Read more on our tech blog or explore our other open source projects


Stars: 4276
Last commit: 3 days ago

Ad: Job Offers

iOS Software Engineer @ Perry Street Software
Perry Street Software is Jack’d and SCRUFF. We are two of the world’s largest gay, bi, trans and queer social dating apps on iOS and Android. Our brands reach more than 20 million members worldwide so members can connect, meet and express themselves on a platform that prioritizes privacy and security. We invest heavily into SwiftUI and using Swift Packages to modularize the codebase.

Submit a free job ad (while I'm testing this). The analytics numbers for this website are here.

Release Notes

Chatto 4.1.0
21 weeks ago

4.1.0 (May 20, 2021)


  • Dynamic content insets for compond bubble #685 by @magic146
  • Added support for Swift Package Manager #690 by @NicholasMata
  • Add double tap handler #692 by @AKoulabukhov
  • Add support of failed loading icon to compound bubble #695 by @azatZul
  • Added camera type to callback when a photo is taken #696 by @KaneCheshire
  • Introduce custom live camera cell behaviour #698 by @magic146
  • Custom input camera picker #699 by @magic146
  • Make timestamp revealing optional #704 by @simoneBumble
  • Handle live camera and photo cells taps #705 by @magic146


  • Contribution guide #676 by @wiruzx
  • Enabling library evolution support #677 by @dive
  • Add github actions #678 by @wiruzx
  • Make presenter public to fire send #701 by @ChaosCoder
  • Replace presentingController with presentingViewControllerProvider #703 by @magic146


  • Fix false positive test runs #680 by @wiruzx
  • Add empty scroll view delegate methods #684 by @wiruzx
  • Fix resource name collision #686 by @khramtsoff
  • Fix the resources bundle signing #697 by @azatZul

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics