10 iOS Libraries to Make Your Life Easier

The operating system that powers Apple’s iPhone and iPad devices, iOS, has proved incredibly popular with developers. A large part of this is almost certainly due to the opportunity that the App Store gives developers to make money, but the great development tools that Apple provide, in the form of XCode and Interface Builder, and also the Objective-C programming language, which iOS developers are required to use, certainly play their part.

The iOS SDK that developers use to build iPhone and iPad apps is relatively low level, requiring the developer to do a lot of work to get their app up and running. Fortunately there are lots of third party libraries available that provide useful functionality that can make your life as an iOS developer much easier. Here we discuss 10 of the best:

MBProgressHUD – Progress Indicator Library

Many official Apple apps have a nice translucent progress display. Unfortunately it’s an undocumented API, and therefore using it is likely to get your app rejected from the app store. This library provides a drop in replacement that looks almost identical. It also provides some additional options, such as a visual progress indicator, and a progress completion message. Integrating it into your project is as simple as adding a couple of files, so you’ve got no excuse not to!

ASIHttpRequest – HTTP Network Library

The iPhone’s network API can be a little verbose. the ASI library simplifies network communication greatly, and offers advanced tools such as file uploads, redirect handling, authentication, form submission, and caching. If you’re doing anything HTTP related in your iPhone app then this library will make your life so much easier! Here’s how simple it makes fetching a website asynchronously:

- (void) loadAppDevMag
   NSURL *url = [NSURL URLWithString:@"http://www.appdevmag.com"];
   ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
   [request setDelegate:self];
   [request startAsynchronous];

- (void)requestFinished:(ASIHTTPRequest *)request
   // Use when fetching text data
   NSString *responseString = [request responseString];

JSON Framework – JSON Support

If your app interacts with any web services you’ll more than likely come across JSON encoded data. Surprisingly there’s no support for JSON in the native iOS libraries, but the JSON framework provides everything you need, including a parser to turn JSON strings into objects, and a generator to create JSON strings from objects. This library is so popular, and JSON so common, that it’s actually included in many of the other libraries features in this post already. Here’s a quick example:

// JSON string -> NSDictionary
NSString *jsonString = @"{\"foo\": \"bar\"}";
NSDictionary *dictionary = [jsonString JSONValue];
NSLog(@"Dictionary value for \"foo\" is \"%@\"", [dictionary objectForKey:@"foo"]);

// NSDictionary -> JSON string
NSString *newJsonString = [dictionary JSONRepresentation];

Flurry – Detailed Usage Statistics

By adding the flurry SDK to your project you’ll automatically get a load of usage statistics about your application, such as how many users you have, how active they are, and where they are in the world. The real power of flurry though is that it allows you to specify your own events to track, and log errors. All of this information is then available in a Google Analytics style dashboard, so you can see what your users are doing with your app, and what problems they’re running into. You really should be using some kind of usage tracking library, and although alternatives do exist, such as Google Analytics for Mobile and Localytics, Flurry has worked really well for me.

RegexKitLite – Regular Expression Support

Regular Expressions are a really powerful tool, and the absence of support for regular expressions in the iPhone SDK seems to be a glaring omission. Fortunately the RexexKitLite library is here to help. It’s a powerful fully featured regex library that’s simple to use. Here’s the sample code to match a phone number:

