Whether developers are working on completely new mobile apps or perhaps want to translate existing web apps into native iOS or Android apps: They always have to ask themselves how to approach it. We try to provide an overview of the current situation.
The best solution that doesn’t exist
In the back of your mind, you should always keep in mind that the solution to your problem is usually a solution just for you directly. Since app development must satisfy highly diverse needs, there is no Holy Grail that represents the golden path for every development team. So, before you tackle a solution, first consider: What do I want to achieve in the first place? The most popular solution is not always the best, which we will show in the following sections.
Native or cross-platform: which is better?
So if you’re comfortable with Swift or Kotlin – all the better! If not, however, a practical solution is to consider cross-platform solutions like React Native or Ionic. Since the code is shared between platforms, there is no high overhead for porting. Native apps can then be built using a language you probably already know anyway. Besides, it would probably be too much for even the most dedicated developers to learn a language just for one app.
Which cross-platform solution do I use?
If it’s going to be cross-platform, now comes the next question: which framework do I take? A lot depends on whether it’s going to be a brand-new app or if an existing web app is “just” going to be put into a native framework.
Port of an existing web app
Basically, there are only two options open to you if you want to go this route: Capacitor or Cordova.
Web app port with Cordova
Either you convert an existing web app with Cordova or build a completely new mobile app but developed with a web stack. The community is large, the ecosystem extensive. However, Cordova is significantly older than Capacitor (which we’ll talk about in a moment). Many of the modern web APIs did not exist when Corvoda saw the light of day. The many abstraction layers used in the conversion from web to mobile are also not to every developer’s liking when it comes to debugging.
Alternative in the form of Capacitor
For the most part, Capacitor throws out the legacy features described above. You can also use it to rewrite web apps on iOS or Android, or even craft Progressive Web apps. Most Ionic apps use Capacitor, plus it’s completely free and open source. In a survey by StateofJS.com, Capacitor took the top prize in the developer satisfaction category. The community is growing fast, plus you can use any web stack you can think of with it – Bootstrap, Angular, Vue, React, and more are all on board with Capacitor.
Development of a completely new app
A much wider range of eligible solutions awaits you when the app is built from scratch. We’ll only look at Xamarin, React Native, Ionic, and Flutter here. While more solutions exist, these four frameworks represent the lion’s share.
Let’s also say up front: you can develop great apps with any framework, as long as you know what you’re doing. The communities are all very large and helpful, the frameworks are established in the market, and a bright future awaits them all. Thus, it also boils down to your personal preferences. At this point, we don’t want to proselytize and force you into one direction, but just briefly introduce the four frameworks mentioned.
Flutter is a small special case that is exclusively maintained by Google. It can be used to build very fast, very good-looking apps that work everywhere and rely on a uniform code foundation. Sounds good – but all of that is bought by Google doing a lot of customization that doesn’t work outside of the Flutter ecosystem. So if the company drops Flutter, you’ll be left empty-handed. The proprietary programming language (Dart) makes it quite difficult to get started. Flutter can thus produce very fast and enthusiastic-looking apps – but you put yourself in total dependence on Google. Whether that’s a good idea is something you’ll have to decide for yourself.
You can deploy your app anywhere with Ionic, as the codebase is always the same. Ionic uses Capacitor as a base and can use a mix of native and web libraries if needed. For example, you could also build an app that has a native look but uses web components to do so – which would make it easier to port to other areas. You can also use three different JS frameworks with Ionic: React, Vue, and Angular. You can pick and choose what works best for your use case. Fast apps that have a “native feel” can be combined this way with customized CSS and custom UI.
Since there is no such thing as “the best framework”, we are not picking a winner at this point. The best mix of speed, compatibility, and flexibility we would put at Ionic – but maybe you are not looking for a mix at all but have quite exact ideas. Contact us if you want to learn more and need someone to help you with your app development – whether web-based or completely native. Enkronos team is waiting for sharing all required information with you.