If It Weren’t for Apple, Hybrid App Development Would Be the Winner Over Native
Boy is it time for another round of &quot;Hybrid Apps, Wave of the Future!&quot;?<p>Disclaimer: I&#x27;ve been writing and shipping iOS apps since shortly after the iOS SDK existed, and writing and shipping Android apps for the last couple of years. My opinions may be biased.<p>First, a couple of observations to get out of the way that may support author&#x27;s thesis, but IMO not really:<p>- A good portion of existing native apps should not be apps at all. These are apps for services that are infrequently used, and should have been websites the entire time. Note that I&#x27;m saying they shouldn&#x27;t be apps at all - native or hybrid - they should simply be websites. Because of the friction of installation, shipping an app for something users will only very occasionally use, is pointless.<p>- If your apps are strictly by-the-numbers CRUD apps <i>without background activity</i>, then a hybrid approach is likely the best bet.<p>Now that <i>that&#x27;s</i> out of the way...<p>&gt; <i>&quot;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.&quot;</i><p>This assumes the lack of competitors who <i>are</i> willing to put in the effort to make a performant app. It should be noted that janky, slow UIs that are &quot;good enough&quot; were the norm before the iPhone came around and raised everyone&#x27;s expectations.<p>If you&#x27;re building an app for Comcast or your local utility company - where competition is definitionally non-existent, then yes, it doesn&#x27;t really matter as long as the hybrid version is fast enough.<p>For markets with competition, this simply produces a large window for someone to eat your lunch.<p>&gt; <i>&quot;You get to utilize your existing JS, HTML, and CSS skillset to develop a single codebase that runs on both iOS and Android.&quot;</i><p>This seems user-hostile. For all of Apple&#x27;s warts, one of the great things they did around the iPhone is to rebalance consumer software development <i>away from developer convenience</i> and <i>towards user convenience</i>.<p>The 90s and early 00s was defined by software that was difficult to use, engineered to be just &quot;good enough&quot;, and largely the process was geared around developer ease rather than user satisfaction.<p>Yes, as devs we want all kinds of shortcuts to make our lives easier - and by all means we should pursue them - but the market in many places no longer tolerates the UX compromises of certain shortcuts, and consumers have come to expect apps to respect their platform&#x27;s UX standards and have a high performance bar.<p>Case in point: Java apps also allowed devs to ship multi-platform from a single codebase, anybody here actually enjoy using those things? Practically nobody does that any more.<p>&gt; <i>&quot;Viewing changes on your device during development is nearly instantaneous.&quot;</i><p>This is legitimately a great feature of web dev vs. native. There is a lot of work being done on iOS and Android to shorten the preview cycle - but it&#x27;s nowhere near web-quick (and is unlikely to ever be).<p>But again, this is a developer convenience, not a user convenience, and like all developer conveniences, it should only be pursued without harm to user experience.<p>&gt; <i>&quot;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.&quot;</i><p>This is the part I wanted to touch on most: <i>DO NOT DO THIS</i>. This is <i>explicitly against App Store TOS and can&#x2F;will get your app rejected or pulled without notice</i>.<p>You <i>cannot</i> ship features to the App Store without a binary update. This is also not a hypothetical - Apple has recently started ratcheting up enforcement on apps that significantly modify functionality while bypassing the review process.<p>If you want to build a hybrid app despite my objections, by all means, but <i>do not use code push features and especially do not use it to bypass Apple review processes</i>. This will end poorly for you.