When to use PhoneGap versus developing a native iOS app

After my article on How to become a professional iOS developer, a reader asked:

What’s your opinion on systems like PhoneGap? When would you use that versus going native?

This is a common question, and the answer most iOS developers give is “YOU NEED TO GO NATIVE” without really explaining why. And since they’re iOS developers, of course this is their answer. And of course I’m going to say that, too, but I hope to explain my thoughts (and some I’ve gathered from others in the mobile world) so you can decide whether PhoneGap is right for you.

On Accelerated Development

The biggest reason I hear that people want to use something like PhoneGap is to accelerate development. They have experience with HTML, CSS, and JavaScript, so they assume they’ll be able to more quickly build and ship an app on multiple platforms. And perhaps they can – Andrew Picket built a PhoneGap app, and he says it’s “great for getting an app out the door quickly…but definitely lacking compared to native.”

(We’ll look at what it’s lacking in a bit…)

But according to Kevin Munc, “dev speed advantages are a myth.”

It’s possible that both Andrew and Kevin are correct – and I’m willing to bet they are, depending on the situation. In deeper discussions I’ve had with them and other mobile developers, the consensus I hear is that you can get an app out quickly, but if you want it to really look and feel native on each platform, it’s significantly more work. In some cases this work may take you longer than developing native apps for each platform.

But if we assume that you can build an app more quickly, then what’s the associated cost? Performance.

On Performance

A PhoneGap app lacks the performance of a native app, and therefore doesn’t feel like a native app. It’s sluggish. Buttons don’t respond as quickly as native ones. Often, there are little (or big) UI glitches that make the app feel out of place on iOS. Things sometimes don’t behave as they should in a native app. If performance and the native feel aren’t important to you, that’s fine – PhoneGap may be for you. If they are, you probably want to look at doing native development.

As Grant Glas, Founder of App Press pointed out, Facebook, LinkedIn, and Bank of America all used HTML5 for their apps, and they all switched to native. Facebook’s app became twice as fast, and their iOS Product Manager said, “we’ve become aware that while we have a great mobile website, embedding HTML 5 inside an app isn’t what people expect.”

On Learning Swift or Objective-C

Honestly, one big reason developers want to build an app with PhoneGap is so they don’t have to learn Swift or Objective-C. A lot of times, they’re afraid of learning a new language. And for good reason – if you know HTML, CSS, and JavaScript, of course you want to use those skills to build apps. But we already saw the costs – and learning Objective-C really isn’t that hard, especially if you already know JavaScript (or Ruby or Java or C# or PHP or some other OO language). And if you use your HTML, CSS, and JavaScript to build a web app, you can easily put a native wrapper around it with minimal Swift/Objective-C knowledge. In fact, you can build a hybrid iOS app around your web app in less than 25 minutes with How to build a hybrid iOS app. Or you can get on the path to Swift mastery with the 5-Part Guide to Swift.

Conclusion

If you already have HTML, CSS, and JavaScript skills and want a quick prototype you plan to throw away when your app starts to gain momentum, it might make sense to use PhoneGap – but if you’re going the HTML route, I’d strongly urge you to just build a mobile web app and wrap it in a native shell, as this will perform better and remove the need for you to learn the PhoneGap platform. If you’re interested in having an app that feels native, performs well, and behaves as iOS users expect, go fully native.

Enter your email below and grab my advice, tips, and tutorials on native iOS development designed to help you become a master of iOS – and never worry about whether you’ll be stuck maintaining legacy JavaScript for the rest of your life. You’ll also get the free 5-Part Guide to Getting Started with Swift so you can start learning to build iOS apps with Swift.