As a freelancer building mobile apps for startups and a startup founder building my own apps, I build and maintain a lot of apps.

(Check out my post on my favorite Android open source libraries if you do Android dev)

Over the years, I have used a lot of different open source libraries to help me complete tasks in my mobile apps. Lately with Swift being changed frequently, you are under pressure to make sure all of your libraries are up to date and compatible with the iOS version you are running.

Here is a list of open source libraries that stay up to date and I enjoy. I use these in all (or almost all) of my mobile apps I build.

  • Alamofire If you are building a mobile app that connects to an API over the Internet, Alamofire is a must.

  • Realm I use Realm as my database on iOS instead of using Core Data. It's an awesome mobile database that is very developer friendly. I am part of the Realm MVP program so if you have questions about how to use Realm, get a hold of me :).

  • RxSwift Maintaining the state of your app is challenging. Writing boilerplate code is painful and prone to buggy code. RxSwift is an amazing library I don't know what I would do without. I use it to sync my data with the user's views, and a better way of managing the flow of data.

  • ObjectMapper When dealing with JSON data downloaded from an API, ObjectMapper is the best library that I have used (out of many) to create objects from JSON data to use in your code.

  • Kingfisher If you need to display images in your app, use Kingfisher. Easy to use, powerful, fast.

  • Mac Build offline-first mobile apps. Remove loading screens from your user and allow them to perform tasks while they are offline. I use this when I start new apps so I can make it offline compatible right away and not try and add it later.

  • IQKeyboardManager Managing the state of your keyboard shouldn't be hard but it is on iOS. IQKeyboardManager takes care of everything for you after simply installing it.

Libraries I don't always use but consider worth it in the right use case:

  • KeychainAccess If you need to add, delete, update data in your keychain, KeychainAccess is the way to go.

  • DZNEmptyDataSet If you use UITableViews in your code and you need to display loading views or views when there is no data to show, this is the library for you.

Do you have a favorite library you use? Share it with me I would love to hear about it.

Check out my highly rated tutorials on how to build an iOS library for Cocoapods so you can reuse your code across multiple projects.

Header photo by Lewis Ngugi on Unsplash