App Development: Cordova vs React Native vs Xamarin vs DIY

MOBILE APP DEVELOPMENT PLATFORMS

Are you still writing native iOS or Android code for creating mobile apps? May be it is the eternal love for platform specific programming languages and tools, skill set issues, a very specific need of the application or just ignorance. It is high time to re-evaluate the approach to mobile app development and choose right set of tools and frameworks to get the job done for higher ROI and rapid development.

I spoke to many developers around and most of them do not prefer developing mobile apps in native iOS (Swift, objective C), android (Java) or Windows (.Net) specific programming languages and tools since their apps target multiple platforms.The reasoning is that native development requires specific skill set for each platform and higher development efforts in general.

We started off with React Native few months back and I must say that it is a very powerful option for app development and fun to work with. Ever since Facebook included Android support in React native, we are more or less settling for it. Having said that, React Native is not the only animal in there, there are other great options like Xamarin. Xamarin is among the most feature rich, established and easy to use platforms for rapid mobile app development.

I will not be covering here all the platform options for app development but different development approaches, with a representative platform, to understand the concepts and methodology of each development approach. 

Mobile App Development – Platform Options

There are many platforms and tools available out there in the wild when it comes to mobile app development. Over the last couple of weeks, I have been evaluating various development options and came to the conclusion that there are five different categories to choose from, as listed below –

  • Native Development
  • Cordova based Hybrid app development - 
  • Mobile app development in React Native 
  • App development using Xamarin
  • Last but not the least DIY (Do It Yourself) tools

All the tools falling in one or the other category mentioned above offer different set of features and require specialized skill set for app design and development. Selection of the right tool/platform upfront is a very crucial factor in the long term mobile app development strategy.

Which Mobile App Development Option is Better?

Different alternatives to native code development have their own advantages and philosophy behind. No one tool or approach can be clearly marked as a winner since it all depends on multiple factors. The most prominent factors in choosing a specific app development platform or approach depends on the below key factors –

  • Skill set of the individual or development team
  • Unique requirements of the app
  • Targeted user segment
  • Long term strategic vision of the individual or an organization.

If you are making apps for one specific platform only, then going native (swift, objective c for iOS and java for android) is the preferred choice, simply because you get the best performance and the latest APIs and features to work with.

You are targeting only one platform, so, no worries about code reusability. The main reason to deviate from native should be the skill set of the development team, though not the only one.

Let us look at some of the key aspects of various alternatives to native development.

Cordova Based Mobile App Development

Hybrid app development using plain JavaScript, HTML5 and CSS is one of the easiest and most popular options and this is where old time web developers are at an advantage. There are tons of frameworks that let you do mobile app development with ease by using age old plain JavaScript and CSS; some of these frameworks include Ionic, kendo UI and jQuery Mobile.

You can, off course, choose not to use a given framework and go with naked JavaScript, HTML and CSS and start building your app components from scratch. Using a framework, however, like Ionic, Kendo UI, jQuery Mobile, Onesen UI or any other established framework would cut down your development time exponentially.

You might want to check out this popular article - Best Hybrid App Development Frameworks.

How does your App access the hardware components?

This is where Cordova comes into the scene. Cordova brings in unified JavaScript API, using which you can access device functions like Camera and accelerometer of almost all platforms including Android, iOS and Windows. Once your app is ready, you compile your app with Cordova and Cordova wraps your app specific JavaScript, CSS and HTML into platform specific containers (webview). This container acts as a bridge between your application and hardware components via unified JavaScript API.

The biggest advantage you get here is the single code base to develop and maintain, and that too, without learning any new technology, if you are already a web developer.

The key point to notice here is that the application runs in the webview, and not natively on the hardware, which makes it less performant than the native Android or native iOS applications. But then, all apps are not required to be super performant, it is a tradeoff and decision that you need to make upfront.

Cordova is free and open source under Apache license and is distributed by The Apache Software foundation. You can read more about Cordova here at - cordova.apache.org.

Mobile App Development Using React Native

React native is relatively new but an excellent option for rapid mobile applications development, and you can target both iOS and Android. Android support has been added recently. React native is the open source framework from the house of Facebook and is used for developing native iOS and android apps.

Even though React Native is a new entrant in the market but many developers and organizations across the globe have started developing cross platform mobile apps using React Native, Some examples apps include SoundCloud Pulse, Discovery VR, Facebook Ads Manager, Bit Wallet, Squad, Myntra and Running. 

React native too is JavaScript based but just plain JavaScript, HTML5 and CSS won’t help here and you need to invest some time learning more stuff. You need to understand React, the framework that was released back in 2013 by facebook for web applications development, React native is the extension of React itself and uses the same development philosophy. 

Apart from React framework, you need to understand JSX, JSX is the XML like syntax extension of ECMAScript. Once you get hands on with JSX, writing React native UI components become absolute breeze.You also need to work with Xcode, iOS simulator and command line tools for building Android version of the app. Additionally, Knowledge of application architecture framework like Flux and related packages like Redux and Reflux etc. help organize and speed up app development.

React Native vs Cordova or PhoneGap

