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.
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 delightfulspecializations 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:
- IGListKit [UICollectionView framework] ->
pod 'IGListKit', '~> 2.0.0'
- Realm [mobile database] ->
pod 'RealmSwift'
- Moya [encapsulated network layer] ->
pod 'Moya', '8.0.0'
- SwiftyJSON [JSON parsing] ->
pod 'SwiftyJSON'
- Valet [Keychain helper] ->
pod 'Valet'
- Firebase Analytics [analytics] ->
pod 'Firebase/Core'
- AsyncDisplayKit [asynchronous UI SDK] ->
pod 'AsyncDisplayKit'
- DZNEmptyDataSet [empty state pattern] ->
pod 'DZNEmptyDataSet'
- Chameleon [flat colors framework] ->
pod 'ChameleonFramework/Swift', :git => 'https://github.com/ViccAlexander/Chameleon.git'
- PermissionScope [iOS permissions framework] ->
pod 'PermissionScope'
- FileKit [file management] ->
pod 'FileKit', '~> 4.0.0'
- SwiftyUserDefaults [user defaults helper] ->
pod 'SwiftyUserDefaults'
- Kingfisher [image downloading] ->
pod 'Kingfisher', '~> 3.0'
- Hero [custom view controller transitions] ->
pod 'Hero'
- Hedwig [email sending]
- DeviceKit [device info] ->
pod 'DeviceKit', '~> 1.0'
- Charts [well… charts] ->
pod 'Charts'
- MGSwipeTableCell [swipeable table cells] ->
pod 'MGSwipeTableCell'
- RandomKit [random numbers generation] ->
pod 'RandomKit', '~> 3.0.0'
- ResponseDetective [debug network requests] ->
pod 'ResponseDetective'
- Onboard [user onboarding] ->
pod 'Onboard'
- Quick + Nimble [BDD testing] ->
pod 'Quick'
pod 'Nimble' - Natalie
- RxSwift [reactive programming] ->
pod 'RxSwift', '~> 3.0'
- GDPerformanceView [real time FPS and CPU usage] ->
pod 'GDPerformanceView-Swift', '~> 1.1.0'
- Alamofire [networking] ->
pod 'Alamofire', '~> 4.3'
- SwiftyStoreKit [In App Purchases] ->
pod 'SwiftyStoreKit'
- Timepiece [date helper] ->
pod 'Timepiece'
- CryptoSwift [cryptography] ->
pod 'CryptoSwift'
- FSCalendar [calendar] ->
pod 'FSCalendar'
- ImageViewer [Twitter inspired image viewer] ->
pod 'ImageViewer'
- PromiseKit [promises] ->
pod 'PromiseKit', '~> 4.0'
- 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: