Ask LH: Should I Use PhoneGap To Build Mobile Apps?

Dear Lifehacker, I am looking at writing an iPhone app mostly just for fun. I am currently a web developer and so I was looking at using PhoneGap to speed up the job, since I know how to develop websites and this would also save me the hassle of having to learn C (or a related language). The added advantage to PhoneGap is I could also release the app on multiple platforms like Android.

The app would mostly just be API calls to Foursquare. Does it make sense to use PhoneGap (or another web-based phone programming languages) or would it be smarter to start with C or a similar language? In which cases should you use each? Thanks, Curious Coder

Picture: PhoneGap

Dear CC,

The short answer: yes, using PhoneGap is fine, and will make it easy to build an app without needing to learn additional languages. PhoneGap (owned by Adobe since 2011) lets you develop apps using HTML5, CSS and JavaScript and port those apps to iOS, Android, BlackBerry, Windows Phone and other platforms, which makes it a solid choice if you already know web development. However, there are a few caveats you might want to consider:

  • PhoneGap is only free if you make your app's source code available via GitHub, or if you only work on a single app. If you want to build more than one, you'll need to pay a monthly fee to access the service.
  • Apple's attitude to apps developed using frameworks has varied over time. PhoneGap is an approved framework, which means that apps built using it won't be rejected purely because they were developed that way (which hasn't always been the case in the past). It seems unlikely that Apple will revoke this support, but it's a possibility. For apps built as a hobby, this doesn't matter, but if app development becomes your main job, you might want to consider a different approach.
  • While you can deploy apps on multiple platforms, be aware that they won't perform like native apps in every environment. For example, you won't be able to easily use the Back key in an Android app and then port that functionality into iOS without additional effort. It's usually obvious when an app has been ported from one platform to another without modification, and it can lead to less satisfied users.
  • This leads to your question about when to use a framework and when to use a native language. For simple content presentation apps, a framework like PhoneGap will often suffice and can save you a lot of hassle. If you want to maximise performance or take deep advantage of specific platform features, actually writing code will get better results. I could write a Lifehacker viewing app in PhoneGap, but if I wanted to write a content management system for our site, I'd need a real programming language, I suspect.

If using a framework gives you a taste for development, chances are you'll want to dive in and actually learn to program with a full-blown language. But a framework like PhoneGap is a great way to dip your feet in the water. Good luck and happy programming!

Cheers Lifehacker

Got your own question you want to put to Lifehacker? Send it using our contact tab on the right.


Comments

    My experience with apps on iOS written using cross platform tools like PhoneGap is they work, but they just don't feel quite right… though some users might not notice the difference. One recent example is the free MoneySmart TrackMySPEND app by ASIC. Download it and see what you think - it works, but it doesn't feel like a native app.

    There's a good reason that Facebook ditched HTML for their app, the end result is sub par.
    Reasons to avoid Phone Gap: http://blog.mdominick.com/?p=144

      Facebook somehow couldn't pull it off. LinkedIn has a very decent app with 95% HTML5 code and a few native hooks. Given that Facebook is 10 times bigger than LinkedIn, I'm surprised they threw their hands in the air and went all native. I guess that could be the answer: they can afford the extra effort, so they go for the extra performance, even if it's probably not really needed for their platform.

        LinkedIn's app is atrocious. Its slow, buggy, does not clear notifications properly, displays old messages as unread when they have been unread. It is a terrible user experience - a shining example of why you should avoid HTML apps. Facebook's HTML app was far better than LinkedIn's but still suffered notification issues.

    I'm confused - Is this an ad?

      how can u be confused? There's no feature list and ad's usually show as "sponsored". The editor here has clearly given some considerations to help the reader make an informed decision.

    Those decrying PhoneGap are responding to a question that wasn't asked ("Should I use PhoneGap to write a top-notch commercial app?"). The answer to that question may well be no.

    The OP actually asked something more like "should I (a web developer) use PhoneGap to write an app for fun?". The answer to that could well be yes. It depends how long you want to take over it, to what extent you enjoy learning for its own sake, and whether or not you want to build on this experience and later create more apps.

    On iOS, the best apps are nearly all native. That means learning Objective-C and Apple's various iOS Frameworks, which is no small task. It will take a substantial investment of time, some months in all probability. It might be worth it if you would find the process interesting or rewarding in some way, or if you want to go on to focus more on building iOS apps at a later stage.

    PhoneGap, on the other hand, will be quicker for you to develop in, can produce perfectly serviceable, if not stellar, apps, and, as you suggest, will work across platforms. However, you need to be willing to either pay a monthly fee, or put your source code up on a public repo, which might be a disincentive.

    I just finished up at a graduate job working on PhoneGap/NimbleKit apps for over a year. Believe me when I say the management's insistence on using these frameworks (whole team were web-devs aside from me, Obj-C developer) was a major reason they've gone bust and made us all redundant. The industry in general considers HTML 5/hybrid apps like releasing a poorly slapped together prototype (LinkedIn is an exception using some clever trickery and delayed presentation to hide the gaps). The performance is abysmal, and the sheer amount of time you waste trying to hammer a round web-view peg into a round native-shaped hole could've been spent making apps the right way. Don't get me wrong, I think cross-platform solutions could be the future, I mean look at how many things we now do in our browser... but the platforms themselves are nowhere near ready for that paradigm shift just yet.

    Firstly a disclaimer, I've started nativecss.com which addresses some of the comments above.

    People are asking how can I use web styling and keep native UI feel? Basically phonegaps app feel flat and jerky, nativeCSS uses iOS and Android native widgets and just uses CSS to style stuff.

    Someone correct me if I'm wrong, but it is my impression that while PhoneGap Build (service to compile PhoneGap apps online) is free for one private project but fee-based for further non-open source projects, one can download the PhoneGap SDK for all of the platforms and compile on their own system at no cost, infinitely.

    PhoneGap is great, but their tooling sucks. Try out Appgyver SteroidsToolbelt, there is also a good article about this here http://www.infoworld.com/d/application-development/appgyver-aims-make-phonegap-developers-more-effective-using-steroids-220102

Join the discussion!

Trending Stories Right Now