Working on my currency converter app for iPhone (a really handy app for travel to Europe <both Western and Eastern>, or Iceland), here I’ve selected favorites from my favorites iOS open source libraries. Order of these projects is totally random, all of them are simply awesome.

The overwhelming majority of the libraries support CocoaPods, so adding them to your Xcode project is a breeze.

On the bottom of the article you will find a TL;DR version — a simple list with only titles and links to the projects. If you’ll find this article useful, share it with your iOS dev buddies. Good things need to spread.

1. DZNEmptyDataSet

This should be a standard, built-in into iOS way of dealing with empty table and collection views. By default if your table view is empty, the screen is empty. It’s not the best user experience you can have.

With this library you just need to conform to a few protocols and iOS will beautifully take care of your collection view and display proper, good looking to user messages. No brainer for every iOS project.

It’s truly customizable.

CocoaPods:

pod 'DZNEmptyDataSet'

2. PDTSimpleCalendar

Need a simple, nice looking and working calendar component for your app? Now you have — PDTSimpleCalendar is probably the best calendar component for iOS. You can customize it in many ways, both working logic and looking.

CocoaPods:

pod 'PDTSimpleCalendar'

3. MagicalRecord

Core Data is simple, they said. It’s nice and simple, they said. Huh, really, Apple? A ton of boilerplate code added to each project isn’t very elegant and simple. Not to mention adding, removing and updating a lot of entities, saving context, creating different Core Data stacks for different environments etc, etc. I like Core Data very much of course, but Apple really could simplify it in a little better way — the MagicalRecord way.

MagicalRecord works like a wrapper for Core Data and hides from developer all non-relevant stuff. If you’ve ever worked with active record pattern (e.g. Ruby on Rails), you’re in home. Really, really recommended library if you are using Core Data in your app.

CocoaPods:

pod 'MagicalRecord'

4. Chameleon

If you are reading this, odds that you’re a better programmer than a designer are very high. This is something for you.

Chameleon is a color framework for iOS. It extends UIColor with beautiful, modern flat colors. It also gives us ability to create color palletes from color defined by us. It can do many other things, explore readme. If you want beautiful application, definitely add this library to your project.

Chameleon basic flat colors.

CocoaPods:

pod 'ChameleonFramework'

5. Alamofire

Alamofire is an elegant networking library written in Swift. Have you ever been using AFNetworking? Alamofire is it’s younger brother. Younger and more stylish, of course (AFNetworking is written in Objective-C).

Need to do networking stuff like downloading, uploading, getting JSONs etc.? Alamofire is for you. 8000 people on GitHub cannot be wrong.

CocoaPods:

pod 'Alamofire'

6. TextFieldEffects

Don’t you think that standard UITextField is a little boring? Me too — so say hello to TextFieldEffects! I won’t write too much, I’ll just show you a few examples what this library can do:

Yep, these are simple drop-in controllers. You can even make use from IBDesignables in storyboard!

CocoaPods:

pod 'TextFieldEffects'

Carthage:

github "raulriera/TextFieldEffects"

7. GPUImage

Have you ever created a camera app? If not, you surely will after meeting this library.

GPUImage possibilities.

GPUImage provides us a GPU-accelerated camera effects (both images and video) with blazing speed. There are hundreds of apps in the App Store that use this library — and one mine’s too:

GPUImage in use in one of my apps.

8869 stars on GitHub and still counting.

CocoaPods:

pod 'GPUImage'

8. iRate

What’s the best way to get more reviews in the App Store? I don’t have hard data to answer that question, but if I had to guess, I would say that simple asking the user. Maybe it’s a little oldschool way to do this— most developers now create custom in-app alerts — but if you don’t have time or you don’t want to implement everything from scratch, it’s better to use iRate than not to. And this is iRate exactly — a small library that you include in your project and forget about asking users for review — iRate will do it for you, at proper time.

CocoaPods:

pod 'iRate'

9. GameCenterManager

Love or hate singletons, but in this case managing Game Center is just easier with a little help of our best known anti-pattern (you have only one Game Center in your game, right?).

To be honest, vanilla-managing Game Center in iOS isn’t that hard, but with this library is just simple and fast. And better is the enemy of the good.

I’m using this in one of my games and it’s a pleasure experience.

CocoaPods:

pod 'GameCenterManager'

10. PKRevealController 2

