Let’s say you want a mobile app that’s exactly tailored to your needs and you ask us to do the programming. In what ways can we as developers realize that project? What are the important points to consider and where do the different ways of doing things differ in the end? If you’ve ever asked yourself these or similar questions, or if you are currently looking for someone to program your mobile app, you might find this article helpful.
Every smartphone owner knows and uses countless mobile applications, or apps for short. You can only imagine how many apps are developed every year. And since we can’t help ourselves, everything with potential like that is continuously optimized and simplified. Thus, we now also have roughly four different ways of developing apps: native, cross-platform or hybrid and web-app. Which is why I would like to talk a little bit about the pros and cons of each of those.
Native app development means programming the app in a language or using an API which can be understood by an individual mobile platform. The most important platforms right now are Android, iOS and WindowsPhone and they use these programming languages:
● Java/Kotlin for Google’s Android
● Objective-C und Swift for Apple’s iOS
● C#, C und C++ for Microsoft’s Windows
Cross-plattform / hybrid
As the name might tell you, cross-platform or hybrid development lets you program an app for multiple platforms with a largely shared codebase while trying to use the respective native components. The supposed advantages are a decrease in time and resource use, since you basically only develop one app to fit all platforms. Of course, this will now sound very tempting and you might wonder why anyone ever develops two or three native apps. An issue to consider, however, are the constraints with respect to various technical aspects – but I’ll tell you more about what those are later. The following are the most used and best-known frameworks for hybrid and cross-platform app development.
● Xamarin with Ruby/C#
I’m sure this list could continue endlessly, since such frameworks are a dime a dozen. Basically, they all work equally well, meaning that they do what they promise. But they all have similar restrictions as well.
Again, the name might have spilled the beans already. These apps are displayed in the web browser and can thus be used on many different platforms – as long as there’s a web browser available, of course. These apps don’t have to be installed and are thus also not available for download through the app stores. Also here, the advantage is the single code base, but in all other aspects, the contrast to natively programmed apps is extremely pronounced, especially when it comes to the user experience. Consequently, the advantages of providing an app for your users kind of go out the window (no pun intended) with this one, since the mobile version of a website has a very similar effect. The following frameworks are used, however:
● JQuery Mobile
So the perfect solution is…?
The perfect solution unfortunately doesn’t exist, even though cross-platform framework sellers try to tell you that there is. If you have particular needs for your app or want that true native look, you might have to develop individual apps for all desired platforms. Of course, that also means that you can use all hardware components such as NFC or Bluetooth without the need for plug-ins, which sometimes is the only way to do it. For very specialized apps, like augmented reality apps for example, the traditional cross-platform frameworks won’t be ideal. (Although we do develop those apps at least partially cross-platform with the game engine Unity – but I’m going to point you towards my colleague Phil’s articles for a more in-depth look at this topic.)
Further, there are the official features by Apple and Google, which basically means “we like your idea and realization of it, so we’ll put your app on the start page of our store!” Such features can get you a ton of downloads, which is why they’re a great opportunity for any developer. The only way of getting one, however, is conforming to every single platform guideline, which, in my opinion, can only be achieved natively.
If you just want the same app on multiple platforms, though, considering a hybrid development makes sense, especially since many frameworks have become pretty advanced by now. There are many plug-ins out there, giving you access to most software-hardware components. Here’s a short comparison between native and hybrid development by MediaLabs:
And then there’s web apps, which have a right to exist same as the other two basic ways, but can’t really pull their weight when it comes to actually using them. As you can see in the picture below, there are still some problem areas which would need to be fixed for web apps to be a serious competition for native or hybrid app development.
The pros and cons of cross-platform development
Since hybrid apps is consistently increasing in numbers and popularity, I will list what I think are its major pros and cons. Hopefully it will allow you to better decide what might be ideal for your use case, when considering hybrid/cross-platform/web vs. native.
● potentially faster development
● more cost-efficient
● easier to maintain
● usually don’t require platform-specific programming knowledge
● platform-specific limitations
● poorer user experience
● more complex integration of individual needs such as notifications or local settings
● higher energy/battery consumption
So now what?
Ok, now you’ve read the whole article and maybe got the feeling that you still don’t know the objectively best way of developing your app. Well, that’s exactly what I wanted – yay! Because there is no hard and fast recipe for developing anything, there are only problems that need solving as cost-efficiently and quickly as possible. Many of the frameworks discussed above promise you a quasi-native app for half the price, half the work and many other things. But they won’t tell you about any disadvantages or problems they come with, of course.
So my concluding tip is this: look at all the possible ways of developing your app as objectively as possible and try to ignore the respective development time for the moment. You are not going to be happy with a cheap solution that just isn’t entirely right in the end. Of course, the opposite is also true. If what you want is for your app to be the exact same across multiple platforms and you don’t need to access any particular components, do look at hybrid solutions. However, if your app will need multiple hardware components and should exhibit a platform-typical look & feel, hybrid development might not be your immediate go-to.