Swiftpack.co -  Package - badoo/Chatto
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.0.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.0.0'
pod 'ChattoAdditions', '= 4.0.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: 4227
Last commit: 3 weeks ago

Release Notes

Chatto 4.0.0
29 weeks ago

4.0.0 (September 20, 2020)


  • Swipe to reply #672 by @wiruzx
  • Ability to highlight message when scrolling to it #670 by @wiruzx
  • Add ability to show decoration views on compound bubble #657 by @wiruzx


  • Update of compound views #666 by @wiruzx
  • BaseMessageInteractionHandlerProtocol methods are extended with a message parameter #665 by @magic146
  • Fix project warnings, migrate to Xcode 11 #662 by @petrpavlik
  • Add safe area insets for decoration views #660 by @wiruzx
  • Bump xcode version in travis config #661 by @wiruzx
  • Compound bubble styling simplification #653 by @magic146
  • Add removing random item to demo project #652 by @wiruzx
  • Fix autolayout support for BaseMessageCollrctionViewCell #651 by @wiruzx
  • Determine UI orientation without shared UIApplication object #637 by @FabioTacke
  • Safe area support for BaseChatViewController #632 by @esilverberg


  • iOS 14: Fix infinite layout loop when chat is empty #674 by @nalexn
  • Fix image stretching #673 by @wiruzx
  • Do not restart camera capture when camera picker is presented #671 by @leonspok
  • Set frame with disabled animation #659 by @wiruzx
  • Fix typo in CGSize extension #655 by @95krasovsky
  • Fix crash, if BaseChatViewController destroyed too early #549 by @freedbrt
  • Fix masking in iOS 14 #667 by @esilverberg

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