Decisions

This post is a bit on the technical side but it should be understandable for people without a programming background. So how do you go about making an app? First you've got to figure out which types of phone, or platforms, you want to support. This is quite important, because it can increase or decrease your potential audience quite a bit. From a programming perspective, there are many differences in how to make apps for each platform, so we need to weigh the options carefully.

iOS and Android are by far the most used mobile platforms in the world, so we choose to target these two. The problem is that making a so called "native" Android app is completely different from making a "native" iOS app: You have to use two different programming languages, one provided by Google, the other by Apple. The tools to write code are different. After programming it, the app needs to be packaged correctly for upload to Googles or Apples app stores. The tools to build those packages are different. You almost always use other peoples code to save time, and that is also packaged differently for each platform. All this means you need to do most things twice, once for each platform. This quickly becomes a real pain in the ass to do, and it's no fun to learn everything twice. Luckily for us, there is another option: The Hybrid App.

"Hybrid" could also mean "not native". We are using a framework (fancy word for a large bunch of other peoples code), called Ionic. It allows us to program our app as a webpage instead of a native Android or iOS app. That might or might not not mean anything to you, but making a webpage is a vastly different thing from making an app. So you make the webpage and then load that page inside another app that behaves kinda, sorta, almost like a native app. You're basically wrapping your webpage to look and behave like a real app. There are quite a few downsides to this approach, but the result feels decently enough like an app to make it worth our while. Examples of downsides are slower animations, longer loading time when opening the app, the interface elements do not always look or behave like native ones, scrolling can be weird, it's hard to do 3d animation stuff, and much much more.

Lots of new apps are still made as native apps, precisely because of the downsides with hybrid apps. But you'd still have to do most things twice and differently for each platform. We have a limited number of man-hours, and we have experience making hybrid apps so that tips the scales in favor of hybrid. It's not just to save time though, it's a really complex trade off. What you choose always depends on the specific thing you want to build, and your previous experience. One cool thing about using Ionic is that with very little effort, you could reuse your app-code to make a mobile friendly actual webpage. If you go a bit further, you might want to consider making it into a Progressive Web App.

So we landed on a hybrid app for Android and iOS. Just remember the next time you feel bored waiting for our loading screen, that we wish it was faster, but it's one of the more direct costs of choosing the hybrid route. Plus, it saves us time we can use to make cool new features for you instead.