What the heck are all these different types of apps?
That's the question I asked myself when researching a tech-stack for my first mobile app. The following is what I learned and maybe it will save you a trip down the rabbit hole as well. ;)
We've been using web apps for a while now, accessing them through a web browser (Chrome, Firefox, Safari, etc).
Okay, makes sense.
So what is the difference between a web app and a website??
Web apps are more interactive, allowing a users to interact with data, while websites are informational, displaying data. All web applications are websites, but not all websites are web applications. As you may already be thinking, this distinction can vary based on who you ask. There is no clear line of how much interaction qualifies a website as a web app.
For example, is www.google.com a website or a web app?
The 'right' answer doesn't matter. What matters is that you're thinking about the user experience and desired client results!
Why build a web app?
Web apps are generally written in JavaScript, CSS, and HTML - pretty well known languages. This means shorter development time to get your app into the internet! It also makes it easy to maintain, as there is a single code base.
In the same hand, web apps do not need approval by an app store, a process which can sometimes take weeks and multiple refactors due to rejection. Deploying a web app also avoids those app store developer fees – $25 at Google Play, $99 at Apple App. (I'll talk about the pros in Native Apps)
Because web apps are accessed through a browser, they do not need to be downloaded like mobile apps do. This can be a large appeal to some users. This does mean they require internet access.
Why build a Native App?
Native apps are specifically built for one operating system or device.
Like a tailored suit, it is not going to fit everyone. While that's pretty restricting, there are advantages.
You can release it on an app store! Stores have the potential for a huge draw, if that's what your after. There are the 2 major players Google Play and Apple App, but there are actually a lot more app stores you can release to!
Building natively allows the application to use the device specific technology such as an accelerometer, camera, and more. A developer can incorporate these features into an app.
Native apps can also be built to work without internet connectivity. Spotify for example - once you download the app, you can save tunes to listen to later without a connection. Most modern apps have some sort of reliance on wifi or cell signal, but its an option!
Why build a Hybrid App?
Hybrid apps combine some of the best features of web and native apps.
They are cost effective and fast to deploy - quicker to reserve spot in an app store. Often seen as a wrapper for an existing web page - this saves money in development as you can use a pre-existing or single cross-platform codebase. They can use some native hardware.
Whats the right choice?
Think of what you want your app to accomplish before building!
The only wrong choice is not considering this before beginning to code.
Does your app need hardware specific tools? If not, then maybe you are better off building a web or hybrid app. Is this app aimed at being used everyday? Then maybe DO build a native app so you can take advantage of push notifications.
As our technology ever increases, these definitions become more and more blurred.
React Native for example uses JavaScript to bridge code to native widgets. It is a cross-platform framework that fits in somewhere between a Hybrid and Native app. New on the scene is Flutter written in Dart, and claims to compile all the way down to native code. Is Flutter native then? Who makes the rules?
Top comments (1)
build.phonegap.com/ along the lines of dealing with portability, this seems interesting. i haven't used it yet but i like the idea.