Mobile development — but how? An attempt to find the right approach

Gianluca Busato
Enkronos
Published in
6 min readNov 8, 2022

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.

What is ASO and how should I apply it?

Native or cross-platform: which is better?

Apple and Google provide their own SDKs to develop natively for iOS and Android, respectively — but should you use them? What languages, tools, frameworks, or libraries do you already know? iOS uses Swift, while Android uses Kotlin. Despite the prevalence that both operating systems enjoy, only between 6% and 8% of all professional developers have knowledge of one of these languages, according to a study by StackOverflow. Instead, the vast majority are proficient in other languages such as JavaScript, CSS, and even HTML.

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.

Furthermore, there are solutions like Google’s Flutter. Their Dart language is still relatively young and knowledge about it is therefore not widespread. Nevertheless, Flutter as well as Ionic, React Native or Xamarin are much more attractive for developers who are familiar with the web. Or maybe you just don’t have the time or inclination to deal with new languages and native SDKs — which is also fine. Even then, using JavaScript-based solutions is a good idea.

Creating mobile games: your step-by-step guide

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.

App development: A major asset for the digitalization of your company

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.

React Native

React Native handles UI rendering with native UI components. The apps are programmed in JavaScript, but it is transformed at runtime and calls the native UI components when they are requested. In practice, this works very well and leads to good user experiences — but it also comes with the problem of not being able to include web-based UI components, for example. This means that existing React components cannot simply be converted into native apps. This disadvantage extends to other areas: Not only web components, but also custom CSS customizations and web-based libraries cannot be included without some programming contortions. Apart from that, there is not much to criticize about React Native.

Xamarin

Overall, Xamarin behaves very similarly to React Native, but here you are writing in C# rather than JavaScript. Especially developers who are close to Microsoft will therefore have no problems with Xamarin. The disadvantages Xamarin shares to a large extent with React Native as well, for the same reasons. For example, you can only use native UI libraries effectively, and you can only integrate other libraries with considerable effort. The ecosystem around Xamarin is much smaller than that of React Native, which is also due to the smaller number of C# developers. The libraries are also not all that extensive, making up only a fraction of Ionic, for example.

Flutter

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.

Ionic

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.

Mobile application development: the top 9 factors to consider.

Conclusion

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.

Source

--

--