We often meet with businesses and entrepreneurs who are looking to create the next big app. Their initial idea is to create a traditional app, to be downloaded and installed onto a mobile device. But when we start to walk through their requirements, we often discover that their decision to go the mobile app route is unfeasible.
The problem is that apps can be built in many different ways, targeting many different platforms. Identifying the right type of app for your project is critical for the success of the project – both in terms of cost and user acceptance. So, what are the options, and when should you choose one over the other? Let's find out.
The different types of apps
When you hear the word app, you might think we are referring to the traditional mobile app, such as the Facebook app on your iPhone. But the word "app" is short for application, and applications come in many different forms. Each has pros and cons, and so it's important to identify the right option for your project.
A mobile app is typically made available via app directories such as Apple's iTunes, Google Play and Windows Store. These apps offer a high level of integration with handheld device features, such as motion sensors, GPS, messaging, audio and video input, contact directories and even augmented reality.
Apps downloaded from these app directories are typically not available for desktops, and so the developers usually offer an alternative product for desktop users, which we will discuss later.
Like with all apps, mobile apps can be created in many different ways. However, the key categories are defined as Native and Hybrid. Native apps offer the best integration and performance, as they are built in the native language of the device. Hybrid apps, on the other hand, are built using an alternative language or framework, meaning the app can target multiple platforms (iOS and Android) using the same source code. Which one you choose would depend on your budget and the number of platforms you plan on targeting.
A web app can be built in hundreds, if not thousands of different languages and frameworks. All you need to host a web app is a server that is configured to handle incoming requests from users over the internet. The same web app can be accessed on a Mac, using Safari, while a different user can access it on a Windows machine via Chrome.
To give you an idea of the differences between a web and mobile app, here's an example:
Web app: https://www.instagram.com/
Instagram is an app that is traditionally used on a mobile device. However, there's also a web app available, enabling users to access their Instagram account via their favourite web browser. The web app has less functionality than its mobile counterpart, but some people will no doubt find it useful.
A third type of app that our clients often overlook, or are not aware of, is a desktop app. A desktop app is installed on a desktop computer, and they have been around the longest. Desktop or laptop owners use them all the time, and they are essentially programs on your machine that you access from either the start menu or launchpad. These apps may come pre-installed on your computer, or you may download or install them off a CD.
You can also think of this as a mobile app that is installed onto a desktop machine. Because they are installed on different devices, they are similar in many ways, but also crucially different.
When to choose one over the other
Now hat we've covered the definition of each of the different types of apps, we can delve into when to use which.
As a rule of thumb, I like to think of it this way:
- If you need your application to tap into the core components (e.g. camera, motion sensor, GPS, biometric security etc.) of a mobile or handheld device, build a mobile app.
- If you need to utilise a considerable amount of processing power or desktop computer components, build a desktop app.
- For pretty much all other scenarios, a web app will arguably be your best option.
My reasoning behind this is as follows: for various reasons, the cost of mobile app development is still much greater than that of web development. In addition, the number of users who can access your app is greatly increased if it is in a web-based form. Lastly, releasing updates is far easier with a web app, as both mobile and desktop apps need to be packaged up, and then downloaded and installed by the user.
Progressive web apps – the new form of web app
The new kid on the block is the Progressive Web App, or PWA, and you can think of PWAs as being the next generation of web apps. They are built, packaged, released and hosted in a similar way to web apps, but they employ some of the newer technological features that modern web browsers support.
By leveraging the latest browser features, PWAs reduce the advantages of mobile and desktop apps over web apps. Probably the most advantageous new feature is the web-worker. Although not fully supported by all browsers yet, the web-worker opens a host of new possibilities for web apps.
With the web-worker, PWAs can operate when no internet connection is available. This is something that both mobile and desktop apps support natively. Standard web apps need to connect with a server over the internet, whereas PWAs can be cached on a user's mobile device or desktop and still operate, although with limited functionality.
The ability to work offline means that PWAs look, feel and behave more like mobile apps. Yet, they retain all the advantages of web apps. For this reason, they are becoming increasingly popular in modern application development, and we feel they are often a necessary new feature.
Web applications or progressive web apps are, in our opinion, still the most versatile and cost-effective additions to most projects that come our way. However, if your requirements dictate the use of native hardware components or enhanced processing power, a mobile or desktop app may be the way to go.
Of course, it all comes down to the specific needs of your project. As always in software development, it is not a case of "one size fits all". So, if you have an idea for an app, make sure that you spend time researching and considering what type of app will be most practical for your purposes.