React Native v Xamarin Forms - Choosing Cross Platform App Environment [closed] React Native v Xamarin Forms - Choosing Cross Platform App Environment [closed] ios ios

React Native v Xamarin Forms - Choosing Cross Platform App Environment [closed]


disclosure: I'm not a Facebook or Microsoft employee, I'm not involved with either platform, I'm a web developer that just started learning how to develop with react native.

react native

built by facebook and open sourced - it currently (as of October 2015) supports iOS and Android only. It is similar to Xamarin on the fact that the UI components you build are converted into native components, and DON'T run inside of a web view, such as in other frameworks (e.g: Cordova); the advantage is that native components are more responsive than web components.

Apps should be able to share the business logic code, and most of the UI components, but as the team behind react native puts each platform has its own distinct interface, and your app should account for that, and as such it allows and encourages you (it doesn't enforce you though) to write your app UI interface for each platform.

All the code is written in Javascript (not Java), running in a nodejs process, with the UI described using XML elements, and styled with a pattern that is similar to CSS, but internally parsed as Javascript.

Your app will run in two threads, the main thread where most of the UI will run, and the nodejs thread where your business logic will run. This have some implications when you architect your application.

The framework is mature enough for you to build production ready applications, but the cross-platform components officially supported still needs to increase. The community is also building great cross platform components that you might want to use, most if not all of them are free.

what is the team behind react native working now? (based on the talks I've watched online):

  • fixing the workflow of assets - currently if you modify an asset, first you have to do it in a different place for each platform supported and in order to see the change when developing you have to recompile the app.
  • increasing the number of react native UI elements (specially for the android platform)

In summary these are the points you need to consider:

                 Xamarin                     React Nativebuilt by:        Xamarin                     Facebooklanguage         C#                          Javascript (nodejs)age              mature                      (prod ready), but not maturecommunity:       good support                good supportplatforms        iOS, Android, Windows       iOS, Androidcost             FREE (open sourced)         FREE (open sourced)