When it comes to building mobile apps, there are many options available today. However, the focus should not be on how to build a mobile app, but why. Mobile phones are personal computers that everybody has in their pocket today. Users love using them to get their tasks done, while businesses see it as a tool or a 'gateway' to sell or provide their services.
So, why are we saying that apps won't matter in the future?
Because we can't ignore the following facts:
- We've reached a saturation point for apps in terms of everyday use. Consumers are experiencing 'app fatigue.' Majority of them now use less than 20 apps per month.
- Native apps require a download, and it's no secret that users are increasingly moving away from the app stores. The majority of American consumers now download zero apps per month.
- Consequently, mobile OSs are going towards enabling web apps that run natively - Google coined Progressive Web Apps (PWAs).
- Users are spending more and more time in messaging platforms like Facebook, Whatsapp and similar and are getting used to getting the services provided through conversational UIs. A good example is WeChat in China which became a single point for all the tasks that someone needs to do - the only app store you will ever need if you are in China.
- It is very expensive for businesses to maintain 2 code bases (or more in some cases) and to keep the apps updated as new services are offered.
Messaging platforms are great and you can find more articles on our blog on why your business should have a presence there, even if you are a bank. Chatbots are excellent for use cases where the user's need can be explained verbally, but not so great for complex scenarios (e.g. complex searches) that still require having an app.
In order to provide the best experience with mobile apps they need to be built using native technologies, period. These are swift and objective-c for iOS and Java for Android, or you can even go low level with GL or use high level abstractions like Metal for gaming or creating immersive experiences with augmented reality.
But in reality, not all use cases require a native mobile app. As the mobile platform matured, devices became more powerful. Mobile OS vendors realized 3 things:
- Web is taking over the world
- Web applications are where users already spend their time
- Bringing them to the mobile world is the way to go.
There are many cross-platform frameworks that allow developers to create their apps using web technologies and to deliver them to multiple platforms. Here at SpiceFactory we're seeing two dominant approaches – Progressive Web Apps (PWAs) and native frameworks like React Native – and we're using both.
We're moving our mobile development to PWAs where it makes sense as there are still some limitations with PWAs on iOS that are stopping us from using them for every use case. Going from native to PWA to the 'invisible app' we developed an event chatbot for some of the most popular messaging platforms including Facebook Messenger and Telegram.
This article will look into the advantages of one approach over the other, however, deciding whether to build a PWA or a native app should be based on the specificities of a project and its goals, and not personal preferences.
If we look at the trends it's quite possible that browsers will be the future of mobile. This may look like we're moving backwards, but that's not the case.
We're simply more focused on providing services to users in the environment they're already in. The same argument stands for developing chatbots to offer services to consumers within the most popular channels on mobile.
Progressive Web Apps are getting to a point where you almost can't tell them apart from native apps built specifically for Android or iOS.
Compared to native apps, PWAs have a few advantages:
- Better discoverability since search engines can identify app content.
- PWAs are enhanced with service workers to work offline or on low quality networks.
- Features that were previously specific to native apps, like background sync and push notifications, are now enabled with service workers.
- Unified customer experience. All users have access to the same version of the app, regardless of the platform they're using.
- Simple updates. With no app to be updated every time you make changes to your services, a PWA can keep all your users up to date.
There is one more advantage from the user point of view -- there is no need to download and install PWAs, they can be simply added to home screen (bookmarked from the browser's page). However it will take some time for the users to realize that they can use web apps as native apps. So developers still need to provide a little bit of help to users i.e. when landing to the page, users should be instructed that the web app is available as mobile app and how to add it to their home screen. On iOS this still requires manual effort.
Another important benefit is that apps installed like this will not require a lot of storage space and the OS is handling cache of the app and might decide to clean up the space for PWAs that are not used frequently. For the user this means more space for their media storage 🏖.
The most apparent advantage of this approach for businesses is in huge savings in app development time and effort since they won't need to develop separate apps for different mobile platforms. You will only need to develop one, platform-agnostic version of your app and make it accessible to all potential users, no matter the device they're using.
PWAs used to have very limited capabilities when it comes to offering integration with an Apple device's hardware capabilities such as push notifications and Bluetooth functionality (still unavailable) or sensor features such as accelerometer, fingerprint sensor, etc.
These features were exclusive to native iOS applications. However, PWAs can now access some of the iOS device capabilities such as geolocation, sensors, camera, audio, and Apple Pay.
Still, there is a number of issues that need to be resolved including the inability to execute code while in the background, deleting data if app isn't used for several weeks, no access to private information, no access to in app payments, and no push notifications.
Probably the biggest issue is that there is no API available for developers to automate "add to home screen" flow. The users will need to do it manually and it is only available in Safari. Not the best user experience.
Compared to iOS, PWAs on Android provide much 'smoother sailing' -- user's files won't be deleted if they don't use the app, background sync and push notifications are enabled, as well as speech recognition. Plus, if a user gets a link to the PWA, it will be opened in standalone mode and not within the browser's window.
Before progressive web apps, there was no question about the value of native development. It appeals to businesses because it offers more control, but it can also be considerably more expensive.
Native apps are simply better when it comes to ensuring a consistent level of quality for UIs. Most native SDKs offer tools for testing performance, design, functionality, and more, helping raise the quality of native applications.
While the performance gap is slowly closing, native apps still run faster than PWAs because the code lives on the device it's been written on and where it's being processed.
Additionally, native code can hook into iOS features that are still unavailable for PWAs.
Unlike PWAs, native apps interact with other apps. Apart from being a timesaver for the user, this ability also centralizes their logins to a single sign-on (more or less). Ensuring that users don't have yet another account to remember is actually a pretty nice thing you can do for them.
When we look at native and progressive web apps at the moment we can conclude that there is still room for both in the app world. Which one is better for you will depend solely on their purpose and desired effect.
In the end, whichever approach you take, your ultimate goal should be to deliver an application that users can easily work with and benefit from.
PWAs are still not in their prime time, especially because there is no app store available and discoverability and installation is still hard for users. However this is becoming easier and easier and there is no reason not to develop web application today with offline first approach. We have been doing it for years and basically every web app that we make is progressive.