Best Platform for Mobile App Development

Posted by

A comparative study between Native & Hybrid development methodologies.

It’s been 12 years since the release of the first iPhone in 2007 and the world has never been the same again. The advent of the smartphone and the accompanied mobile applications has opened a Pandora’s box. There’s a mobile app for almost everything: ride sharing, finance, gaming, fitness, dining, etc. Chances are if you can imagine it, the app would already be available for download.

Gone are the days when the users had to switch on their desktop/laptop, login to the internet and then browse through a company’s website to avail its services. Today, all a user needs to do is tap an icon on their smartphone and the services of the company is at their fingertips (literally).

Perhaps the most important decision a company must make before entering the world of mobile app development regards the approach they wish to take when building a mobile app. Do you want to astound and entice your users by building an entirely native application that integrates into the platform of their choice (Android or iOS)? Or are you more interested in taking a Minimum Viable Product approach and quickly developing a hybrid application which can be released across platforms?

Native Apps

A native app is a smartphone application developed specifically for a mobile operating system (Android or iOS).

The app is developed within a mature ecosystem following the technical & user experience guidelines of the OS. This helps the app perform faster. Also, since the app is consistent with most of the other native apps on the device, the end user is more likely to learn how to navigate and use the app faster. Ease of access & utilization of the built-in features of the user’s device (GPS, camera, accelerometer, etc) is another area where native apps have score significantly.

Hybrid Apps

A hybrid app is, at the core, a website that is packaged into a native wrapper. To break it down further, ReactNative uses native components (Android or iOS) instead of web components to create the user interface, along with JSX — a syntax that is used to embed XML with JavaScript.

They look and feel like a native app, but ultimately outside of the basic frame of the application (typically restricted to the controls/navigational elements) they are fueled by a company’s website. Basically, a hybrid app is a web app built using HTML5 and JavaScript, wrapped in a native container which loads most of the information on the page as the user navigates through the application.

The comparison between the two development methodologies can further be broken down into certain parameters which can help one decide whether to go forward with native app development or its hybrid counterpart.

Codebase

Talking about ReactNative, it enables a single JavaScript codebase for two different platforms. This translates into easier maintenance of the app as the same development process is followed for both platforms along with the added advantage of code reusability.

The benefit comes at a cost though. It is well-known that Android and iOS have different design guidelines. If the project requirements dictate that these specific OS requirements should be followed for each native platform, ReactNative developer will need to write platform-specific code, which defeats the purpose of the single codebase.

It should be noted though that even with the factor of being allowed to write an app that looks the same on both platforms, it is still impossible to write an app without writing any platform-specific code. Some components will just look great on iOS and bad on Android and vice versa, which raises the need for fine-tuning those specific cases.

Programming Language

ReactNative is based on React.js which is essentially JavaScript. One of the most extensive and popular languages today. So it won’t be hard to find a developer who hasn’t coded in the language. However, the advantages of the language end here.

While Java (for Android) and Swift (for iOS) are strongly typed & compiled languages, JavaScript is an interpreted and by far regarded as an untyped language. In simpler words, variables in JavaScript can assume any type of value from integers to strings at any point in the code and the compiler will be unable to point that out. So if the developers aren’t meticulous enough, an app crashing catastrophe will be inevitable. On the other hand, native apps have more control over the variables and the logic of the app is more predictable.

User Interface

As opposed to Android’s XML or iOS’s Storyboard/XIB approach, ReactNative uses Flexbox to structure the UI. A technology that enables a developer to create responsive web or mobile UI pretty easily.

One considerable advantage that native apps have over hybrid ones is the availability of the tools for creating animations & complex user interface. React Native, on the other hand, does not excel at creating complex UI and animations. It does have the Animated API which is a neat solution, but is still far behind the native capabilities.

ReactNative simply does not provide the amount of user interface power as a native environment does. So for apps that require a highly complex UI or sophisticated animations it might not be the best choice but for apps with simpler UI it is a better option because of the way Flexbox handles responsive UI layout, as well as the simple and intuitive structuring of the XML components.

Native Modules

While React Native can handle a large amount of cross-platform use cases, it is impossible for it to cover all the features of the native environment. This means that there will always be a need for native modules. A native modules is a code in native language to handle specific native features such as camera, push notifications, third party services like AuthO, etc. So a ReactNative developer needs to have knowledge about the native development environments as well.

Furthermore, publishing a hybrid app is a task in itself, especially for iOS where XCode needs to configure release-related data such as provisioning profiles and certificates before the app is uploaded to the App Store.

The Future

While native iOS and Android are here to stay and will remain with us in the foreseeable future, the future of React Native is uncertain. It is developed by Facebook, so the React Native developers are at its mercy, because it is possible that at some point Facebook decides to stop maintaining it. This has happened before with Facebook’s backend as a service platform called Parse, which shut down on 28 January 2017, forcing all current users to switch to a new service.

Conclusion

In the end, is React native worth it? The answer is: It depends on your project.

  • Do you need to make an iOS-only or Android-only app? Go native.
  • Do you have a small team with limited time and resources, and need to make an app for both platforms? Go React Native.
  • Do you need to make a highly complex app which utilizes a large portion of platform-specific code? Go native.
  • Do you plan to maintain the app over a long period of time, without fear of Facebook quitting React Native? Go native.
  • Do your developers have a strong React / Web development background? Go React Native.
  • Does your app need to support new mobile OS features as soon as they are released? Go native.
  • Is your app going to look and behave the same on both platforms? Go React Native.


Leave a Reply

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