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
(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.
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