An XMPP Framework in Objective-C for Mac and iOS
Clone or download
Pull request Compare This branch is 183 commits behind robbiehanson:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



Build Status Version Status Carthage compatible Platform License (3-Clause BSD)

An XMPP Framework in Objective-C for the Mac and iOS development community.


XMPPFramework provides a core implementation of RFC-3920 (the XMPP standard), along with the tools needed to read & write XML. It comes with multiple popular extensions (XEP's), all built atop a modular architecture, allowing you to plug-in any code needed for the job. Additionally the framework is massively parallel and thread-safe. Structured using GCD, this framework performs well regardless of whether it's being run on an old iPhone, or on a 12-core Mac Pro. (And it won't block the main thread... at all)


The minimum deployment target is iOS 8.0 / macOS 10.9 / tvOS 9.0.


The easiest way to install XMPPFramework is using CocoaPods. Remember to add to the top of your Podfile the use_frameworks! line (even if you are not using swift):

This will install the whole framework with all the available extensions:

pod 'XMPPFramework', '~> 3.7.0'

After pod install open the .xcworkspace and import:

import XMPPFramework      // swift
@import XMPPFramework;   //objective-c


To integrate XMPPFramework into your Xcode project using Carthage, specify it in your Cartfile:

# ⚠️ Carthage support is currently experimental ⚠️
# For now, use the master branch until a Carthage-compatible
# tagged release is available.

github "robbiehanson/XMPPFramework" "master"

Run carthage to build the framework and drag the built XMPPFramework.framework into your Xcode project.


Pull requests are welcome! If you are planning a larger feature, please open an issue first for community input. Please use modern Objective-C syntax, including nullability annotations and generics. Here's some tips to make the process go more smoothly:

  • Make sure to add any new files to the iOS, macOS, and tvOS targets for XMPPFramework.framework in XMPPFramework.xcodeproj, and ensure any applicable header files are set to public.
  • Please try to write your code in a way that's testable. Using XMPPMockStream makes testing pretty easy. Look at examples in Testing-Shared for inspiration.
  • You will need both CocoaPods and Carthage to work on tests. Run carthage checkout in the root of the repository, and bundle install && bundle exec pod install in the Testing-iOS and Testing-macOS folders.
  • Create your test files to the Testing-Shared folder, and then add them to the iOS, macOS, and tvOS targets in Testing-Carthage/XMPPFrameworkTests.xcodeproj, Testing-macOS/XMPPFrameworkTests.xcworkspace and Testing-iOS/XMPPFrameworkTests.xcworkspace.

Looking to help but don't know where to start?

  • A large portion of the framework is not yet annotated for nullability and generics.
  • Adding more test coverage is always appreciated
  • Modernizing the old Examples projects

Security Issues

If you find a security problem, please do not open a public issue on GitHub. Instead, email one of the maintainers directly:


For more info please take a look at the wiki.

Can't find the answer to your question in any of the wiki articles? Try the mailing list.

Love the project? Wanna buy me a ☕️? (or a 🍺 😀):

donation-bitcoin donation-paypal