My opinion mobile app development

Finally back on spot! Today I would like to talk about mobile app development. An exiting topic, isn’t it? But when it comes to choosing a particular technology it gets a bit difficult. There are million ways out there to create that awesome flashlight app for mobiles that will make you rich. You could create a native app, you could create web apps, your could go some hybrid way, so what is the best option? Simple answer? There isn’t one. Or as consultants prefer, “it depends”.

I was also at the point of choosing a technology for an application. And as I had no idea what I was doing I needed to more or less test all the ways that are available. That is why I would like to share my opinion, of course, there are plenty of tutorials for different technologies. But when it comes to choosing a specific technology answers get more rare.

Ok, lets start. If you think of mobile app development the first thing that might come to your mind is to check out the development pages of the creators of the mobile operating system you would like to support. I think that is a very good idea and as both, Apple and Google, explaining basics of their systems you are getting a basic understanding on how those platforms work. Also you get an idea on the design guidelines that applications for those platforms need to meet. Actually that is a very important point if you create apps, your app should follow the usability guidelines so that users are not getting confused. Especially when you focus on Apple apps you need to follow those principles, if not your app will not be able to get into the app store.

What the platforms of Google and Apple are also describing is how to create applications for their operating system. This is called “native app” development and means that you are creating an app just for one operating system. In some cases that is totally fine, maybe you want to address only one platform. But if you want to support both systems that gets a bit complicated. As you need different programming languages (Kotlin or Java for Android, Swift for iOS) it is nearly impossible to share code between both platforms when you do native app development. That is why often other technologies are used these days which I am going to explain later. However, in some cases two native apps make sence. If you need to create lot of device specifc features it is always a good idea to use the native ways.

Another option is going a complete other ways. The web today offers the possability to use native features in a web page. This powerful technology is called PWAs and such applications behave like native apps even thought they are opened in a browser. Many web pages use such technology already and in many cases this make sence. I used such a way when I created an application for a fair. So in that case the most important thing were the informations and creating native apps for such a thing would be too much work. With a PWA I could use the camera of the mobile phone or to create Push notifications when something was started. With PWAs you are able to share 100 percent of the code between both platforms. One disadvantage of such a way is that users cannot find your application in the app store. At the fair some people immediatly opened the app store when they saw that there is an application. That might be a problem. Also it is more difficult to make users use the app often, for PWAs it is essential that everything works as users expect, if that is not the case they would go to another site and will never come back to your app. If applications are installed they payed at least the effort on installing the app, so getting to a new app is more difficult. Also it is still not possible to access all native features as well as games could be difficult to realise in such a way.

A good way in the middle is creating cross plattform applications using the Apache Cordova framework. One framework that uses Cordova as well as Angular is Ionic. I like to use Ionic for many reasons. It provides many components that mobile apps need, it has a fantastic documentation and it can be used to create applications for all platforms (you can create native apps, windows store apps and web apps with just one framework). What that platform does is creating a native application that opens a browser were your content is displayed. The user just sees the native-like application. By using Cordova you are able to access device specific features. By using a CSS all the components really look like native components. I would choose cross plattform development using Ionic when it comes to business applications were you need to display and enter data in different masks. The only thing I do not like is that most of the Ionic components look like iOS components, in Android those should have a bit more adoption. But you can have native Android experience by adding another CSS framework like Material Design.

As I described above, with cross-plattform-application development in Ionic you are creating an application that runs in a web browser that the user does not see. That brings some disadvantages. On the one hand, you can have difficulties when trying to create customized native components. On the other hand you might get performance issues on elder devices. But the way of sharing a single code base in different applications is something that is not such a bad idea as nobody of us likes to create the same code over and over again. Platforms like NativeScript, ReactNative or Xamarin try to solve that problem. What those platforms do is creating native code from your code that is written in a shareable way. Which framework you are choosing totally depends on which framework you like. NativeScript supports Angular, ReactNative supports React, if you are a C# guy, Xamarin might be an option for you. I have used Xamarin in the past and I had good experience in using that platform. As you are using C# you can access many features of the .Net framework that are very useful in some cases. One problem that I often had with such frameworks is the time to render the code so that it can be tested. As I described, your code is translated into native code. And this takes some seconds that can be pretty long for a web developer like me that is used to short compiling time. However, that part gets better and better and Ionic has the same problem when it comes to testing device specific features.

Last but not least I would like to write some lines about Flutter. I need to say that I didn’t create whole applications using that framework but I played a little bit with it last time. And in my mind that way of creating applications definitly deserves attention. The idea behind Flutter is to create apps for all plattforms using one programming language (Dart). It provides many so called widgets, that you can see as different kind of functionalities. Flutter is the SDK that provides native applications, so you get all different advantages of native apps without loosing the advantage of a single code base. For me learning Dart was very easy as I have experience in C# and Java. Not only this framework is easy to use by developers, it is also easy to be used by not expererienced developers as the platform provides many different functionalities already. Those are called widgets and provide things like form controls, buttons, accessability, … So everything you need with an app. As this way of creating apps is pretty young but very promising I think it will get more attention and therefore I am going to have a deeper look too.

To summarize, if you are creating mobile apps you have to make a decision on a specific way by looking on your requirements. Not every framework is correct for a specific case. I often use Ionic or PWAs as I am a web developer but in many cases native apps are worth a thought. To share a codebase with a native app you can use frameworks like Xamarin but not always that way is the most performant way. And last but not least you need to have a look on the different trends on the market, like Flutter.

What framework do you like to use? Are you a native app developer or do you prefer cross platform development?

3 thoughts on “My opinion mobile app development”

    1. Good point! Actually there are many ways to see trends. I guess the most important thing is being open to new technologies and try them out. Maybe I am going to create a detailled blog post on how I evaluate blog posts in the next weeks.

Leave a Reply

Your email address will not be published. Required fields are marked *