Facebook’s recent Groups app uses React Native so it has already proven itself in production to some extent. In addition, it appears that a rich ecosystem of third party components is already developing.
Sharing your code
I developed a proof of concept application that downloads train timetable data from a public rest api and displays it on your phone. The user interface is pictured below. In addition, I developed a simple React based web site that uses the same application logic to fetch timetable data. This demonstrates that it is indeed viable to share common business logic between the browser and a React Native application. The full example can be found at https://github.com/lhahne/trains.
A React Native app displaying train timetable data
A React application displaying train data using the same underlying components as the React Native app
All this commonality makes it rather trivial to share source code between React Native and web. If we are to use the typical Flux architecture, it would mean that our stores would be shared code. The UI layer would then be written specifically for each native platform using React Native and for web using React.
Then a standard React view to display this on browser becomes
and using React Native on iOS this can be implemented as
React Native demonstrates that it is indeed possible to share code between the web and mobile platforms. In addition, programming React Native resembles web development more than native mobile development. This allows developers to quickly translate their existing web development skill to native mobile development. React Native provides much more native feel than other crossplatform tools such as phonegap. However not all native UI components have yet been implemented so achieving native feel is easier than achieving native look. Yet React Native is currently only available on iOS. Android version is supposedly upcoming but nothing has been released yet.