iOS, Android, Hybrid, Oh My!
When developing a mobile application, the first question you may find yourself asking is: do I want/need an app for iOS, Android, or both? The two smartphone operating systems are often at odds, but together they hold 99.6% of all smartphone sales in the world with iOS holding 17.9% and Android with a whopping 81.7% of all smartphone sales worldwide. For more smartphone market states.
Maybe you only need to support one platform if this is an internal facing application, but it in most cases the obvious choice is to support both platforms, Android AND iOS, due to their combined domination of the smartphone market.
Get a quote today and let us help you develop your next cross-platform app!
Two Platforms Means Two Code Bases?
Now that you’ve decided to support both platforms, you will need a code base for each and most likely need to hire different developers to build and maintain your iOS and Android code bases separately. This is largely due to the fact that iOS apps and Android apps are built using different languages (Objective C & Swift vs. Java and Kotlin, respectively) and different native device APIs, think iPhones vs. Android devices like the Samsung Galaxy series.
Building and maintaining two separate code bases for your mobile application creates a host of issues including the following:
- Increased cost – due to maintaining two code bases in tandem and duplication of work
- Increased development complexity – due to the difficulty in learning both frameworks and overall complexity of the languages that power these native platforms, native is often not the best choice for simple applications. This increased complexity is a big part of what drives the increased cost of native apps on Android and iOS.
- Decreased UX consistency – with two separate code bases, there is a far greater chance that your UX will suffere due to a lack of consistency between the experience on each platform.
- Slower development cycle – because you have to continually add new builds to TestFlight or the Play Store to have end users alpha and beta test, you will see a much longer feedback loop in your development cycle than a typical web app.
One way to avoid some of these issues is to build a hybrid app with a framework like Ionic or other PhoneGap frameworks. While these hybrid frameworks have existed for some time, they suffer some heavy limitations regarding what device APIs they can access as well as showing greatly reduced performance when compared to native mobile apps.
Thankfully, that has all changed with Facebook’s release of React Native!
Two Platforms, One Code Base.
When developing your mobile app with React-Native, the following benefits are immediately recognized:
- Reduced cost – with React Native, you get the benefit of writing almost all your code in a platform agnostic manner. With this, benefit you can achieve almost 100% code reuse between platforms. However, there are still some instances where you may need to implement a native API differently that may prevent you from getting exactly to 100%.
- Increased UX consistency – React Native allows you the choice of matching your application UX to the native device or creating a consistent experience between the two platforms by using a UI kit such at Native Base or Ant Design Mobile. These UI kits render components that render identically on either iOS or Android devices to achieve maximum consistency!
- Rapid development cycle – by leveraging new features in code bundling such as hot reloading and things like Expo, the development cycle is improved dramatically. Now developers can reduce the feedback loop to put out features even faster and squash bugs in second.
- Native performance – because the React Native build system actually compiles down to native code, your app is actually running whatever native code would run an app on the device type: iOS or Android. This means your app gets the same performance as a native build app would. Let the animations begin!
It is important to note that React-Native is not even really “hybrid” in the traditional meaning of the word in the context of mobile development, but rather a new paradigm for developing mobile apps. The idea is to use a framework and syntax that is widely known by web developers to improve development time, lower costs, and increase performance and utility of native APIs. With that said, there are other solutions that solve these problems like Ionic 2 which uses Angular 2+ syntax and is backed by Google.
Either React Native or Ionic 2 comes highly recommended by the developers at Cadence Labs to rapidly develop performant, full-featured mobile apps.