Native vs Web Development
How are these 2 things related? Some may think these are 2 completely different kinds of development that use different tools and different languages. But if you've spent any time doing some web dev, you will eventually realize that you can actually build Native mobile apps with the same skillset you already have: JS, HTML, and CSS!
So is it just 2 different ways of making an app? ๐ค
Well, kind of. Let's have a closer look at each and point out the key differences.
A native app can be acquired from an app store and fully downloaded to your device where it "lives" and can run without internet access. They are built for a specific platform, i.e. Android or iOS, and are optimized to use the device's hardware such as GPS, camera, WiFi, and even handle operating system events such as notifications or incoming phone calls.
A web app essentially runs like a website inside the device's web browser. It cannot be acquired from an app store. They are acquired by visiting the website directly and having an option to "install" to your device's home screen. You're not actually installing the app on your device; it's more like you are saving a shortcut link to that website.
Although, modern mobile web browsers, such as Chrome, are capable of accessing a lot of the device's hardware, however, not all of them will work and the ones that do are not guaranteed to work perfectly. However, for many applications this is fine. Many applications don't require the use of hardware at all.
So which is better? Let's examine the pros and cons of each:
Native app pros:
Can be acquired from an app store. This makes it easy for the user to manage updates and keep track of in-app purchases and progress even if they change devices.
Can be expected to run smoothly on the device they're built for and can use all the device's hardware smoothly.
Since they are running directly on the device, they tend to be faster.
Native app cons:
Each platform requires its own build. As a developer that means it will take almost twice long to reach both Android iOS, and you will need to be comfortable with a few more languages.
Although I agree with the guidelines and requirements the app stores impose on developers inorder to be able to list their app, if could sometimes prove difficult to meet all the requirements.
Your end user must first commit to download an app before trying it out. Therefore, from a marketing and sales point of view, it's much harder to get your native apps on devices than web apps.
Web app pros:
I write the code once, make sure it's responsive and bam! Let it load in any browser on any device. Desktop too! It's also much easier to maintain 1 code base.
I don't have to rely on the marketing of the app or even getting into the app store. I can find many other channels to distribute my web app.
All my updates are instant. I know that no user could be using an older version.
Web app cons:
They don't work offline.
They will usually take a little longer to load.
Since they're on the open we and avoid the requirements of an app store, they may lack quality and security.
Wouldn't it be nice to have the best of both worlds? Something like a hybrid app. A web app, that if I choose to download load and run it natively I can. It turns out there is such thing! They're called Progressive Web Apps (PWAs). Subscribe and stay tuned for that article.