{"id":1584,"url":"https://github.com/MessageKit/MessageKit","last_synced_at":"2025-08-06T13:31:54.367Z","repository":{"id":37318860,"uuid":"97516603","full_name":"MessageKit/MessageKit","owner":"MessageKit","description":"A community-driven replacement for JSQMessagesViewController","archived":false,"fork":false,"pushed_at":"2025-01-09T19:28:29.000Z","size":62284,"stargazers_count":6180,"open_issues_count":76,"forks_count":1201,"subscribers_count":130,"default_branch":"main","last_synced_at":"2025-08-04T01:17:25.256Z","etag":null,"topics":["chat","hacktoberfest","ios","jsqmessagesviewcontroller","message","messaging","messenger","swift","viewcontroller"],"latest_commit_sha":null,"homepage":"https://messagekit.github.io","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MessageKit.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-07-17T19:56:13.000Z","updated_at":"2025-08-03T11:24:03.000Z","dependencies_parsed_at":"2024-05-17T11:34:38.769Z","dependency_job_id":"7aad96a6-0b5d-44c4-9aae-ef3897af4189","html_url":"https://github.com/MessageKit/MessageKit","commit_stats":{"total_commits":1402,"total_committers":172,"mean_commits":8.151162790697674,"dds":0.7218259629101285,"last_synced_commit":"75215ecfc849b084049017cc81f0b7213775ed7f"},"previous_names":[],"tags_count":61,"template":false,"template_full_name":null,"purl":"pkg:github/MessageKit/MessageKit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MessageKit%2FMessageKit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MessageKit%2FMessageKit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MessageKit%2FMessageKit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MessageKit%2FMessageKit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MessageKit","download_url":"https://codeload.github.com/MessageKit/MessageKit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MessageKit%2FMessageKit/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268638802,"owners_count":24282636,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-03T02:00:12.545Z","response_time":2577,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chat","hacktoberfest","ios","jsqmessagesviewcontroller","message","messaging","messenger","swift","viewcontroller"],"created_at":"2024-01-05T20:15:50.468Z","updated_at":"2025-08-06T13:31:53.715Z","avatar_url":"https://github.com/MessageKit.png","language":"Swift","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/MessageKit/MessageKit/master/Assets/mklogo.png\" title=\"MessageKit logo\" width=\"270\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  A community-driven replacement for JSQMessagesViewController\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://swiftpackageindex.com/MessageKit/MessageKit\"\u003e\n    \u003cimg src=\"https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2FMessageKit%2FMessageKit%2Fbadge%3Ftype%3Dswift-versions\"/\u003e\n  \u003ca href=\"https://swiftpackageindex.com/MessageKit/MessageKit\"\u003e\n    \u003cimg src=\"https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2FMessageKit%2FMessageKit%2Fbadge%3Ftype%3Dplatforms\"/\u003e\n  \u003ca href=\"https://developer.apple.com/xcode\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Xcode-13-blue.svg\" alt=\"Xcode\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"./LICENSE.md\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/license/MessageKit/MessageKit?color=red\" alt=\"MIT\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/MessageKit/MessageKit/issues\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat\" alt=\"Contributions Welcome\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003cbr\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/MessageKit/MessageKit/master/Assets/TypingIndicator.png\" title=\"MessageKit header\" width=\"400\"\u003e\n\u003c/p\u003e\n\n## Goals\n\n- Provide a :rotating_light:safe:rotating_light: environment for others to learn and grow through Open Source.\n- Make adding Chat:speech_balloon: to a project easy.\n- Enable beautiful and customizable Chat UI's.\n- Provide an awesome Open Source project for the iOS open source community.\n- Help others learn.\n\n## Installation\n\n### [Swift Package Manager](https://swift.org/package-manager/) - **Recommended**\n\nSwift 5.3 in Xcode 12 [added support](https://github.com/apple/swift-evolution/blob/master/proposals/0271-package-manager-resources.md) for assets in Swift Packages.\nYou can [just add](https://developer.apple.com/documentation/xcode/adding_package_dependencies_to_your_app) MessageKit package to your project by entering it's repository URL\n\n```\nhttps://github.com/MessageKit/MessageKit\n```\nOlder versions of Swift and Xcode don't support MessageKit via SPM.\n\n### [Manual](https://github.com/MessageKit/MessageKit/blob/master/Documentation/MANUAL_INSTALLATION.md)\n\n## Requirements\n\n- **iOS 14** or later\n- **Swift 6** or later\n\n\u003e For iOS 13 or Swift 5.x please use version 4.3.0\n\n\u003e For iOS 12 or CocoaPods please use version 3.8.0\n\n\u003e For iOS 11 please use version 3.3.0\n\n\u003e For iOS 9 and iOS 10 please use version 3.1.1\n\n## Getting Started\n\nPlease have a look at the [Quick Start guide](https://github.com/MessageKit/MessageKit/blob/master/Documentation/QuickStart.md) and the [FAQs](https://github.com/MessageKit/MessageKit/blob/master/Documentation/FAQs.md).\n\nWe recommend you start by looking at the [Example](https://github.com/MessageKit/MessageKit/tree/master/Example) project or write a question with the \"messagekit\" tag on [Stack Overflow](https://stackoverflow.com/questions/tagged/messagekit). You can also look at previous issues here on GitHub with the **\"Question\"** tag.\n\nFor more on how to use the MessageInputBar, see the dependency it is based on [InputBarAccessoryView](https://github.com/nathantannar4/InputBarAccessoryView). You can also see this [short guide]([https://github.com/MessageKit/MessageKit/blob/master/Documentation/MessageInputBar.md)\n\nCheck out the full documentation [here](https://messagekit.github.io/MessageKit/documentation/messagekit).\n\n### Cell Structure\n\n\u003cp\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/MessageKit/MessageKit/master/Assets/CellStructure.png\" title=\"CellStructure\"\u003e\n\u003c/p\u003e\n\nEach default cell is a subclass of [`MessageContentCell`](https://github.com/MessageKit/MessageKit/blob/master/Sources/Views/Cells/MessageContentCell.swift) which has 7 parts. From top down we have a: `cellTopLabel`, `messageTopLabel`, `messageContainerView`, `messageBottomLabel`, `cellBottomLabel` with the `avatarView` and `accessoryView` on either side respectively. Above we see the basic [`TextMessageCell`](https://github.com/MessageKit/MessageKit/blob/master/Sources/Views/Cells/TextMessageCell.swift) which uses a `MessageLabel` as its main content.\n\nThis structure will allow you to create a layout that suits your needs as you can customize the size, appearance and padding of each. If you need something more advanced you can implement a custom cell, which we show how to do in the [Example](https://github.com/MessageKit/MessageKit/tree/master/Example) project.\n\n### InputBarAccessoryView Structure\n\n\u003cp\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/MessageKit/MessageKit/master/Assets/InputBarAccessoryViewLayout.png\" title=\"InputBarAccessoryViewLayout\"\u003e\n\u003c/p\u003e\n\nThe `InputBarAccessoryView`, 3rd party dependency from [InputBarAccessoryView](https://github.com/nathantannar4/InputBarAccessoryView) is a flexible and robust way of creating any kind of input layout you wish. Check the repo and examples there for more info.\n\n## Default Cells\n\n\u003cp\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/MessageKit/MessageKit/master/Assets/ExampleA.png\" title=\"Example A\" height=400\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/MessageKit/MessageKit/master/Assets/ExampleB.png\" title=\"Example B\" height=400\u003e\n\u003c/p\u003e\n\nThe type of cell rendered for a given message is based on the `MessageKind`\n\n```swift\npublic enum MessageKind {\n    case text(String) // TextMessageCell\n    case attributedText(NSAttributedString) // TextMessageCell\n    case photo(MediaItem) // MediaMessageCell\n    case video(MediaItem) // MediaMessageCell\n    case location(LocationItem) // LocationMessageCell\n    case emoji(String) // TextMessageCell\n    case audio(AudioItem) // AudioMessageCell\n    case contact(ContactItem) // ContactMessageCell\n    case linkPreview(LinkItem) // LinkPreviewMessageCell\n\n    /// A custom message.\n    /// - Note: Using this case requires that you implement the following methods and handle this case:\n    ///   - MessagesDataSource: customCell(for message: MessageType, at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView) -\u003e UICollectionViewCell\n    ///   - MessagesLayoutDelegate: customCellSizeCalculator(for message: MessageType, at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView) -\u003e CellSizeCalculator\n    case custom(Any?)\n}\n```\n\nIf you choose to use the `.custom` kind you are responsible for all of the cells layout. Any `UICollectionViewCell` can be returned for custom cells which means any of the styling you provide from the `MessageDisplayDelegate` will not effect your custom cell. Even if you subclass your cell from `MessageContentCell`.\n[Read more about custom cells](https://github.com/MessageKit/MessageKit/blob/master/Documentation/CUSTOM_CELLS.md)\n\n[Read more about the cases on the Quick Start guide.](https://github.com/MessageKit/MessageKit/blob/master/Documentation/QuickStart.md#messagekind)\n\n## Contributing\n\n[![Tests](https://github.com/MessageKit/MessageKit/workflows/Tests/badge.svg)](https://github.com/MessageKit/MessageKit/actions?query=workflow%3A%22Tests%22)\n[![Build framework](https://github.com/MessageKit/MessageKit/workflows/Build%20Framework/badge.svg)](https://github.com/MessageKit/MessageKit/actions?query=workflow%3A%22Build+Framework%22)\n[![Build example app](https://github.com/MessageKit/MessageKit/workflows/Build%20Example%20app/badge.svg)](https://github.com/MessageKit/MessageKit/actions?query=workflow%3A%22PR+Example+app%22)\n[![Danger](https://github.com/MessageKit/MessageKit/workflows/Danger/badge.svg)](https://github.com/MessageKit/MessageKit/actions?query=workflow%3A%22Danger%22)\n\nGreat! Look over these things first.\n\n- Please read our [Code of Conduct](https://github.com/MessageKit/MessageKit/blob/master/CODE_OF_CONDUCT.md)\n- Check the [Contributing Guide Lines](https://github.com/MessageKit/MessageKit/blob/master/CONTRIBUTING.md).\n- Come join us on [Slack](https://join.slack.com/t/messagekit/shared_invite/zt-2484ymok0-O82~1EtnHALSngQvn6Xwyw) and 🗣 don't be a stranger.\n- Check out the [current issues](https://github.com/MessageKit/MessageKit/issues) and see if you can tackle any of those.\n- Download the project and check out the current code base. Suggest any improvements by opening a new issue.\n- Check out the [What's Next](#whats-next) section :point_down: to see where we are headed.\n- Check [StackOverflow](https://stackoverflow.com/questions/tagged/messagekit)\n- Install [SwiftLint](https://github.com/realm/SwiftLint) to keep yourself in :neckbeard: style. \n- Be kind and helpful.  \n\n\n## What's Next?\n\nCheck out the [Releases](https://github.com/MessageKit/MessageKit/releases) to see what we are working on next.\n\n## Contact\n\nHave a question or an issue about MessageKit? Create an [issue](https://github.com/MessageKit/MessageKit/issues/new)!\n\nInterested in contributing to MessageKit? Click here to join our [Slack](https://join.slack.com/t/messagekit/shared_invite/MjI4NzIzNzMyMzU0LTE1MDMwODIzMDUtYzllYzIyNTU4MA).\n\n### Apps using this library\n\nAdd your app to the list of apps using this library and make a pull request.\n\n- [ClassDojo](https://www.classdojo.com)\n- [Coursicle](https://apps.apple.com/us/app/coursicle/id1187418307)\n- [Connect Messaging](https://apps.apple.com/app/id1607268774)\n- [Ring4](https://www.ring4.com)\n- [Formacar](https://itunes.apple.com/ru/app/id1180117334)\n- [HopUp](https://itunes.apple.com/us/app/hopup-airsoft-community/id1128903141?mt=8)\n- [MediQuo](https://www.mediquo.com)\n- [RappresentaMe](https://itunes.apple.com/it/app/rappresentame/id1330914443)\n- [WiseEyes](https://itunes.apple.com/us/app/wiseeyes/id1391408511?mt=8)\n- [SwiftHub](https://github.com/khoren93/SwiftHub)\n- [Studievenn](https://studievenn.no)\n- [SmooveText](https://apps.apple.com/np/app/smoove-text/id1362792811)\n- [COYO Engage](https://apps.apple.com/app/coyo-engage/id1341588804)\n- [HitchPin](https://www.hitchpin.com)\n- [Charge Running](https://apps.apple.com/app/charge-running-live-coaching/id1204578360)\n- [HER](https://apps.apple.com/us/app/id573328837)\n- [Girlfriend Plus](https://apps.apple.com/us/app/girlfriend-plus/id1011637655)\n- [Noon Happen](https://apps.apple.com/app/id1477310602)\n- [XPASS](https://apps.apple.com/cz/app/id1596773834)\n- [HeiaHeia](https://www.heiaheia.com)\n- [Starstruck AI](https://apps.apple.com/au/app/starstruck-message-anyone/id6446234281)\n- [OutyPlay](https://apps.apple.com/app/id6450551793)\n    \n_Please provide attribution, it is greatly appreciated._\n\n## Core Team\n\n- [@SD10](https://github.com/sd10), Steven Deutsch\n- [@nathantannar4](https://github.com/nathantannar4), Nathan Tannar\n- [@zhongwuzw](https://github.com/zhongwuzw), Wu Zhong\n- [@austinwright](https://github.com/austinwright), Austin Wright\n- [@kaspik](https://github.com/kaspik), Jakub Kaspar\n- [@martinpucik](https://github.com/martinpucik), Martin Pucik\n\n## Thanks\n\nMany thanks to [**the contributors**](https://github.com/MessageKit/MessageKit/graphs/contributors) of this project.\n\n## License\n\nMessageKit is released under the [MIT License](https://github.com/MessageKit/MessageKit/blob/master/LICENSE.md).\n\n## Inspiration\n\nInspired by [JSQMessagesViewController](https://github.com/jessesquires/JSQMessagesViewController) :point_left: :100:\n","funding_links":[],"categories":["Messaging","Libs","Swift","Content","UI Frameworks","Chat [🔝](#readme)","OOM-Leaks-Crash"],"sub_categories":["Video","Chat","Messages","Other free courses","IM-Live"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMessageKit%2FMessageKit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FMessageKit%2FMessageKit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMessageKit%2FMessageKit/lists"}