Chatto is a Swift lightweight framework to build chat applications.

Related tags

Chat Chatto
Overview

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!

Features

  • 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

CocoaPods

  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

Carthage

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

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

Manually

  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

License

Source code is distributed under MIT license.

Blog

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

Comments
  • Add support for Carthage

    Add support for Carthage

    This add a root Chatto.xcworkspace which contains the two shared schemes and xcodproj Chatto & ChattoAdditions.

    Carthage can either export multiple shared schemes from a single project or from a workspace, since here there is two xcodeproj for both Chatto and ChattoAdditions, a root xcworkspace must be added to expose both shared schemes at once.

    Tested with:

    ❯ carthage version
    0.11.0
    

    This close #5

    opened by nrako 14
  • iPhone X input bar selecting bug

    iPhone X input bar selecting bug

    Steps to reproduce in sample ChattoApp

    • Select photo input item from input bar
    • Select text input item from input bar
    • Got bug demonstrated on screenshot. Input bar shifted. No way to send messages anymore.

    simulator screen shot - iphone x - 2018-09-12 at 12 09 06

    opened by Ogerets 12
  • Release new version for Xcode8.3/Swift 3.1 compatibility.

    Release new version for Xcode8.3/Swift 3.1 compatibility.

    I updated Xcode to 8.3. And there are a couple of errors because of Swift 3.1 changes.

    I noticed that you've already did the compatibility update on master branch, when do you plan to release a new version (tag) for Swift 3.1?

    opened by ShaneQi 11
  • Swift 3 / Xcode Beta 6

    Swift 3 / Xcode Beta 6

    Chatto is a fantastic resource, thank you for all of your work on it and for open sourcing it. 👍

    I see there is an existing Swift 3 branch, which appears to be up to date with beta 5. With beta 6 out, and presumably, an impending official release soon, we're looking to migrate our project to Swift 3 over the next week or two in preparation for the final release to support some new APIs and features along with (or soon after) the iOS 10 launch.

    What are your plans for the swift-3 branch? Is there a plan / timetable for the migration? Also, it doesn't appear to be up-to-date with the latest 2.0 release, either. We're happy to lend a hand and help out, but didn't want to jump in if you had specific plans or were already actively working on supporting beta 6 / version 2.0. Just let me know how best we can help!

    opened by dbburgess 11
  • Support for sections header/footer

    Support for sections header/footer

    Hi,

    Thanks for your work, your framework seems awesome! And very promising!

    I'm currently trying to integrate it in my project, and I have a few questions. The most important for me is do you support sections header? I want to split my messages by day, providing a nice header. I think you can do it artificially with a new type of message, but it won't stick like headers do. I think you can achieve that with viewForSupplementaryElementOfKind but I didn't find this kind of code in Chatto.

    If you don't plan to support it, I will try to help you implementing it :)

    Kind regards, Denis

    opened by DenisLaboureyras 11
  • migrating to swift 3

    migrating to swift 3

    while migrating to swift 3 chatViewController.swift

    Static member 'weakMemory' cannot be used on instance of type ‘PointerFunctions.Options' let presentersByChatItem = MapTable(keyOptions: .weakMemory , valueOptions: PointerFunctions.Options()) let presentersByCell = MapTable(keyOptions: .weakMemory, valueOptions: .WeakMemory)

    opened by askari01 10
  • Question: Can I create a full width bubble?

    Question: Can I create a full width bubble?

    Was wondering if I could add a full width (width equal to width of the screen) in Chatto?

    I need to display a banner of information inside the chat stream.

    Thanks!

    question 
    opened by axitkhurana 9
  • Crash when attempting to init subclassed BaseMessageCollectionViewCell - Release only

    Crash when attempting to init subclassed BaseMessageCollectionViewCell - Release only

    I'm finding that initializing the TextMessageCollectionViewCell in the release build configuration causes a crash, for example: TextMessageCollectionViewCell.sizingCell()

    will call

    private func commonInit() {
    
            // nil is returned here, and crashes    
            self.bubbleView = self.createBubbleView()
            ...
    }
    

    For some reason in release, self is type BaseMessageCollectionViewCell NOT TextMessageCollectionViewCell. But in the debug configuration, self is of type TextMessageCollectionViewCell (as expected).

    Any ideas what could be triggering this?

    Using Swift 2.2, Xcode 7.3

    opened by TimMumsnet 9
  • Add updating logic to text message

    Add updating logic to text message

    Added support for willBeShown() and wasHidden() functions in TextMessageViewModel. The main purpose of this is to give chance to the client to load the avatar images when needed. Most of the code was copied from the corresponding functions in PhotoMessagePresenter. Both Text and Photo message models now look pretty similar, so maybe you guys consider moving some parts to the base classes?

    Also added the missing observe calls for the avatar image in view models.

    And the essential part of this commit is the call to the main queue in updateClosure:

    dispatch_async(dispatch_get_main_queue(), {
        self?.updateCurrentCell()
    })
    

    It looks strange, but if you try to set the observable value in willBeShown(), although the model itself has been updated, in BaseMessageCollectionViewCell.updateViews() it still gets the old value, so the update has no visible effect. Deferring the update with an async call to the main queue seems to fix the issue here.

    opened by maxkonovalov 8
  • Crash in performBatchUpdates

    Crash in performBatchUpdates

    *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UICollectionView received layout attributes for a cell with an index path that does not exist: <NSIndexPath: 0x1cc284a0> {length = 2, path = 0 - 114}'

    Seen on iOS 8. No steps to reproduce known.

    Last Exception Backtrace:
    0   CoreFoundation                       0x2938bf8f __exceptionPreprocess + 127
    1   libobjc.A.dylib                      0x37a3cc8b objc_exception_throw + 36
    2   CoreFoundation                       0x2938be65 +[NSException raise:format:arguments:] + 102
    3   Foundation                           0x2a090f17 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 88
    4   UIKit                                0x2ca662c7 __45-[UICollectionViewData validateLayoutInRect:]_block_invoke + 800
    5   UIKit                                0x2ca65b1f -[UICollectionViewData validateLayoutInRect:] + 1736
    6   UIKit                                0x2ca651eb -[UICollectionView layoutSubviews] + 168
    7   UIKit                                0x2ca0ae43 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 544
    8   QuartzCore                           0x2c41ed29 -[CALayer layoutSublayers] + 126
    9   QuartzCore                           0x2c41a55d CA::Layer::layout_if_needed(CA::Transaction*) + 358
    10  UIKit                                0x2ca1da23 -[UIView(Hierarchy) layoutBelowIfNeeded] + 136
    11  UIKit                                0x2d0116dd -[UICollectionView _performBatchUpdates:completion:invalidationContext:tentativelyForReordering:] + 162
    12  UIKit                                0x2d011633 -[UICollectionView _performBatchUpdates:completion:invalidationContext:] + 28
    13  UIKit                                0x2cbce467 -[UICollectionView performBatchUpdates:completion:] + 28
    14  Chatto                               0x01549120 Chatto.BaseChatViewController.(performBatchUpdates (Chatto.BaseChatViewController) -> (updateModelClosure : () -> (), changes : Chatto.CollectionChanges, updateType : Chatto.UpdateType, completion : () -> ()) -> ()).(closure #2) (BaseChatViewController+Changes.swift:148)
    15  Chatto                               0x015471b8 partial apply forwarder for Chatto.BaseChatViewController.(performBatchUpdates (Chatto.BaseChatViewController) -> (updateModelClosure : () -> (), changes : Chatto.CollectionChanges, updateType : Chatto.UpdateType, completion : () -> ()) -> ()).(closure #2) (BaseChatViewController+Changes.swift:0)
    16  UIKit                                0x2ca3efb7 +[UIView(UIViewAnimationWithBlocks) _setupAnimationWithDuration:delay:view:options:factory:animations:start:animationStateGenerator:completion:] + 480
    17  UIKit                                0x2ca3edcb +[UIView(UIViewAnimationWithBlocks) animateWithDuration:animations:] + 64
    18  Chatto                               0x01544314 function signature specialization <Arg[0] = Owned To Guaranteed, Arg[1] = Exploded> of Chatto.BaseChatViewController.performBatchUpdates (Chatto.BaseChatViewController)(updateModelClosure : () -> (), changes : Chatto.CollectionChanges, updateType : Chatto.UpdateType, completion : () -> ()) -> () (BaseChatViewController+Changes.swift:149)
    19  Chatto                               0x0154979c Chatto.BaseChatViewController.((updateModels in _612DFD8221191D415C81FF197E016366) (Chatto.BaseChatViewController) -> (newItems : [Chatto.ChatItemProtocol], oldItems : Chatto.ReadOnlyOrderedDictionary<Chatto.ChatItemCompanion>, updateType : Chatto.UpdateType, completion : () -> ()) -> ()).(closure #1) (BaseChatViewController+Changes.swift:179)
    20  Chatto                               0x01546a68 partial apply forwarder for Chatto.BaseChatViewController.((updateModels in _612DFD8221191D415C81FF197E016366) (Chatto.BaseChatViewController) -> (newItems : [Chatto.ChatItemProtocol], oldItems : Chatto.ReadOnlyOrderedDictionary<Chatto.ChatItemCompanion>, updateType : Chatto.UpdateType, completion : () -> ()) -> ()).(closure #1) (BaseChatViewController+Changes.swift:0)
    21  Chatto                               0x01547684 partial apply forwarder for Chatto.BaseChatViewController.((updateModels in _612DFD8221191D415C81FF197E016366) (Chatto.BaseChatViewController) -> (newItems : [Chatto.ChatItemProtocol], oldItems : Chatto.ReadOnlyOrderedDictionary<Chatto.ChatItemCompanion>, updateType : Chatto.UpdateType, completion : () -> ()) -> ()).(closure #3).(closure #1) (BaseChatViewController+Changes.swift:193)
    22  libdispatch.dylib                    0x37fcd2e3 _dispatch_call_block_and_release + 8
    23  libdispatch.dylib                    0x37fcd2cf _dispatch_client_callout + 20
    24  libdispatch.dylib                    0x37fd0d2f _dispatch_main_queue_callback_4CF + 1328
    25  CoreFoundation                       0x293513e9 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 6
    26  CoreFoundation                       0x2934fae9 __CFRunLoopRun + 1510
    27  CoreFoundation                       0x2929bf31 CFRunLoopRunSpecific + 474
    28  CoreFoundation                       0x2929bd43 CFRunLoopRunInMode + 104
    29  GraphicsServices                     0x30d76201 GSEventRunModal + 134
    30  UIKit                                0x2ca6d879 UIApplicationMain + 1438
    
    opened by diegosanchezr 8
  • Add function to show avatar image for messages

    Add function to show avatar image for messages

    Demo app updated to show avatar image only for text messages by modifying the viewModelBuilder, Presenter is probably best place to set avatar image based on viewmodel and decoration attributes, but this is highly case by case.

    By default, the avatar is at the bottom of the collection view cell. No way to customize it unless changing code.

    Screenshot of demo app as below: simulator screen shot mar 10 2016 12 08 20 am simulator screen shot mar 10 2016 12 08 14 am simulator screen shot mar 9 2016 11 50 02 pm

    opened by zwang 8
  • Modify Image Picker Selected Photos Permission manually

    Modify Image Picker Selected Photos Permission manually

    Thank you for your amazing work. We are using Chatto for chat module in our application. Recenlty we have been advised to review Photos/Gallery Permission Popup. Steps to reproduce:

    1. Close and reopen app
    2. Open chat
    3. Click the camera button at the lower left of the screen (right next to the keyboard button)
    4. Select “Keep current selection”

    From this point, if a member wants to add more photos to the current selection, they have no choice but to close and reopen the app. again popup will appear and select add more photos

    Is there a way we can show permissions every time we open up the chat screen instead of seeing this after killing and relaunching app?

    opened by ahmad-sonder 0
Releases(4.1.0)
  • 4.1.0(May 21, 2021)

    4.1.0 (May 20, 2021)

    Features

    • 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

    Improvements

    • 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

    Bugfixes

    • 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
    Source code(tar.gz)
    Source code(zip)
  • 4.0.0(Sep 21, 2020)

    4.0.0 (September 20, 2020)

    Features

    • 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

    Improvements

    • 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

    Bugfixes

    • 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
    Source code(tar.gz)
    Source code(zip)
  • 3.6.0(Apr 24, 2020)

    Features

    • Multiline placeholder support #640 by @Ssimboss

    Improvements

    • Add explicit dependency on Chatto #646 by @wiruzx
    • Allow to specify orientation in default keyboard height #630 by @leonspok
    • Improve scroll performance #629 by @AntonPalich
    • Disable BUILD_LIBRARY_FOR_DISTRIBUTION option #626 by @dive
    • Enable module stability support #625 by @dive
    • Open avatar for customization #624 by @wiruzx
    • Fix product name #622 by @wiruzx
    • Fix imports #612 by @wiruzx

    Bugfixes

    • Fix crash on termination #648 by @dive
    • Made overridden inputAccessoryView read-write #644 by @azatZul
    • Fix jumping with long text in text input #642 by @leonspok
    • Fix wrong scroll indicator insets on iOS 13 #627 by @AntonPalich
    • Fix scrolled position after frame change #623 by @leonspok
    • Fix input bar position #620 by @magic146
    Source code(tar.gz)
    Source code(zip)
  • 3.5.0(Sep 25, 2019)

    Features

    • Support of using compound bubble for text messages #578 by @magic146
    • Support of custom menu presentation #584 by @AntonPalich
    • Support of layout invalidation for compound bubble #586 by @Wisors

    Improvements

    • Added accessibility identifier to text bubble #575 by @wiruzx
    • Migrated existing objc classes to Swift #579 by @magic146
    • Various compound bubble layout improvements #587 by @turbulem
    • Added support for draft messages #580 by @aabalaban
    • Added didLoseFocusOnItem method to ChatInputBarDelegate #591 by @magic146
    • Improved cursor positioning #595 by @leonspok
    • Added support of presenters reusing #596 by @magic146
    • Added support for updating message in content presenters #605 by @wiruzx

    Bugfixes

    • Fixed using correct uid for decorated item #570 by @magic146
    • Fixed filtering content factories #588 by @Wisors
    • Fixed issue with wrong text size calculation in compound bubble #589 by @AntonPalich
    • Replaced ReadOnlyOrderedDictionary with ChatItemCompanionCollection in order to support correct uids #590 by @magic146
    • Fixed updating ExpandableTextView bounds in iOS 13 #592 by @magic146
    • Fixed blurry images in the photo picker #594 by @magic146
    • Limited maximum scale of preview photos #597 by @magic146
    • Fixed calling completion in changeInputContentBottomMarginTo method #599 by @leonspok
    • Fixed openning a link in a message #600 by @magic146
    • Fixed out of bounds crash due to stirng encoding #603 by @turbulem
    • Fixed implicitly animating layout #604 by @AntonPalich
    • Fixed issues with non-selectable links in iOS 13 #606 by @AntonPalich
    • Fixed simultaniously recognizing tap and long press #608 by @AntonPalich
    Source code(tar.gz)
    Source code(zip)
  • 3.4.0(Apr 23, 2019)

    Features

    • Added Xcode 10 and Swift 4.2 support #521 by @AntonPalich
    • Added support for showing messages starting from the bottom of the chat #483 by @rokemoon
    • Added support for scrolling to a specific item in chat #542 by @AntonPalich
    • Added accessibility identifiers to messages, photos input and input bar #517 by @dive
    • Added support for an experimental input presenter that don't use UIResponder.inputView API to present a custom input views #536 by @aabalaban and @magic146
    • Added support for a compound bubble that shows a mixed content in a single bubble #545 by @wiruzx
    • Added accessibility identifiers to a compound bubble #556 by @wiruzx
    • Added ability to change an item type dynamically #548 by @wiruzx
    • Added support for intercepting paste action in input bar #558 and #560 by @wiruzx
    • Added support for copy action in compound bubble #573 by @wiruzx

    Improvements

    • Changed access modifier to open in scrollToBottom function #501 by @azimin
    • Added @objc modifier to scrollToBottom function #502 by @azimin
    • Added support for postponing a presenter factory initialization #528 by @magic146
    • Added IDETemplateMacros to workspaces #544 by @wiruzx
    • Changed some access modifiers to public in ScreenMetric.swift and InputContainerView #551 by @magic146
    • Various improvements to support a new input bar in Badoo #552 by @magic146

    Bug

    • Fixed an issue with wrong inputAccessoryView position on iOS 12 #530 by @AntonPalich
    • Fixed an issue (introduced in #530) with wrong inputView height after dismissing a modally presented view controller #531 by @AntonPalich
    • Fixed an issue (introduced in #530) with wrong inputView height after sending a multilin text message #568 by @AntonPalich
    • Fixed an issue (introduced in #542) with double completion execution in performBatchUpdates #543 by @AntonPalich
    • Fixed an issue (introduced in #545) with fractional bubble size #553 by @wiruzx
    • Fixed a crash caused by force unwrapped optional in case when a device was rotated with unopened tab with chat in UITabBarViewController #538 by @alaija
    • Fixed a freeze caused by PHCachingImageManager in some cases #566 by @leonspok
    Source code(tar.gz)
    Source code(zip)
  • 3.3.1(May 8, 2018)

  • 3.3.0(Mar 10, 2018)

    Features

    • Added Swift 4 support #385 by @AntonPalich and #345 by @jpunz
    • Added messages selection #411 by @AntonPalich
    • Added accessibility identifier to selection indicator #428 by @AntonPalich
    • Added iCloud Library support to photos input #415 by @Wisors
    • Added camera position settings for live camera cell #393 by @Wisors
    • Allow client to set selected range of textView in ChatInputBar #402 by @phatmann
    • Allow override of text message text #403 by @phatmann
    • Added ability to change input bar placeholder #396 by @chupakabr
    • Allow to build TextMessagePresenter subclasses without exposing internal properties #421 by @AntonPalich
    • Made UIScrollView delegates open in BaseChatViewController #438 by @azimin
    • Exposed keyboard position handling #445 by @chupakabr
    • Added additional state for keyboard tracker and ability to modify content insets #454 by @azimin
    • Removed Xcode 9 warnings #439 by @irace

    Bugs

    • Fixed crashes that happened under some conditions in project with Swift 4 that used Chatto with Swift 3.2 #405, #414 by @AntonPalich
    • Fixed issue with live camera cell when it wasnt updated after updating its appearance #404 by @Wisors
    • Fixed issue with photo picker after migration to Swift 4 #437 by @AntonPalich
    • Fixed crash that happened on devices with unaccessible camera caused by forced unwrapped optional #424 by @Wisors
    • Removed gap under input bar on iPhone X #447 by @azimin
    • Fixed issue with wrong input bar position when hidesBottomBarWhenPushed is true on iPhone X #457 by @AntonPalich
    Source code(tar.gz)
    Source code(zip)
  • 3.2.0(Mar 10, 2018)

    Features:

    • Added support for custom main view in BaseChatViewController #323 by @serge-star
    • Added ability to change input bar border color and width #339 by @NSEGeorge
    • Added ability to control visibility of failed icon #359 by @turbulem
    • Added Xcode 9 and iOS 11 support #352 by @AntonPalich
    • Added support for swiftlint 0.23 #371 by @AntonPalich

    Bugs:

    • Fixed crash caused by missing optionality identifier in UIKit #310 by @raisaanjani92
    • Fixed input container position when presenting chat as child controller #338 by @KaterinaPetrova
    • Fixed issue with gesture recognizers that wasn't disabled for text messages on iOS 11 #366 by @AntonPalich
    Source code(tar.gz)
    Source code(zip)
  • 3.1.0(May 29, 2017)

    • swiftlint 0.13 support & Xcode 8.2 compatibility #253 - @diegosanchezr
    • swiftlint 0.14 support & hashes improvements #271 - @diegosanchezr
    • Removed lazy keyword from accessoryTimestampView property in BaseMessageCollectionViewCell #286 - @geegaset
    • Fixed typo in a comment in BaseChatViewController+Changes.swift #296 - @NickAger
    • BasicChatInputBarPresenter.chatInputBar became public #297 - @NickAger
    • Added ability to specify tint color for text input #301 - @V0idPRO
    • Xcode 8.3 compatibility #300 - @geegaset
    • Empty layout model is returned if layout delegate is nil #304 - @chupakabr
    Source code(tar.gz)
    Source code(zip)
  • 3.0.1(Nov 14, 2016)

  • 3.0.0(Sep 21, 2016)

  • 2.1.0(Sep 17, 2016)

    • Enhanced customization for LiveCameraCell #199 - @TerekhovAnton
    • Fixes input not being at the bottom when chat is embedded in a UITabbarController #202 - @andris-zalitis
    • Fixes collection view insets when keyboard is shown #204 - @dbburgess
    • LiveCameraCellPresenter made public #205 - @diegosanchezr
    • Fixes order of photos on iOS 10 #215 - @geegaset
    • Adds accessibility identifiers in ChatInputBar #218, #206 - @geegaset
    • Xcode 8 - Swift 2.3 support - @diegosanchezr
    Source code(tar.gz)
    Source code(zip)
  • 2.0.1(Aug 8, 2016)

  • 2.0.0(Aug 8, 2016)

    Chatto:

    • Update engine can be configured to coalesce updates.
    • Update queue is exposed to clients. For instance, this allows pausing updates when the chat stops being the topmost view controller.
    • Data sources can now tell what type of update should be performed (reloadData, performBatchUpdates) or force the layout to be calculated entirely in the main thread, synchronously.
    • Automatic dismissal of the keyboard when tapping on the background of the chat.
    • New API to access the messages / presenters from the view controller
    • Revealing timestamps can be now configured on a per-message basis
    • Critical fixes: https://github.com/badoo/Chatto/issues/92, https://github.com/badoo/Chatto/issues/71

    ChattoAdditions:

    • Made easier to inject custom models in the presenters
    • Enhanced customization of cells and the input component
    • Improvements in the Photo input component: callbacks to handle permissions and listens to changes in the camera roll
    • Avatars in cells: thank you @zwang and @maxkonovalov
    • Critical fixes: https://github.com/badoo/Chatto/pull/161

    And a lot more! Check out here a more detailed list of changes

    Source code(tar.gz)
    Source code(zip)
  • 1.0.1(Jan 14, 2016)

Owner
Badoo Tech
Badoo Tech
Flash Chat is an Internet-based messaging application similar to WhatsApp

Flash Chat is an Internet-based messaging application similar to WhatsApp. A service called Firebase Firestore is used as the backend database to store and retrieve our messages from the cloud.

Matias Adrián Molina 1 May 20, 2022
MessengerKit is a drop-in UI for messenger interfaces on iOS built in Swift

About MessengerKit is a drop-in UI for messenger interfaces on iOS built in Swift. Centred around a single UIViewController, MessengerKit is themeable

Stephen Radford 1.5k Jan 2, 2023
A lightweight framework to build chat applications, made in Swift

Chatto Chatto is a Swift lightweight framework to build chat applications. It's been designed to be extensible and performant. Along with Chatto there

Badoo Tech 4.4k Dec 19, 2022
Swift-Chat-Application - Swift Chat Application Using Firebase , messagekit

Swift-Chat-Application Using Firebase , messagekit

Metin ATALAY 7 Oct 9, 2022
Chat-App - GV Chat App is an iOS app built with Swift

GV Chat App - iOS Explore the docs » Report Bug · Request Feature About The Proj

Cyrus Dumbwani 0 Jan 25, 2022
A chat simulator app that uses FireBase for Authentication and chat storage

Chat-App Description Flash chat is a chat simulator app that uses FireBase for Authentication and chat storage Tools Used - Swift (Programming Languag

Victor Alvarenga 0 Oct 14, 2021
TwilioChat_iOS - Twilio iOS SDK Implementaion Chat one-one Chat One-Many (Group)

TwilioChat_iOS - Twilio iOS SDK Implementaion Chat one-one Chat One-Many (Group) - Add Participant - Remove Participant Send Attachment Image Android - iOS Tested iOS - iOS Tested iOS - Android Tested React to Message, Delete a Message Read, Delivered, Sent Delete a Conversation Unread Messages Filter

Zeeshan Haider 2 May 23, 2022
EventBroadcaster is a lightweight event handler framework, written in swift for iOS, macOS, tvOS & watchOS applications.

EventBroadcaster is a lightweight event handler framework, written in swift for iOS, macOS, tvOS & watchOS applications.

Ali Samaiee 4 Oct 5, 2022
⚡️ A library of widgets and helpers to build instant-search applications on iOS.

By Algolia. InstantSearch family: InstantSearch iOS | InstantSearch Android | React InstantSearch | InstantSearch.js | Angular InstantSearch | Vue Ins

Algolia 567 Dec 20, 2022
Navigation helpers for SwiftUI applications build with ComposableArchitecture

Swift Composable Presentation ?? Description Navigation helpers for SwiftUI applications build with ComposableArchitecture. More info about the concep

Dariusz Rybicki 52 Dec 14, 2022
A general purpose embedded hierarchical lock manager used to build highly concurrent applications of all types. Same type of locker used in many of the large and small DBMSs in existence today.

StickyLocking StickyLocking is a general purpose embedded lock manager which allows for locking any resource hierarchy. Installable Lock modes allow f

Sticky Tools 2 Jun 15, 2021
⚡️ A library of widgets and helpers to build instant-search applications on iOS.

By Algolia. InstantSearch family: InstantSearch iOS | InstantSearch Android | React InstantSearch | InstantSearch.js | Angular InstantSearch | Vue Ins

Algolia 568 Jan 4, 2023
A SwiftUI framework which makes it easy to integrate Video Call and Chat within a few lines of code.

Welcome to iStream! This SwiftUI Framework allows you to add Video Call and Chat to your project within a few lines of code. To use this Framework, yo

null 2 Aug 19, 2022
Lightweight library for web server applications in Swift on macOS and Linux powered by coroutines.

Why Zewo? • Support • Community • Contributing Zewo Zewo is a lightweight library for web applications in Swift. What sets Zewo apart? Zewo is not a w

Zewo 1.9k Dec 22, 2022
Lightweight library for web server applications in Swift on macOS and Linux powered by coroutines.

Why Zewo? • Support • Community • Contributing Zewo Zewo is a lightweight library for web applications in Swift. What sets Zewo apart? Zewo is not a w

Zewo 1.9k Dec 22, 2022
Lightweight library for web server applications in Swift on macOS and Linux powered by coroutines.

Why Zewo? • Support • Community • Contributing Zewo Zewo is a lightweight library for web applications in Swift. What sets Zewo apart? Zewo is not a w

Zewo 1.9k Dec 22, 2022
A lightweight and powerful editor for localizing iOS, macOS, tvOS, and watchOS applications.

It is Strings but with a Z ?? Loved the project? Please share it with your friends and give it a ⭐️ Stringz is a lightweight and powerful editor that

Heysem Katibi 848 Jan 7, 2023
A small, lightweight, embeddable HTTP server for Mac OS X or iOS applications

CocoaHTTPServer CocoaHTTPServer is a small, lightweight, embeddable HTTP server for Mac OS X or iOS applications. Sometimes developers need an embedde

Robbie Hanson 5.5k Jan 7, 2023
Messenger Clone - Real-time iOS Chat with Firebase Firestore written in Swift

Real time Swift iOS Chat with Firebase - Messenger Clone This is an extremely simple chat app source code of an iOS Swift Chat app. It leverages Messa

Instamobile 616 Jan 1, 2023
A small SwiftUI based chat client for IRC, using swift-nio-irc

NeoIRC A simple Internet Relay Chat client implemented using SwiftNIO and SwiftUI. Inspired by: For maximum NIO someone (I’m tempted) should adopt NIO

The Noze Consortium 18 Jun 22, 2022