React-Native – First Impressions

During F8 2015, Facebook engineers announced a new platform for building native mobile apps – React-Native. Originally, only iOS support was released, but after a short delay Android support became available. React-Native extends the Flux/React libraries and architecture concepts with tools that produce native binaries. The language used to develop the code, just like with React.JS is the JavaScript. The ability to produce native-looking apps is achieved by combining JavaScript “glue-code” with plugins/controls developed with native code. In that perspective, React-Native is similar to Appcelerator.

Unlike Appcelerator, react-native has a better semantics for describing plugin interfaces, and more importantly as a React-platform react-native enforces better application architecture.

At this time, React-Native does not support Windows targets.

React-Native philosophy is upfront about the fact that no cross-platform tool is suitable for developing a single codebase for all platforms. Therefore, the React-Native team called their approach “learn once, write anywhere” instead of traditional “write once, run anywhere.” We discussed the issues that prevent apps of moderate and higher complexity to run off a single codebase while doing a practical Appcelerator overview.

At our client’s request, we used react-native developing a now top-rated financial services app, which won iTunes App of the Week upon release. We want to share our experiences with any developers thinking about giving react-native a go.

What are the requirements?

React-Native should be only considered when developers have both extensive experience developing native apps, as well as JavaScript expertise. Even if you are building a simple app, where no custom native controls will be required, it is possible that you will need to fix bugs in react-native itself. Hence, without native platform expertise, we do not recommend utilizing react-native for production apps.

What are the benefits?

  • React – Flux/React is a powerful architecture praised by leading software architects.
  • Glue code is shared between all platforms, making it easier to keep platform-specific parts synchronized.
  • App looks and feels native.
  • Tools such as Microsoft Codepush allows publishing some updates without having to wait for App Store approvals.

Is React Native ready for prime-time?

There is no simple answer to this question. There are lots of bugs in the platform, mainly in controls. Bugs are not terminal. An experienced engineer should be able to deal with those. React-Native community is rapidly growing, and often a bugfix may already exist somewhere online. In a little over one year, react-native community produced lots of open source modules offering functionality such as integration with third-party services, as well as user interface controls. If you don’t mind maintaining a custom react-native platform build, chances are that the bugs won’t stop your team. Apparently, core react-native team prioritizes features over stability. There is some UI responsiveness and snappiness degradation, on Android more than iOS.

While your mileage may vary, we believe that React-Native is a powerful platform worth at least observing.

More from our blog

See all posts