The answer is that Apps are now a lot more versatile and can be used as a value add to a web service. Think of this in the context of your favourite (or least favourite) food ordering service. The App is just another entry point to the service. You can access it via web desktop, mobile, wearable and smart home devices. This is where the value exists. Extending the service and its accessibility. The core of all of these services is always web based.
So, if you're thinking of building an App, focus on serving the customers rather than simply building an app. We always advise building web first and validating through mobile responsive. That way time and money are not unnecessarily invested in building to the complexity of a mobile app. For more helpful information, we have previously outlined the top 10 tips for successful app development. So, for this article, we'll assume that the idea has been validated and it's essential for the App to be built.
The intention is to give a broad overview of the landscape to ensure you are aware of the different frameworks available. To begin, there are 2 clear groups that the frameworks fall within.
These are the frameworks developed by Apple and Google for their operating systems. These are best used if there is not a linking web service and you know that the mobile app is only going to be used on 1 of the 2 platforms. The consequence of a native app is that it will need to be completely re-written to share via the other platform. For example an iOS app and an Android app will have separate codebases. The two main native frameworks are:
XCode and Swift UI
This is the latest offering from Apple. Xcode is the integrated development environment provided by Apple. This is best utilised if you are creating an App that is only to be consumed within the Apple ecosystem. It also allows you to develop across Apple's device ecosystem. If you know you're just targeting Apple users you can create an app for Apple TV, WatchOS, iOS, Ipad OS and Apple's desktop operating system OSX.
Similarly, this is Google's multi-platform development offering within their ecosystem. These frameworks are predominantly Java-based. It is good for game development and creating seamless services that work between the different Google operating systems.
These frameworks are good within their own contexts and provide native functionality that is otherwise unavailable in hybrid frameworks. Keeping in mind, you will need to have the resources to develop and maintain multiple codebases. Also, both Google and Apple are constantly lowering the barrier to entry so you can make something with less and less development experience. However you will need to learn their individual frameworks.
The Hybrid frameworks were born from the need to develop once and deploy to both iOS and Android. These frameworks take a web-first approach that wraps the web user interface into a native package. The end users do not know the difference when downloading from the App stores. Traditionally Hybrid frameworks were a little slower, didn't work well offline and spent a lot of time syncing to the web server to store data. This gave them a bad reputation. However, in recent years, these frameworks have advanced significantly. As discussed earlier they are best used linking to a web service to provide a mobile experience. If you are wanting to create a game we would recommend a native framework.
Three of the most popular hybrid frameworks are:
Based on the C# language and now owned by Microsoft, Xamarin was previously a paid tool and a fairly safe bet, even though Microsoft is the third-place loser in the mobile operating system wars. Microsoft has moved Xamarin to be open source. Xamarin is best used for enterprise applications. It has the best performance of the hybrid frameworks on the device but takes longer to deliver applications (due to a larger amount of custom code).
Apache Cordova (Phone Gap)
Developed by Facebook and now open source since 2015. This makes it a fairly new framework compared to Xamarin and Cordova. The main advantage of React Native is that it takes care of rendering the views into a native experience for developers. This makes it faster to develop and it also has a lot of third-party integrations available (just like Facebook).
There used to be a significant risk in choosing to develop hybrid over native as there was a concern that Apple would prevent hybrid apps from being released to their App store. This seems to have significantly diminished but, the truth of hybrid is that it is a third party. This means they will always be a little behind in terms of available features and performance.
In conclusion, our recommendation would be to take a hybrid approach unless you are creating a game or you need to leverage native functionality. When it comes down to picking a hybrid framework there is no clear winner and it depends on the experience of your development team, the integrations required or any existing systems you may need to interface with. Again, our recommendation though is to always save time and focus on the people software fit of a new application by developing web mobile responsive first. Using the hybrid frameworks you can always turn these into mobile apps when the need is there.