Choosing a technology platform is a critical, and often difficult, choice for many startups. It’s something that we’ve been faced with at Carma recently, and we’re in the midst of a complete overhaul of our apps as a result. The good news is that you won’t need to wait too long to see our new lightning fast version of Carma on your iOS or Android device. Having spent the last few months working on this amazing project, it’s time for some reflection on the choices we’ve made.
There are three main ways that you can develop apps these days. Here’s a brief explanation of each:
- Completely Native
This is what many would consider the default option. A different version of the app is created specifically for each mobile phone operating system. This means that you need code for your Android app, separate code for iOS and so on. However, you have the advantage of an expected user experience, and complete access to the phone’s native features, like the camera, email and native geolocation. - Bring Your Own Device
With the advances in HTML5, it’s possible to create applications that run from any browser. So, if you’re on iOS, you simply navigate to the a page that contains the app. It will look almost native in most cases, but it might not necessarily feel like it’s a normal app. There will be lags in response time, and dealing with cases where there is no internet connectivity can be a challenge. - Hybrid
A hybrid application is a ‘best of both worlds’ scenario; the app is downloaded as normal from the App Store, but the internals contain a shared user interface, built using HTML5. There are tricks that can be put in place in order to provide access to those underlying features on the phone.
Hybrid sounds like the utopian solution, right? Like many companies that provide mobile experience, we thought so too. If you’re reading this article before March, it’s likely the Carma app that is installed on your phone is our hybrid solution. When things are going well on your network, it works great. But if you are in an area with bad connectivity, you have probably run into difficulties. We had a long think about it, and to reliably address this particular problem, along with the introduction of a number of simplifications and new features, we decided to build a native solution. There is a trend of this happening across the tech work, from Silicon Valley, to Cork, and beyond.
Most smartphone users have Facebook installed, and probably find the experience to be broadly acceptable: it feels fast, the information gets presented in a timely manner. Cast your mind back to early 2012 though, and this wasn’t the case. In the second half of 2012, Facebook caused a bit of a stir in the app development world when they announced that they were ditching the HTML5 architecture, and moved to rebuild the app as a native version for iOS. In their article about the decision however, the Facebook engineers put forward an important point on the benefits of using web technologies to prove the product:
We chose to use HTML5 because not only did it let us leverage much of the same code for iOS, Android, and the mobile web, but it also allowed us to iterate on experiences quickly by launching and testing new features without having to release new versions of our apps.
This was our experience too; the pace of iteration for the Carma app has allowed us to gauge what works for our Carmapoolers. This gives an amazing insight into what to do next. Everything that we’ve learned from previous app incarnations has been built into the upcoming version.
Facebook list speed and timely presentation of your news feed as the key drivers for the move to native. I remember how frustrated I was when looking at loading screens on Facebook, and we’ve had the same issue here with the Carma app. Thankfully, the new app is built with this in mind; we followed a technique known as ‘offline first’ for our key features. This means that even if you are off a network, you can still interact with the app; no more annoying loading screens.
The move from hybrid to native has been exciting for our development team here in Cork, but it was not a decision that we took lightly. As a complete technical rewrite, and given the love that some of us have for HTML5/JavaScript, it was not the easy choice. When reflecting on the how the application works in demanding conditions, we accepted that it was time for a rethink and we just went for it; better to change the status quo than struggle with unyielding technology problems.
In an upcoming blog post we’ll describe more about the technologies that we used to build the app that you will have on your phone in just a few short weeks.