This is an interesting question.
 
Few years ago, now late Steve Jobs proclaimed that HTML5 is the future of web development. Ok, this needs to be viewed in a broader context, at that point in time Apple was waging a war against Flash and HTML 5 was an unlucky winner.
 
 

Note: If this tutorial was helpful, need further clarification, something is not working or do you have a request for another Ionic post? Furthermore, if you don't like something about this blog, if something is bugging you, don't like how I'm doing stuff here, again leave me a comment below. I'm here to help you, I expect the same from you. Feel free to comment below, subscribe to my blog, mail me to dragan.gaic@gmail.com, or follow and mention me on twitter (@gajotres). Thanks and have a nice day!

PS. If you want my help, if possible (even if it takes you some time to do that), create a working example I can play with. Use Plunker for AngularJS based questions or jsFiddle for jQuery/jQuery Mobile based questions.


 
Steve Jobs quote:
 
They are lazy, Jobs says. They have all this potential to do interesting things, but they just refuse to do it. They don’t do anything with the approaches that Apple is taking, like Carbon. Apple does not support Flash because it is so buggy, he says. Whenever a Mac crashes more often than not it’s because of Flash. No one will be using Flash, he says. The world is moving to HTML5.
 
Everything happening at that time finally led to a rise of hybrid mobile applications, or applications made from HTML5 and javascript but wrapped inside a native iOS or Android mobile application. Few years later we are living in a world where hybrid apps are slowly taking over native apps. At this point, there are probably more living web developers then there are iOS/Android developers combined and a lot of them are trying to test their luck by creating a hybrid mobile app.
 
But is everything as it seems?
 

Hybrid apps:

 
 
Pro
  • Quicker development, especially if you’re a long time web developer.
  • 1 language can be used on every available platform. This, of course, requires a PhoneGap wrapper. You don’t need to learn Objective C, Java, or C# to do any development. You need only to understand the basics of the Phonegap implementation. You will need to play with above-mentioned languages a bit, but you don’t need to understand them.
  • Phonegap can offer some native capabilities like iOS native tab bar or Android native tab bar and so much more.
  • Lower budget costs and a huge community of supporters and developers.
  • A hybrid app offers many of the advantages of both approaches access to the most common device APIs, and broad device coverage while not requiring the specialized skills, bigger budgets and longer time to market that are more typical of fully native apps.
  •  
    Con
     
    • You will piss blood after some time, literally and metaphorically.
    • Mobile phones (even today’s tablets) are not fast enough to smoothly run a hybrid app, mobile JavaScript capabilities are bad at best. Android platform is a nightmare, page transitions don’t work smoothly not to mention lacking CSS/CSS3 implementation. If you think native Android 2.X and 4.X have differences take a look at Android 2.X bad JavaScript / CSS implementation. iOS fares better but still has a lacking CSS3 implementation thou much better page transitions. Let me make this short, native application will always have a better user experience and general feeling.
    • You will spend much more time fixing the app then building it. Creating an app for each and every platform is a pain in the neck. Browsers on different platforms do not uniformly support all the latest HTML features and APIs, which can make developing and testing a challenge.
    • If you don’t have a good designer, don’t even try to build an app; looks are everything.
    • If you don’t know what are you doing there’s a good chance your app will not get permission for Apple app store. Even Google Play Store will ban your app if they discover a 3rd party Phonegap PayPal plugin.
     

    Native apps:

     
     
    Pro
    • A native mobile app can produce the best user experience — fast and fluid, can give you the best access to device features, and can be discovered in the app stores.
    • Without a doubt, native apps have full access to the underlying mobile platform. Native apps are usually very fast and polished, making them great for high-performance apps or games. This is more than enough.
     
    Con
     
    • Bigger budget, you will need at least a person/s with Java and Objective-C knowledge, even C# if you want a Windows mobile app. Yes, you can learn it yourself but don’t live under the illusion you will do so in a short time. If you have never done any development, choose Objective-C (iOS is still a better platform). In other cases choose Java. Java has a syntax similar to other available languages, so it is easy to jump from C# to Java and vice-versa. Objective-C is a world of it own. It has a rather uncommon syntax.
    • It might take you a longer period of time to develop all of them and time is money. This depends on the complexity of the apps.
     

    Disclamer:

     
     
    This post was taken from my original post at Stackoverflow, question: Struggling between native and phonegap, simple app requirements and it can be found here.
     
     

    Who Am I?

    Between working as a senior Java developer in one of the largest insurance companies in the world and traveling, in my free time, I work as a professional mobile development adviser. I'm also a major jQuery Mobile supporter back at StackOverflow and a forum moderator at the official Ionic Framework forum.

    Blogs worth reading

    If you're here looking for information related to the Ionic Framework, you will also like these blogs:






    • I couldn’t agree more.

      I have no experience with native development, but have been included in a somewhat big project that makes use of jquery mobile and phonegap… to put it lightly, I’m close to start ripping my hair out.

      I appreciate the workflow, I enjoy javascript as a language, but globally this has been a pretty bad experience when it comes to my sanity, hundreds and hundreds of javascript lines will eventually start giving me a headache, DOM control isn’t for everybody – like I said, I enjoy it, but it will eventually start getting to you.

    • Nice article.
      A web app will run on (almost) all smartphones, while native apps need to be developed specifically for each operating system (and even for different versions of these), and hybrids require at least the development of the native “container” that hosts the web language.

    • jake

      Thanks for the detailed explanation of the pros and cons.

      This may be viewed as a noob question, but is it possible to initially build a hybrid app and then transition to a native app, without completely starting over?

      I am under a time crunch to get a new app deployed so I’m leaning towards doing hybrid, but ultimately if time were not an issue I would like to do it native.

      Thanks for your advice.

      • Technically and practically my answer would be no. You can’t just transition from hybrid app to native app.

        Only close thing that comes to my mind is Appcelerator Titanium which uses javascript to generate native Java and Objective-C code, but it is far from what you want and need. It generates to much unnecessary code, you would spend to much time making it work correctly.

        My advice would be get Kendo UI or Sencha Touch, depending on do you like more jQuery or Vanilla javascript. Create hybrid app using native like Androi/iOS skin. After you complete native app take some time and learn how to develop native applications. Finally use that knowledge to create second version of your app, this time a native one. This process, if done correctly, should be least problematic approach (in case you are under a time crunch).

    • We have used hybrid method for our app, and it has worked out very well both in terms of development speed and cost. To add to your article, we have written a blog post about different mobile development approaches here : http://blog.fluidui.com/html5-native-and-hybrid-choosing-the-best-approach/ . We have mentioned HTML5 method as well, and we hope that yourself and readers of this article will find it useful.

      Thanks,
      – Yuri

    • Lehi Thomas

      Great article.
      When I started reading it I was waiting to see which way you would be biased towards since most people clearly lean on way or the other and it shows it their writing, but I felt that this was a non-biased article giving the facts about each.

      Great job!