
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:
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:
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:
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.