// finds phone number in format nnn-nnn-nnnn
NSString *regEx = @"[0-9]{3}-[0-9]{3}-[0-9]{4}";
for(NSString *match in [textView.text componentsMatchedByRegex:regEx]) {
    NSLog(@"Phone number is %@", match);

Facebook iOS SDK – Facebook API Library

Facebook login (previously called Facebook Connect) is used all over the web as a way for users to login to services by using their existing Facebook account, saving them from having to create lots of separate accounts. This library allows you to do the same with your iPhone apps. It also has full support for both the Facebook Graph API and the older REST api, which give you access to the social graph and related Facebook information of your users, and make it easy to implement features such as friend finders and inviters. This library is used by a lot of big name apps for their Facebook integration, so if you want to use Facebook as your primary authentication method or you’d just like to add a friend invite feature this library is well worth checking out.

SDWebImage – Simple Web Image Support

SDWebImage is a library for dealing with images on the web. It allows you to use images on the web as easily as local files already packaged with your application. It automatically handles caching, and also supports advanced features such as placeholder images and a download queue. Once you’ve added it to your project you can set the image for a UIWebView as simply as:

[imageView setImageWithURL:[NSURL URLWithString:@"http://example.com/image.png"]];

Similar functionality is provided by the Three20 library, mentioned later, but if you’re after a simple library that focuses on doing one thing well, and you’re using web based images in your project, then SDBWebImage is what you need.

GData client – iPhone library for all of Google’s services

Google’s official GData library allows you to access many of Google’s services, including contacts, calendar, analytics, picasa, translate and YouTube. The project is well documented, and contains lots of example applications. With all of the great services Google offer there are so many different ways that this library could be used to enhance an existing application, and there are probably lots of interesting apps that could be built off the back of the example apps included in this library. If you’re an iOS developer stuck for ideas then this is where I’d suggest you look!

CorePlot – 2D Graph Plotter

CorePlot makes makes it extremely easy to visualize your data in a variety of ways, and produces very attractive graphs. It supports bar graphs, pie charts, line graphs, and complex mathematical function plotting among others. The library is well documented, and the website contains lots of examples of where it’s already being used, including stock price applications, game scores, personal finance apps, and for web analytics visualization.

Three20 – General iOS Library

The Three20 library came out of the official Facebook iPhone app. It’s a fairly big and full featured library, including low level components such as a HTTP cache, and many higher level UI components such as a photo viewer and web based table view. It can be a little tricky to integrate Three20 into existing projects, but if you’re starting a project from scratch Three20 can really give you a big head start, especially for projects that make heavy use of the web.

There’s a library for that…

Whether it’s interacting with a web API, visualizing data, loading images from the web, or creating social features in your app, the libraries listed here make developing such features easier and less time consuming. If you’re an iOS developer and you haven’t made use of any of these libraries then you should definitely check them out before starting your next project. If you have used any of them, or one that we haven’t mentioned, then please let us know your experiences in the comments.

About the Author

Ben Dowling is the co-founder of Geomium, co-organizer of the Hacker News London meetup, and blogs at Coderholic.com. You can also follow him on twitter @coderholic
  • http://wordpress.org/ Mr WordPress

    Hi, this is a comment.
    To delete a comment, just log in and view the post's comments. There you will have the option to edit or delete them.

  • http://eidhof.nl/ Chris Eidhof

    Another cool library is Tapku, http://tapku.com/ and https://github.com/devinross/tapkulibrary, which provides a lot of additional controls. Three20 is quite heavy, whereas Tapku just provides you with independent controls.

  • Chris

    Core Plot is easy and well-documented? You’ve got to be kidding.

  • Anonymous

    “the great development tools that Apple provide”? …Um, er, have you ever used Visual Studio? Eclipse? xcode is getting better, but using it remains a relatively violent experience.

  • http://twitter.com/fusionet24 Scott James Bell

    I have to disagree – Visual Studio has to be one of the worse development environments, i’ve ever used. I Like Eclipse but still Xcode for $5 compared to $400 (or what ever) is a bargin. Yeah Xcode isn’t the best but it’s not bad either.

  • http://twitter.com/fusionet24 Scott James Bell

    I have to disagree – Visual Studio has to be one of the worse development environments, i’ve ever used. I Like Eclipse but still Xcode for $5 compared to $400 (or what ever) is a bargin. Yeah Xcode isn’t the best but it’s not bad either.

  • http://twitter.com/fusionet24 Scott James Bell

    I have to disagree – Visual Studio has to be one of the worse development environments, i’ve ever used. I Like Eclipse but still Xcode for $5 compared to $400 (or what ever) is a bargin. Yeah Xcode isn’t the best but it’s not bad either.

  • Gustavo

    You forgot about ShareKit: http://www.getsharekit.com/. WAY better than the facebook library.

  • Aaron

    Regular expressions aren’t a “glaring omission”. NSRegularExpression is available since 4.0.

  • nick

    Recently discovered FTUtils – http://ftutils.com/ – Nice easy-to-use macros for animating views.

  • http://pixor.net Mike

    I’ve heard good things about RestKit: https://github.com/twotoasters/RestKit

  • http://twitter.com/TinyTechnician Tiny Technician

    Another good library is OpenFlow (which easily adds a CoverFlow look to your App).


  • Anonymous

    While working as a freelancer I often encountered another problem… managing content. I just created a service to solve this. What do you think about it?


  • Anonymous

    I agree with him. I think Visual Studio is a hell of a lot better than Xcode. Still getting used to Xcode 4.0, so keeping my judgement on that one

  • http://twitter.com/kwigbo Jedidiah

    I would still say its a “glaring omission”, since it took them till 4.0 to add it. What do you do if you want to support older devices?

  • http://twitter.com/38leinaD Daniel Platz

    In case someone needs to read/write a windows fileshare with the iPhone: https://github.com/38leinaD/tango

  • http://www.facebook.com/sherbondy Ethan Sherbondy

    “Once you’ve added it to your project you can set the image for a *UIWebView* as simply as…”

    Did you mean to type UIImageView?
    Pleasant listing otherwise.

  • http://twitter.com/Vanish Amazing Vanish

    I’d rather gouge my eyes out than use Visual Studio, and I’m stuck in Eclipse every day for the job that pays the bills. Xcode is pleasant by comparison. Sometimes frustrating, but anyone who says their IDE is perfect is lying to you.

  • Anonymous

    Interesting stuff… I just need to learn Objective C language and off I go to become App Store star…

  • http://haoxiang.org mr.pppoe

    Cool, I’d like to check out CorePlot.

  • http://twitter.com/nnutter Nathan Nutter

    NSRegularExpression is in iOS 4. Obviously if you are to support iOS 3 that doesn’t help but seems relevant nonetheless.

    Edit: Nevermind, another comment already pointed this out.

  • Aditya15417

    You should probably include RestKit it’s a very useful library to consume REST web service

  • Aeberbach

    Three20 – NO! DON’T USE THIS! Seriously, after suffering through Three20 on a few projects started before my time, stay right away. The other libraries, fine. At Cocoaheads the other night mention of Three20 brought laughter from the whole room.

    OK, I give up. DO use Three20. Just not in anything you want to deliver, maintain or customise. Go try it out on something that doesn’t matter. I’ll be waiting right here, to say “I told you so…”

  • Anonymous

    Interesting. Seems to work well for Facebook and SCVNGR. What were your issues with it?

  • Aeberbach

    Dependencies. Documentation. Bulk. Stopped supporting 3.1.3 without warning. Analyzer and compile warnings (I like treat warnings as errors). Inflexibility. Xcode 4 issues.

    It can work if you want what it offers. Or if you’re prepared to change your idea of what you want.

  • http://twitter.com/stuartkhall Stuart Hall

    Great roundup!

    I have a couple people might be interested in:

    Instagram style error messages (ie connection error) https://github.com/stuartkhall/ios_global_popup_alert

    Asynchronous UIImageView with local caching: https://github.com/stuartkhall/ios_async_image_view

  • Rishi

    flurry? really? stevie doesnt like flurry.. he said so in his last D5 conference..

  • Anonymous
  • Missing}

    If you haven’t tried Visual Studio in the last five years or so you are missing out. I’ve been a VS user since the late 90′s and it really has improved…. But I still prefer Xcode (perhaps it is the platform and not the tools though)… :)

  • Anonymous

    I have to try them all… exiting times !!!

  • http://penix.antigamer.com/ penix

    Visual Studio may be the champion contender, but please don’t even bring up that wretched piece of trash Eclipse.

  • http://www.facebook.com/profile.php?id=606245590 Elad Kushnir

    You forgot Appoxees push notification service! 

  • http://houstonalarmsystemstx.com Houston Alarm

    Personally, I prefer General iOS Library.

  • Seni Iosdev
  • Josh Kovach

    Great tools for Core Data and JSON: MagicalRecord (https://github.com/magicalpanda/MagicalRecord) makes your Core Data models act like Rails’ ActiveRecord.  JSONKit (https://github.com/johnezang/JSONKit) makes loading and reading json files trivial.

  • Jerry

    We use https://heatma.ps SDK in all our apps to get visual analysis. It lets you see where people touch the screen and if they make any gestures to scroll zoom or swipe on any screen.

  • http://blog.andikurnia.com andikurnia

    well, thank you for your review.. :)

    it was useful library, this is what I searching for…. :D

  • http://www.facebook.com/people/Thaddeus-Cambron/1034165714 Thaddeus Cambron

    Thank you for this link and description of 
    MBProgressHUD – Progress Indicator Library
    As a project manager I was told that our app could not have a progress bar/indicator when uploading data via SSL because we have an online and offline state. Obviously the upload happens during the online state. Couldn’t we write a function that checks whether the app is on-line and if yes starts the upload and therefore the progress indicator referenced in the library? Am I missing something? Any feedback is appreciated. Thanks!

  • http://twitter.com/coderholic Ben Dowling

    Hi Thaddeus,

    I can’t see any reason why you couldn’t have a progress indicator, and MBProgressHUD would likely be ideal. There may be some other complexity that’s making it hard for your developers to add a progress bar, but online/offline settings shouldn’t be it.

    Thanks, Ben

  • jbreez

    you really don’t need all that fancy programming language when you can create a flawless app of your choice and it happens with this simple fool proof tool http://56d46wbwe79xck8at0mgu1j90r.hop.clickbank.net/?tid=098765432

  • http://www.fulcrumbiometrics.com/ Kathleen

    Fulcrum Biometrics has an iOS Library that enables you to integrate fingerprint and face recognition with iOS apps running on iPhone, iPod touch and iPad.

  • http://www.mobilecubix.com/ iPhone App Developer

    This site is really awesome and informational to me and I think this would be awesome to me if I’ll share this site to my friends.

  • http://www.carrotmedia.com/ Facebook App Developer

    You have covered a great topic to review.

  • http://www.tatvasoft.co.uk/iphone-application-development.php Norris Kendall

    Flurry had been proactively creating an effort, along with its biggest customers, that brings the mobile market in defending customer comfort.Flurry proceeds its responsibility to help developers build better programs.  

  • Will

    Sorry, but XCode and Eclipse are both POS,s and I’ve been developing software since 1994. Studio has done nothing but improve and make the developer’s day a hell of a lot easier. Compare the experience of configuring builds that include companion projects in XCode and Eclipse to Visual Studio. I’ve wasted hours of my life configuring Three20 to build properly for all targets. And don’t get me started on the IDE’s intellisense parser. Even Eclipse does a better job in that regard. I don’t like getting into religious discussions, but VS is a joyous experience to develop in and XCode seems to just get in the way.

  • http://www.mobilecubix.com/ iPhone Application Developers

    hmm this site is awesome and informative to me, i am also gonna share this site to my friends.

  • http://essayshelp.org/ essays

    It is really great! Such things help us a lot! Thanks for the information

  • http://cv-writing-services.org.uk/ cv writing service

    Users of this system can really make a lot of work faster and spend not so many forces on this. 

  • Laxman

    Is any registration to apple required in case of static library

  • onegray

    I’d like to add one more.  
    TableKit is a useful UITableView wrapper  

  • http://www.bestfijideals.com/ Fiji Deals

    OS of Blackberry should be like iOS of iPhones. I hope they can improve the graphic designs and games too!

  • http://www.tatvasoft.co.uk/iphone-application-development.php Walter

    Really Nice post… Looking forward to other post.. Keep sharing

  • http://www.mappfia.com/ mobile app development

    I would like to say that Mobile applications are an increasingly popular mechanism for engaging
    with customers due to the seismic shift in the way that we consume
    electronic information

  • http://www.mobilesignalboosters.net/ mobile phone signal booster

    This iOS Library are very helpful in the case you have to develop a fast iOS app. Using this library you can develop a fast and quality apps for your iOS Device.

  • Dave

    just stumbled upon this and wanted to add that I use appboy.  It is similar to flurry, but is more powerful and for me it was easier to implement.

  • http://www.mindinventory.com/ipad_application_development.php ipad apps development

    Most of this is almost certainly due to the chance that the App Store gives designers to generate income, but the great growth resources that The apple company provide, in the form of XCode and Interface Designer, and also the Objective-C growth terminology, which iOS designers are required to use, certainly play their aspect.

  • http://customwriting.org.uk/ custom writing discount code

    As for me I prefer reading on devices too! It’s more convenient and curious indeed

  • http://mikewillcen.webstarts.com/ MarciaCarlson

    This topic has been up for debate quite a lot of times but none of the
    posts were as detailed as yours. AdminI hope to see such quality posts
    from you in the future.

  • aestesis.llc

    is there something to help manage strings, as NSString is a real pain in the ass to use..

  • ashli

    There is also Content and Switch.

    Content (Mobile CMS – http://joppar.com/mobile-app-cms ) is like WordPress for your mobile app. Once the library is installed in your mobile app, anyone from the app designer to the app marketers can drag and drop updated content like video, images, audio, text, HTML, and more right into your native iOS app without coding.

    There’s also Switch (Feature Switching – http://joppar.com/mobile-app-feature-switching). Switch is like a circuit board for your mobile app. Basically, once the Switch library is installed, you can toggle any feature in your iOS app on and off without coding. This helps you stop app crashes even when the app is live and the users hands.

blog comments powered by Disqus