This is a real gem here, one of my most favorited iOS control. PKRevealController is a slideable side menu (left, right or both), which slides with a help of your finger (or just by pressing the button, but it’s not as much cool as sliding).

I’ve tried a few other libraries providing this kind of control and PKRevealController is just the best. Very easy to setup, highly customizable and recognizes gestures very, very well. It could be included in iOS SDK as a standard control, really.

CocoaPods:

pod 'PKRevealController'

11. SlackTextViewController

Have you ever used Slack iOS app? If you are working in a bigger software company, probably yes. For these people who haven’t — Slack rocks. And Slack’s iOS app too, especially for the great, custom text input control… which here you have — a code ready for use in your app!

Self growing text area? Check.Gestures recognizing, autocompletion, multimedia pasting? Check. Easy drop-in solution? Check. What else can you possibly need?

CocoaPods:

pod 'SlackTextViewController'

12. RETableViewManager

RETableViewManager will help you with dynamically creating and managing your table views, everything in code. It deliver us predefined cells (for bools, texts, dates etc. — check screenshots below), but you can also create your custom views and use them along with the default ones.

Left screenshot is so oldschool!

All of this stuff you can do in storyboard without help of this library, but sometimes code is simply better than visual editor.

CocoaPods:

pod 'RETableViewManager'

13. PermissionScope

Useful library to deliver better user experience by informing user about needed system permissions before asking user for them. Higher acceptance rate -> more users actively using the app -> better retention -> better stats -> more downloads. Highly recommended pod.

CocoaPods:

pod 'PermissionScope'

14. SVProgressHUD

This image is loaded properly, don’t wait longer and don’t refresh the page. This is exactly how SVProgressHUD looks like in your app. If you need custom waiting indicator, here you have (the best probably) one.

CocoaPods:

pod 'SVProgressHUD'

15. FontAwesomeKit

Font Awesome is awesome and with this library you can easily add the font to your project and use it in many ways.

CocoaPods:

pod 'FontAwesomeKit'

16. SnapKit

Love auto layout? You should!

At least when creating it in storyboards.

Creating constraints in code is painful without some help, but luckily SnapKit is here and with it on board you can code your constraints in easy, declarative way. Check it out.

CocoaPods:

pod 'SnapKit'

17. MGSwipeTableCell

Another UI component, that is so often seen in many apps that Apple should probably think about including something similar in standard iOS SDK. Swipeable table cell, this is the best description of this pod. The best one.

These are just 3 animation types, there are more of them. Explore readme.

CocoaPods:

pod 'MGSwipeTableCell'

18. Quick

Unit testing in Swift, for Swift (ok, for Objective-C too), integrated with Xcode. If you are Objective-C fan, I would recommend Specta instead of this, but for Swift Quick will be probably the best shot.

CocoaPods:

pod 'Quick'

19. IAPHelper

In-app purchases brings us a lot of boilerplate code, which this library get rid of and give us a simple wrapper for most common tasks related to money transfer from iOS user to your (or your company) wallet.

CocoaPods:

pod 'IAPHelper'

20. ReactiveCocoa

OK, here we have a little monster.

ReactiveCocoa isn’t a rather small, drop-in project like the others on this list. ReactiveCocoa brings us a totally different programming style/architecture based on signals and streams of values. It’s totally mind blowing and first you need unlearn what you’ve learned to understand how this work. It’s not an easy task, but rewarding.

This isn’t a proper place to teach you ReactiveCocoa, but I’ll give you good resources if you are interested:

CocoaPods:

pod 'ReactiveCocoa'

21. SwiftyJSON

JSON parsing in Swift made easy.

CocoaPods:

pod 'SwiftyJSON'

22. Spring

Animations made easy, chainable and declarative.

CocoaPods:

pod 'Spring'

23. FontBlaster

Load custom fonts to your app easily.

CocoaPods:

pod 'FontBlaster'

24. TAPromotee

Cross promoting your apps is one of the best marketing strategies you can implement in them for free. And with this library it’s so easy that you can’t longer justify not doing it — add TAPromotee to your podfile, configure and enjoy more downloads for free.

CocoaPods:

pod 'TAPromotee'

25. Concorde

Do you load a lot of JPEGs in your app? With Concorde you can do it in a bit better looking way. A progressive way.

CocoaPods:

pod 'Concorde'

26. KeychainAccess

Little helper library to manage Keychain access.