33 iOS open source libraries that will dominate 2017.

Photo Credit: (Unsplash/Markus Pe)

Hello, iOS developers! My name is Paweł, and I am an independent iOS developer and author of the 🚀 Enter Universe.

Almost two years ago I published 27 iOS open source libraries to skyrocket your development. It is my best story (regarding Medium users reactions) here ever:

If 155 thousand people are concerned enough to break through a wall of text on the Internet to find the best iOS open source libraries, I deliver.

Spying on my GitHub profile I have found over 180 new starred repositories from the time, so it is an excellent occasion to update my Medium content.

Say hello to 33 pods, that will skyrocket your development in 2017. Ignition started.

Photo Credit: (NASA/Joel Kowsky)
On the bottom of the story you will find a TL;DR summary list that contains all these libraries, links to them, and CocoaPods names (if available). No need to take notes during the reading. Now let’s go to the business.

1. IGListKit by Instagram Engineering

Made by Instagram developers, IGListKit is data-driven UICollectionView framework for building fast and flexible lists. Also, it helps you to not ending with Massive View Controllers in your app. Check out the tutorial from Ray Wenderlich about implementing this library in your project, or read this story from Rodrigo Cavalcante about migrating your existing UITableView to IGListCollectionView.

2. Realm by realm.io

Realm is a mobile database that runs directly inside phones, tablets and wearables, not only on iOS. If you want to taste something different than Core Data, try Realm. Many people say it is a modern, production ready replacement for the native Apple solution.

3. Moya by Ash Furrow

Moya is a missing network layer for your app. Instead of thinking where (and how) you should put your network requests, Moya handle this for you.

4. SwiftyJSON by Pinglin Tang

The king of JSON parsing in Swift.

Transform this:

