If It Weren’t for Apple, Hybrid App Development Would Be the Winner Over Native
&gt;&gt; Rizer is a Hybrid app that uses Apache Cordova and its plethora of native plugins<p>Plethora of native plugins?  Why is it a good thing for my app to have a plethora of dependencies on obscure plugins that someone else has to maintain and update otherwise I am completely blocked from developing?  Nevermind the fact that I have to learn all the intricacies of said obscure plugins?  Just to be able to do what I can already do more efficiently in native?<p>&gt;&gt; Make No Mistake, Going Hybrid Is The Right Choice For The Vast Majority Of Apps<p>Why are you leading with this after explaining the app you built?  Show me why it&#x27;s better, don&#x27;t just act like an authority and tell me so.  And you don&#x27;t appear to be an authority on mobile app development, it appears any experience or credentials you have are in javascript.  You made a single mobile app with hybrid and are now ready to declare that going hybrid is the right choice for almost everyone?<p>&gt;&gt; A Hybrid version of an app will never be as fast as a native version of the same app, but it doesn’t matter as long as the Hybrid version is fast enough.<p>Thanks, and you&#x27;re right!  Native apps are much faster and always will be much faster than the apps you seem to want to make.  How one can determine if their hybrid app will be &quot;fast enough&quot; ahead of time is as clear as mud.  For apps that do significant things and need to do them quickly, I suspect many hybrid apps won&#x27;t be &quot;fast enough&quot; and the user will be able to tell that they are on a website.  But you&#x27;ll have to just engineer it and find out later if the framework has an unconscionable defects or limitations.  Happy coding (oh and try not to use jQuery)!<p>&gt;&gt; A resource-hungry 3D game or similar does not fit into my definition of “app”<p>Games are apps too, but don&#x27;t worry, there is a real cross-platform technology out there called Unity for you.  You won&#x27;t be able to use JS with it though I am afraid.<p>&gt;&gt; In these cases a native app is almost certainly your best option<p>Almost certainly?  Certainly.<p>&gt;&gt; You get to utilize your existing JS, HTML, and CSS skillset<p>You are assuming that someone who wants to make a mobile app has an HTML, CSS, and JS skillset.  Why are you assuming this?  Are you writing this because you have a certain set of biases and preferences for web technologies or because you actually think hybrid is the best way?  One must wonder.<p>&gt;&gt; single codebase<p>Single codebase isn&#x27;t a selling point if your app is slow and full of workarounds piled on top of workarounds that probably would have been solved with a single line of native code.<p>&gt;&gt; There are less than 10 times throughout my project that I needed to branch the code based on the platform the app was running on<p>This is utterly embarrassing, and very telling to me that you think it is a selling point.  The entire point of doing a hybrid app is to NOT be doing this.  &quot;I only had to do it 9 times!!&quot; should not encourage anyone and truthfully could only be seen as encouraging by someone who was dead set on using web skills in a mobile arena to begin with and was determined to make any justifications to do so.<p>&gt;&gt; Viewing changes on your device during development is nearly instantaneous.<p>Great.  So are native apps.  You click the little play button in the IDE.  Nearly instantaneous.  Again, it&#x27;s a mystery why you think this is a win for hybrid.<p>&gt;&gt; You can push updated JS, CSS, HTML, fonts, and images directly to all of your users without needing to recompile the app’s binary and getting App Store approval.<p>APK upload for the Play Store is almost immediate.  Yes, iOS has a significant review time which has been whittled down to about 2 days.  I don&#x27;t think this is really paramount to anyone.  You forgot to  note though, a downside of doing Hybrid is that Apple rejected your app 7 times which wasted far more time than you would have gained on any of this other stuff.<p>&gt;&gt; Choosing between these two WebViews sucks.<p>Not Apple&#x27;s fault.  This was your choice.<p>&gt;&gt; Thanks to some fantastic work from the Ionic team, some masochistic developers (myself included) are utilizing WKWebView in their Hybrid apps. I will be the first to say that when WKWebvView works, it really works.<p>Sorry, reading between the lines here -- are you encouraging people to use things that you KNOW don&#x27;t work?  If so, why?<p>&gt;&gt; Inability to access files that don’t exist in the app’s root “www” folder.<p>Not Apple&#x27;s fault, your fault for choosing Cordova.<p>&gt;&gt; Numerous CORS (Cross-Origin Resource Sharing) issues, including being unable to extract image data from a canvas that was drawn using a local image.<p>Not Apple&#x27;s fault, your fault for choosing Cordova.<p>&gt;&gt; Unpredictable vertical scrolling behavior, and in my experience, completely broken horizontal scrolling.<p>Not Apple&#x27;s fault, your fault for choosing Cordova.<p>&gt;&gt; No programmatic control over showing and hiding the keyboard<p>Not Apple&#x27;s fault, your fault for choosing Cordova.<p>&gt;&gt; App-breaking conflicts with stable versions of the Cordova SplashScreen plugin<p>Not Apple&#x27;s fault, your fault for choosing Cordova.<p>&gt;&gt; App-breaking conflicts with stable versions of the Cordova In-App Browser plugin<p>Not Apple&#x27;s fault, your fault for choosing Cordova.<p>&gt;&gt; Without a doubt, creating Rizer was a longer and more frustrating experience than I expected it be… thanks to Apple.<p>Not Apple&#x27;s fault, your fault for choosing Cordova.<p>&gt;&gt; In my experience, all of the potential show-stopping issues caused by going with the Hybrid approach have workarounds.<p>Oh, awesome!  Just what everyone was looking for.  How to build an app with workaround piled on top of workaround piled on top of a hack piled on top of a workaround piled into a shitty webview.<p>&gt;&gt; They are frustrating to discover and implement, but they do work.<p>Here we go again where you subtly or not so subtly admit the thing which you are advocating for actually sucks (and is the most hated technology on stack overflow).<p>&gt;&gt; It will absolutely take you longer to develop a Hybrid app than it should<p>Correct!<p>&gt;&gt; will feel just as fast as to your users<p>lel