A recent project that required an app for tablets and phones ran in to the eternal debate of whether it should be native, web, or progressive.
Having researched the options here is a quick high-level overview of the choices with their benefits and disadvantages.
Check the end of the post to see what decision I ended up making and why.
Native applications are typically written in a specific language depending on the platform targeted, e.g. Swift, Java, Objective-C, etc. They are submitted to the app store for approval before being available for users to install.
The biggest advantage to developing a native application is being able to craft and optimise a dedicated user experience based on the chosen platform.
Native application’s ability to use the device’s functionality allows for a much richer application from both the user and developer’s perspective.
Unlike native apps which are installed on the device, web apps are essentially websites and are accessed through the browser. They are usually written in the HTML5 stack (HTML, CSS, JS) using a library such as React.
A Progressive Web App (PWA) is similar to a web app in that it is not installed through an app store and can be accessed through the browser. The difference comes in the ability to add the application to the home screen like native apps, have marginal offline support, and use a subset of the device’s functionality.
As for the project mentioned above, I eventually decided on a web app due having a relatively short amount of time to develop the solution and needing cross-platform support across iOS, Android, and desktop. The application as it stands does not require the use of features such as push notifications; however, should this change it is not difficult to switch over to being a PWA.