if let statusesArray = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [[String: Any]],
let user = statusesArray[0]["user"] as? [String: Any],
let username = user["name"] as? String {
// Finally we got the username

into this:

let json = JSON(data: dataFromNetworking)
if let userName = json[0]["user"]["name"].string {
// Now you got your value

Optional wrapping is done for you automatically.

5. Valet by Square

Valet lets you securely store data in the iOS or OS X Keychain without knowing a thing about how the Keychain works. It supports sharing data among multiple applications (of the same developer) on a single device and sharing in one application across devices with iCloud. Touch ID support? No problem.

6. Firebase Analytics by Google Developers

Made (well, acquired) by Google, probably the best free analytics solution for iOS. Track app usage, user engagement, and events; set user properties; create custom audiences; and more.

7. AsyncDisplayKit

Facebook built this asynchronous UI SDK for their app Paper. If you are interested in rendering your app at 60 frames per second always, definitely take a look at this library. Here you can read a story from the Buffer team:

8. DZNEmptyDataSet

A user installed your app, and he sees a blank UITableView. DZNEmptyDataSet helps you avoid it by providing a default implementation of the Empty Data Set Pattern.

9. Chameleon by Vicc Alexander

Chameleon is a lightweight, yet powerful, color framework for iOS. It is built on the idea that software applications should function effortlessly while simultaneously maintaining their beautiful interfaces.

With Chameleon, you can easily stop tinkering with RGB values, wasting hours figuring out the right color combinations to use in your app, and worrying about whether your text will be readable on the various background colors of your app.

10. PermissionScope by Nick O'Neill

PermissionScope is a Swift framework for intelligently requesting permissions from users. It contains not only a simple UI to request permissions but also a unified permissions API that can tell you the status of any given system permission or easily request them.

11. FileKit by Nikolai Vazquez

FileKit is a Swift framework that provides simple and expressive file management. Take a look at usage examples.

12. SwiftyUserDefaults by Radek Pietruszewski

SwiftyUserDefaults makes user defaults enjoyable to use by combining expressive Swifty API with the benefits of static typing. Define your keys in one place, use value types easily, and get extra safety and convenient compile-time checks for free.

13. Kingfisher by 王巍(Wei Wang)

Kingfisher is a lightweight, pure-Swift library for asynchronous downloading and caching images from the web.

14. Hero by Luke Zhao

Hero is a library for building iOS view controller transitions. It provides a layer on top of the UIKit’s cumbersome transition APIs, making custom transitions an easy task for developers.

15. Hedwig by 王巍(Wei Wang)

Hedwig is a Swift package which supplies a set of high level APIs to allow you sending email to an SMTP server easily. If you are planning to send emails from your next amazing Swift server app, Hedwig might be a good choice.

16. DeviceKit by Dennis Weissmann

DeviceKit is a value-type replacement for UIDevice. Get your device info and battery level easily.

17. Charts

Beautiful line, pie, bar, scatter, bubble, radar, and more, charts library.

18. MGSwipeTableCell

An easy to use UITableViewCell subclass that allows to display swipeable buttons with a variety of transitions.

19. RandomKit by Nikolai Vazquez

Simple and easy random data generation.

20. ResponseDetective

ResponseDetective is a non-intrusive framework for intercepting any outgoing requests and incoming responses between your app and your server for debugging purposes.

21. Onboard

Easily create a beautiful and engaging onboarding experience with only a few lines of code.

22. Quick + Nimble by もどかしい

Quick is the Swift and Objective-C BDD testing framework, accompanying by Nimble, a matcher framework.

23. Natalie by Marcin Krzyzanowski

Natalie generates Swift code based on storyboard files to make work with Storyboards and segues easier. Generated file reduce usage of Strings as identifiers for Segues or Storyboards.

24. RxSwift by ReactiveExtensions*

Interested in reactive programming in Swift? Here is RxSwift.

25. GDPerformanceView by Daniil Gavrilov

GDPerformanceView shows FPS, CPU usage, app and iOS versions above the status bar and reports FPS and CPU usage via delegate.

26. Alamofire

Alamofire is an HTTP networking library written in Swift.

27. SwiftyStoreKit by Andrea Bizzotto

SwiftyStoreKit is a lightweight In App Purchases framework for iOS 8.0+, tvOS 9.0+ and macOS 10.10+.

28. Timepiece by AnyType

Intuitive date handling in Swift.

29. CryptoSwift by Marcin Krzyzanowski

Cryptography related functions and helpers for Swift implemented in Swift.

30. FSCalendar

A fully customizable iOS calendar library, compatible with Objective-C and Swift.

31. ImageViewer by Kristian Angyal

An image viewer à la Twitter.

32. PromiseKit

PromiseKit is a thoughtful and complete implementation of promises for any platform with a swiftc, it has excellentObjective-C bridging and delightful specializations for iOS, macOS, tvOS and watchOS.

33. Ensembles by Drew McCormack

Ensembles is an Objective-C framework — with Swift support — that extends Apple’s Core Data framework to add peer-to-peer synchronization for Mac OS and iOS. Multiple SQLite persistent stores can be coupled together via a file synchronization platform like iCloud or Dropbox. The framework can be readily extended to support any service capable of moving files between devices, including custom servers.

TL;DR list of libraries for quick access:

  1. IGListKit [UICollectionView framework] -> pod 'IGListKit', '~> 2.0.0'
  2. Realm [mobile database] -> pod 'RealmSwift'
  3. Moya [encapsulated network layer] -> pod 'Moya', '8.0.0'
  4. SwiftyJSON [JSON parsing] -> pod 'SwiftyJSON'
  5. Valet [Keychain helper] -> pod 'Valet'
  6. Firebase Analytics [analytics] -> pod 'Firebase/Core'
  7. AsyncDisplayKit [asynchronous UI SDK] -> pod 'AsyncDisplayKit'
  8. DZNEmptyDataSet [empty state pattern] -> pod 'DZNEmptyDataSet'
  9. Chameleon [flat colors framework] -> pod 'ChameleonFramework/Swift', :git => 'https://github.com/ViccAlexander/Chameleon.git'
  10. PermissionScope [iOS permissions framework] -> pod 'PermissionScope'
  11. FileKit [file management] -> pod 'FileKit', '~> 4.0.0'
  12. SwiftyUserDefaults [user defaults helper] -> pod 'SwiftyUserDefaults'
  13. Kingfisher [image downloading] -> pod 'Kingfisher', '~> 3.0'
  14. Hero [custom view controller transitions] -> pod 'Hero'
  15. Hedwig [email sending]
  16. DeviceKit [device info] -> pod 'DeviceKit', '~> 1.0'
  17. Charts [well… charts] -> pod 'Charts'
  18. MGSwipeTableCell [swipeable table cells] -> pod 'MGSwipeTableCell'
  19. RandomKit [random numbers generation] -> pod 'RandomKit', '~> 3.0.0'
  20. ResponseDetective [debug network requests] -> pod 'ResponseDetective'
  21. Onboard [user onboarding] -> pod 'Onboard'
  22. Quick + Nimble [BDD testing] -> pod 'Quick'
     pod 'Nimble'
  23. Natalie [code generating from storyboard]
  24. RxSwift [reactive programming] -> pod 'RxSwift', '~> 3.0'
  25. GDPerformanceView [real time FPS and CPU usage] -> pod 'GDPerformanceView-Swift', '~> 1.1.0'
  26. Alamofire [networking] -> pod 'Alamofire', '~> 4.3'
  27. SwiftyStoreKit [In App Purchases] -> pod 'SwiftyStoreKit'
  28. Timepiece [date helper] -> pod 'Timepiece'
  29. CryptoSwift [cryptography] -> pod 'CryptoSwift'
  30. FSCalendar [calendar] -> pod 'FSCalendar'
  31. ImageViewer [Twitter inspired image viewer] -> pod 'ImageViewer'
  32. PromiseKit [promises] -> pod 'PromiseKit', '~> 4.0'
  33. Ensembles [Core Data synchronization] -> pod 'Ensembles'

Thanks for reading, that was not the shortest article you can read on Medium! If you liked this story, click the 💚 below and share this post with your friends, so more people will discover these fantastic libraries. You can also follow me on Twitter, where I tweet mostly on iOS development. Thank you!

And hey, if I have already grabbed your attention, take a look at my current main project outside of the iOS programming world:

Interested in popular science, amateur astronomy, and space exploration? Say hello to Enter Universe (yes, it’s clickable!).

Thanks for reading! Like, share, follow, and see you soon!