When do you need a mobile app?

The most common request we get as app developers is: "I need a mobile app to manage groceries, recipes, check stocks, do online shopping or provide information about my business." But does it really need to be a mobile app? It depends. Native mobile apps can offer a better user experience than a web application in the browser. But it does not come without disadvantages.

Disadvantages of native mobile apps

Consumers need to perform several actions before they receive value from your app. First they need to learn about your app through your website or another marketing channel. It almost never happens that your app is first discovered through the app store unless your app got featured by Apple or Google. Then users need to find the app, accept permissions and download it if the device has sufficient storage left. Then the user can open the app, register or authenticate and see what it’s all about. Compare this to a web page could provide value to the consumer immediately. Even after the app has been installed, it is always at risk of being deleted in favour of another app when the remaining storage is low on the device. Information heavy apps or apps that do not require special features listed below are thus better suited with a mobile optimised website. This disadvantage is most relevant for consumer facing apps and less for apps that your business would use internally.

The development and maintenance costs of a mobile app are significantly higher than those of web applications. Firstly because native mobile apps often duplicate or slightly extend existing functionality on the company's web page, which calls for double work. Secondly because although web applications can be built once and run on all of your devices, this is not the case for native mobile apps. There are two dominant platforms on the market: Android and iOS. The tools to build native apps for them differ significantly. So much that most companies have different teams for different platforms with little communication between them. The end result is often a maintenance nightmare in which a poorly optimised web page shows a big banner to try to lure you into downloading the app. After opening the app you then find out that the app no longer works on at least one of the platforms. There are cross-platforms development tools such as Xamarin, Phonegap and React Native, but none are without compromises. A future blog post will go into more detail about them.

The iteration speed of native mobile apps is much slower than with web applications and the cost of maintaining multiple versions of them much higher. A modern vision on software development is to build the most essential pieces of the software first. Then, after learning from user feedback what works and what does not, you extend the functionality through quick and cheap iterations. Without doing anything, your users get instant access to new versions of your web application multiple times per day. To update native mobile apps, on the other hand, you need to submit a new version to the app store. Especially with Apple, this can take a few days (it used to take several weeks or even months). Users then need to explicitly download megabytes of data to get the new app. This is acceptable if the new version contains many new features, but not for bug fixes or small improvements. Users might not update their apps immediately, so servers also need to account for the possibility that multiple versions of the apps access their data with their own subtle differences. This again increases maintenance costs and the lifetime of a bug which was present in a certain version of your app.

So it seems like there are a lot of factors to take into account. Let’s look at the advantages.

Advantages of native mobile apps

Native mobile apps still - if built properly - provide the best possible user experience compared to mobile web apps. Communication over a network is always slow in comparison to raw processing speed. For native mobile apps, the layout and the functionality is downloaded at install time with no additional downloads during use of the app. They can store data on the device, so only new data needs to be fetched from the server.

Their performance is still superior to web applications that run in the browser. Computations and network operations can run in the background without making animations choppy. The code can run more efficiently because it is closer to the bare metal of the device which also improves battery lifetime.

If you want your app to look like a native Android or iOS application, native apps achieve this instantly. This feels like stating the obvious, but a lot of development teams have spent a lot of time and money to make web applications look and feel exactly like native mobile applications using cross-platform web development tools. The result is often not quite optimal due to the gap in performance and capabilities between the browser and native mobile apps. Whereas native mobile development tools consistently apply best practices for their platform, cross platform web apps made to feel like native apps try to optimise for one platform and look awkward on the other platform or on a desktop. Often the results are lower average app ratings and a diminished consumer satisfaction.

Native applications are in a better position to use the latest capabilities, social contacts, hardware, payment and notification options of the device. An additional layer of complexity is needed to extend the capabilities of mobile web browsers to be able to do the things native mobile apps can do.

Finally, having an app icon cluttering your list of apps can be a problem for an app that is rarely used, but it is a blessing for apps that you use often without having to type the address of the web page, search it through Google or go through your bookmarks.

So when do you need a mobile app, now and in the future?

Summarising what we said above. If the digital product is heavy in static content and has no specific reason mentioned above to be a native mobile application, I would recommend going for a mobile optimised web application. If your app needs high performance hardware (e.g. games), the best user experience (regardless of the costs) or significant offline use, you should build a native mobile app. For internal business application, many of the disadvantages listed above can be avoided by 1. building only for one platform and equipping your workforce with supported devices and 2. by using a mobile device management solution to force updates as soon as they are released. When you need to support multiple platforms and a the most optimal native look and feel is not critical, you could use a multi-platform solution such as Xamarin or React Native. Even with these, costs for multiple platforms will be higher than for a single platform. If you need a mobile experience with a lot of static content and a part that needs to be native, you can build a native app in which web views render the static content to avoid duplication of content.

Currently the web browser cannot yet compete in performance, hardware access and ease of use with native mobile apps. However, they are improving rapidly. More browsers are starting to close the performance gap by supporting native code to run in the browser, allowing background operations, enabling offline capabilities through local storage and accessing native hardware (USB, WebGL, ...). Progressive Web Apps also introduced app icons for web applications that can be downloaded for offline access. In the future we expect the web platform to catch up with native mobile apps and allow users to access your web page through the browser, evaluate its value, make the web app available offline and store it between their other apps with little limits in hardware access and performance problems.