15 Pods we use


One of the best things in iOS programming is that there are plenty of open source libraries which can be used freely by developers. Those libraries often not only help in writing pure and concise code but also provide simple APIs which make programmer’s life easier. They are usually wrappers for some Apple frameworks like Foundation or UIKit which are exposed by developers, usually as an open source project in order to let other developers contribute to them.


Let’s imagine a situation where an iOS project grows bigger and bigger, because a developer continuously adds to it some helper libraries. It takes up too much time and the project starts to get a little bit messy. Fortunately, there is a tool called CocoaPods, which is available to everyone.

CocoaPods is a collection of libraries written in Objective-C or Swift language. Each framework can be easily accessed via cocoapods.org site where developers can search for the desired one and read its documentation. When there is a need to include some of those libraries into the iOS project, everything what needs be done is to add the cocoapods to your project by invoking pod init command. After that a Podfile is created inside where a developer can add desired libraries by writing pod <library_name> to the file. Lastly a pod install command should be invoked. By performing this action, all libraries included in a Podfile are automatically installed.



On behalf of VORM, I have decided to propose some very useful pods, which could make every developer’s programming experience more joyful. Here is the list of our top fifteen.



  1. Fabric & Crashlytics

Every app should have a tool for crash reporting. Basically Fabric is a framework which should be added as soon as a new iOS project is created. By integrating this tool, the developer instantly knows when a crash occurres and gets a notification either via email or via push notifications if a Fabric app is installed. The tool also supports mobile & UI analytics, mobile identity, game analytics and many more. It is available for iOS and Android platforms.

The configuration is very easy and it just comes down to add some code inside application:didFinishLaunchingWithOptions: method. Getting stared guide how to setup Fabric & Crashlytics in an iOS project can be found here.



  1. GoogleAnalytics

App analytics is a feature that should be implemented in every iOS application. Google has done a good job by creating GoogleAnalytics for iOS and Android applications. Developers can track screen appearances and also connect actions to UI elements like buttons, sliders, switches. Google provides a very intuitive dashboard where all application events are collected. Events can be sorted or filtered. By doing this, a developer can see what is the behavior of each user when it comes to using particular application. After that, several modifications could be proposed in order to make an application more user friendly.

Getting started guide and setting up an iOS project for google analytics can be found here.




  1. CocoaLumberjack

CocoaLumberjack is a really nice library when it comes to debugging. It is just a substitute of well-known NSLog() statement, but it is more faster and has some nice features which could make logging much more powerful. With CocoaLumberjack, colors can be added to XCode’s console and a different color can be set for different log type (e.g. error, warning, info message). The library also supports logging to file. It could be easily set up by adding a few lines of code.

Repository to that library with all valuable information can be found here.



  1. Reachability

Have you ever wanted to do some actions while an internet connection is down or when an internet source has changed? Reachability library written by Tony Million is a great tool for that. Everything what needs to be done is to create an instance of Reachability class and start listening for any network changes. When a network connection changes, appropriate block (reachableBlock or unreachableBlock) will be invoked. Reachability is a great tool for apps that depend strongly on internet and need to be up to date with remote database.

Repository to that library with all valuable information can be found here.



  1. JBChart & Charts

Sometimes there is a need to embed graphs showing some data in an application and there is often not much time to do that. There are two libraries which can be very useful in a process of creating a graph.

First one is JBChart. It is a widely customizable chartView. All customizations are done via delegate and dataSource protocols which is super easy to use. JBChart supports line charts, multiple line charts and bar charts. Repository to this library can be found here.

Second graph library, much more powerful, is Charts. Library is written in Swift, but it can also be easily used with Objective-C projects. It is much more customizable than JBChart, but when someone uses it for the first time, it takes much more time to read the documentation and customize particular graphs in order to fulfill our needs. All actions are also easily handled by delegate protocols. Repository to that project can be found here.



  1. Mansonry & PureLayout