The UI in Cordova based hybrid apps is developed using HTML and JavaScript components and runs in the webview (embedded browser) of Android and iOS platforms. In React Native also, the UI is written in JavaScript react components (JSX extension), but each React native UI component corresponds to the native UI component of iOS and Android.  So, you write components in JavaScript but those are converted to native components. Net net, you have JavaScript code interfacing to the native components of the underlying platform. 

For example: Tab Creation – For UITabBar of iOS there is TabBarIOS component in react native and for Drawer of Android there is DrawerLayoutAndroid component in React Native.

Above example also conveys that code reuse between Android and iOS apps in react native is not purely 100% but can easily be targeted anything from 85 % - 100%, depends on what you are developing.

The biggest advantage here is that you work only with JavaScript for your iOS as well as Android version of the app.  The philosophy is - “Learn once, write everywhere and achieve maximum code reusability”.

You can know more about React Native here at - react native.

Mobile App Development Using Xamarin

Xamarin is another animal in the wild for building native mobile apps and it is one of the most used platform for app building. With Xamarin, you can build native android, iOS, windows and Mac apps in C# language.

Development philosophy is more or less the same as React native but the skill set requirements change drastically since you need to work with C# and Microsoft tools instead of JavaScript. The code reuse again is not 100% but 80% can easily be targeted.

Xamarin is not the easiest to work with but gives you the performant mobile applications.  You develop code in C# and Xamarin compilers compile the code into native packages of respective platforms, may it be iOS, Android or Windows Phone. For iOS, the code is directly compiled to the ARMS assembly binary, so it is purely native.

Xamarin.forms is another feature rolled out recently by the Xamarin folks, using which you can achieve 100% code reuse while developing native user interfaces for android, iOS or Windows. The UI controls of these forms are mapped to native controls at run time and hence 100% reuse is possible. Though, it doesn’t cover each and every native control but cover what 90% of the applications need.

Xamarin is the adopted baby of Microsoft. Microsoft recently acquired Xamarin after which its usage is increased further and more features are getting added faster than ever before.

C# developers feel home developing applications in one of the most advanced IDE's, visual studio. Mac users use equally feature rich Xamarin studio for development.

You can know more about Xamarin here at - xamarin.

Mobile App Development Using DIY App Builder Tools

Do it yourself tools are not for innovation or for developing new applications, but, these are quite useful to get an app to the market in just a couple of days. These tools come packed with tons of app templates that are ready to be published on apple’s app store or Google play.

Most of these tools are cloud based app development platforms, and let you build mobile applications without the worries of setting up your system. Do It Yourself tools offer intuitive app building interface that can be used to build apps without any prior development experience.

You can choose an app template, customize and configure it your way and you are all set with an application of your own. Individuals and small organizations are creating mobile apps using these tools and getting good ROI and faster time to market.

UI/UX designers have always been dependent on programmers to get their dream app to the market, but now days, UI/UX designers can create mobile apps with these drag and drop tools, and have an edge over developers. Graphic designers can create and incorporate great looking graphics in ready to use app templates to make apps look unique (not that much though). The branding touch given by unique and brand specific graphics and colors make the app standout and look personalized. 

In this fast paced world, when your target is revenue generation, it may not always be a good idea to focus on innovation and creativity and start building apps from scratch, existing app templates customized to your or your customer’s needs may just work great.

You might want to check out this popular article -  Top 10 DIY mobile app makers.

Conclusion

There are different methodologies to app development and many platform choices, not one is the universal fit for all kind of app development needs.

Many developers just love Java and continue to do Android development in Java without thinking twice about other available options, same goes with developers working in Objective-C. Not to argue, Native app development gives the best performance and smooth user experience.

Web developers have turned into mobile developers without any difficulty with the advent of hybrid frameworks like Ionic, Onsen UI, Intel XDK and Sencha Touch to name a few. All these frameworks deal mostly with JavaScript, CSS and HTML only, and support almost all mobile platforms.

React native brings the better of both the worlds i.e. Native development and hybrid frameworks. Web developers turned app developers get to develop apps in JavaScript and are yet compiling the code to native apps. With React native, you get ease of development, better performance and great user experience in the end.

Xamarin is no different than React native, but then C# and .Net technology expertise is less common among web developers. However, for Microsoft .Net lovers, Xamarin arguably always becomes the platform of choice.

Last but not the least, DIY (Do it yourself) Platforms – Smart app developers do not ignore DIY tools specifically when it is not about enterprise app development. These drag and drop tools are a blessing for non-developers who want to get their apps listed on App Stores without bearing the development costs.

Hope you enjoyed the article. Do share your thoughts with noeticforce.com community via comments. Cheers!

About The Author: noeticsunil

Sunil is the founder and contributing editor at noeticforce.com. He writes about anything and everything that makes modern mobile apps, web apps and websites possible. Passionate about coding in any language including Python, Swift, JavaScript, PHP, Java, Android & iOS dev, not excluding CSS/HTML. 

If you like this article, you can connect with noeticforce on Twitter or subscribe to noeticforce feed via RSS.