Native apps or web apps?

Saturday, February 4, 2023 2:22 PM

Which are better, Native apps or web apps?

This is like asking, which is better, a dump truck or a pickup truck. Note for biasing: MCe is a Web app. But we have dozens of other apps that are so called 'native' apps that we use for many purposes, and we plan more of both types. We think each have their benefits and place, and neither is 'better' than the other.

Feature

Native Apps

Web Apps

Comment

Which runs faster?

Neither! In THEORY given infinite budget, Native Apps run faster. But in practice, neither do. This is because most of the very time intensive processes in the browser are already native - done by the browser, and the browsers already optimize the JavaScript code (just in time compiling techniques that have been around for 20 years.) So yes … it is POSSIBLE to write a Native app that runs faster than web apps, but sadly most native apps run slower than web apps because of these factors.

Now, it is also possible to write web apps poorly, so it is hard to say which will be slower ... an incompetent Web developer or a competent Native developer. But it is equally fair to say that, whichever side you are on, if you are incompetent, the competent developer on the other side will write faster code.

Basic GPS and camera resources

Yes, silently

Yes, with user permission

On a native app, there is no need to bother or notify the user before accessing these resources. Browser Apps on the other hand, can access these only if the user permits them to.

This means, if you are DEVELOPER, you think Native is better, but if you are a user - you might legitimately say that that means all Native apps are a much higher security risk unless you can and do lock it down in the OS.

Detailed resources for GPS and Camera?

Yes, silently

While Web apps can access SOME GPS and Camera features, they can't access all of them. It is amazing how much you can do with the Web version, but if a Native app choses to take advantage of these, then the Native app will have more power and flexibility. For example, a Native app can track a user's location much more easily than a web app can. So if you want to be able to have software track your location all the time, the Native App is the way to go.

Needs internet

Yes/No

Yes/No

There is no difference here. Well, at least in theory. To be fair, most web developers don't know how to run offline properly - but that is because of the skill set of the developers, not the platform. MCe has been running offline for more than a decade with no issues other than the exact same issues a native app would have. Developers in both need to be aware they CAN do this, and then they have to think about the data they are grabbing, this second is where most developers who know technically how to do it end up failing miserably.

More secure

A native app can much more easily track your location without your permission than a web app, but native apps, because of the app stores, have a higher probability of being properly vetted by a 3rd party.

Web apps on average more than twice as safe as Java or .NET native applications: infoq study. While they didn't check other languages in this study, you can read the details to see how it would apply to other native apps - and users usually are unaware how they were programmed in any event. They found that, since JavaScript bugs tend to be fixed many times more quickly (easier to deploy) The native applications they tested have nearly twice as many high-severity issues as compared to Javascript, aka web applications.

Which are easier to develop?

Neither. Both have their benefits and disadvantages. In practical terms - the one you know how to program is the 'easier' one to develop in.

Cross platform UI

Again, it depends on how the developers go about it. You can do cross platform (Windows, iOS, Mac, Linux, Android) in either, and depending on some of your choices it will either be easy or hard, powerful or wimpy.

Install and Upgrades

Best

This one gives Web apps a clear win. Upgrades can be a nightmare with native apps on platforms like iOS and Android, but are relatively easy on Windows, Mac and Linux. Upgrades of iOS and Android are where the nightmares start for developers who don't think ahead. You have to plan for old software (possibly years old) running against a new server, and newer software running against old server (while you are waiting, for example, for Google or Apple to approve your upgrade.) Many developers really mess this up. They get their 1st release out nicely, but then have horrible problems when they upgrade the server version, or Apple updates before Google or the other way around. It is also much easier to get a web app to 'self upgrade'.

Cost of development

I seen many say that the cost of a good Native app is more expensive than a Web app, but if you developing a really GOOD web app - you may find it is so close in cost to a Native app that the cost of development is the same. But remember upgrades … if you have a data intense app, doing native right can be a lot harder and more expensive than web. But in practical terms - it isn't that it costs more, it is that the upgrades are smoother and more reliable on the Web typically. Obviously if you need a feature that you can only get on Native - then Native is by definition cheaper - because Web is impossible/infinite (well near infinite, you COULD write your own browser.)

So which is better?

Ignore all the hype and boil it down to this: If you need the very small number of things that a Native app can do that a Web app cannot … you need a Native app. But if you aren't using those very small number of features - most of the time you will be better off developing a web app - and your customers will be better off too.