Sometimes there is a need to setup an Autolayout in code. With Apple’s NSLayoutConstraint class it really takes a lot of time to set it up and the code is undoubtedly unreadable. Masonry and PureLayout are great substitutes for the class mentioned above. They have a simplified, chainable and expressive syntax and make the autolayout code more readable and compressed. Masonry repository can be found here and PureLayout repository can be found here.



  1. Realm

Realm is a mobile database based on SQLite, which in many cases can be a good substitute for Apple’s Core Data database. It is really easy in use and it doesn’t take long to get it work with your iOS application. Realm supports NSPredicates so creating a query and fetching data from database is very easy. The tool supports both iOS and Android so the database can be easily moved between both platforms without any loss of data. There is no problem in handling a notification when new data is stored to database. A migration tool is also available.

Getting started guide can be found here.



  1. MBProgressHUD

MBProgressHUD is a library for displaying translucent HUD messages. HUD stands for Head-Up Display. There is a wide range of different HUDs available in the library. We can choose between success message HUDs, failure message HUDs, loading HUDs, information HUDs and many more. The HUD itself is highly customizable thus we can change it’s appearance. HUD can be shown by adding one line of code therefore library is super easy to use.

Repository is available here.



  1. TPKeyboardAvoiding

Have you ever struggled with keyboard avoidance while developing an application? It takes so much time to write a code that moves a view correctly when a keyboard appears or disappears. With TPKeyboardAvoiding library all of this takes just a few seconds. It works under one condition – our view must be embedded inside UITableView or UIScrollView. Then we make our view as a subclass of TPKeyboardAvoidingTableView or TPKeyboardAvoidingScrollview and there we go, all keyboard avoidance actions are handled by those two classes.

Repository to that library with all valuable information can be found here.



  1. DZEmptyDataset

DZEmptyDataset is a library for handling empty data sets for UITableViews and UICollectionViews. It means that by using this library we can easily configure what view should be displayed when there is no data available. The configuration is done via delegate protocol and there are plenty of options what to display when there is no data. We can choose between text, attributed text, image, custom view, animation and many more.

Repository is available here.



  1. ViewDeck / REFrostedViewController

ViewDeck and REFrostedViewController are libraries for displaying menus sliding from different sides of an application’s view. ViewDeck implements a behavior similar that is in Facebook application and ReFrostedViewController slightly differs from ViewDeck. The sliding menu overlays the existing main view and does not move main view’s frame as ViewDeck does. Configuration is very simple when using both libraries.

Repository to ViewDeck can be found here, whereas repository to REFrostedViewController here.



  1. MGSwipeTableCell

MGSwipeTableCell is an easy to use UITableViewCell subclass that allows to display swipeable buttons with a variety of transitions. Buttons’ actions are served by delegate protocol or by callback blocks which are defined by every MGSwipeButton class.

Repository can be found here.



  1. YLGIFImage

YLGIFImage is an asynchronized GIF image class and image viewer which supports playing and stopping GIF images. Author says that library uses much less memory than a GIF image added to application using Apple’s APIs.

Repository can be found here.



  1. ImagePickerSheetController

ImagePickerSheetController is a library that replicates the custom photo action sheet in iMessage. Its actions are easily customizable because it is similar in use to UIAlertController class. We can choose multiple photos and then we get a callback with those photos so we can perform some action on those pictures. The library is written in Swift language and uses Photos.framework therefore it requires iOS8 or later.

Repository is available here.



  1. Haneke

Haneke is a lightweight image cache for iOS written in Objective-C.  It resizes an image, decompresses it and saves it on a disk. Everything is done in background and we do not have to worry about anything. Haneke is thread-safe and it supports asynchronous and synchronous image retrieval. It also supports custom image transformations before and after resizing. It is really super easy in use, just one line of code is needed to cache an image.

Repository is available here.



To sum up, CocoaPods is a delightful tool which can really spare our time while developing iOS applications. It automates the process of linking outer libraries to an iOS project and that is why it is loved by many developers.



Give us your email and we’ll keep you in the loop with our latest projects and thoughts.