React Native is a framework for building native apps using React. React Native enables you to build world-class application experiences on native platforms using a consistent developer experience based on JavaScript and React.
- Speed and power of a native application, with the ease of development that comes with React:
- No specific data binding
- No event management
- No micro managing the view
- Just change the data and watch React recalculate what your view should look like
- The simple data flow of React (re-rendering when state changes) makes modular components super easy to design
- Power of CSS styling from Flexbox
- Live / Hot reload of the app in the simulator without building / compiling the whole project;
- Good error reporting (debug), in combination with Chrome Developer Tools
- Much more easier to develop applications to work on both platforms (iOS / Android)
- Preferable / quicker way for web / javascript / front-end developers start building mobile apps
- Speed of development
- Contains a sophisticated native mobile gesture recognisers
- Growing community
- Learning curve for native mobile developers. This is a completely new way of building mobile apps:
- Learning Reactjs
- Learning Flexbox (used to build the UI)
- Struggling with new errors/bugs
- New setup: mobile developers are usually comfortable only with Xcode / Android Studio. They’ll change to a setup with a text editor, Chrome for debugging, terminal, and the Xcode / Android Studio for simulators
- It is an abstraction. Problems that came with abstractions:
- Code between yourself and the native platform you are developing for
- Bugs in the communication between React Native and native components
- Depending on third party for bug fixes and keeping framework up-to-date (for example, the iOS world moves very quickly, making hard to keep this abstractions updated)
- Features you cannot access: Usually abstraction layers are incomplete in that there are some features of the underlying system which are not exposed via the abstraction layer (Although there’s a mitigation factor for this, which is popularity)
- React allows you to write applications iOS and Android with native UIs using a common codebase. However, you will not be able to take your iOS code and run it on an Android device. With React Native the UI that you construct within your render functions is tightly coupled to UIKit controls. In each case you have to write a thin UI layer that is platform specific
- Some specific native components will not have available implementation so you’ll need to write them on your own
- Early project, still lacks on comprehensive documentation, bugs correction, etc
- Android and iOS only
- Windows development not fully supported
- The majority of posts I’ve read from mobile developers follow the same pattern: very difficult/frustrating at first, but after that they say they’ll never build mobile apps the native way again
- For web developers, especially those who are fluent in ReactJS, React Native is a fantastic opportunity to write ‘native’ mobile applications using their existing skills.
- React is responsible only for view, so we also need to select solutions for data flow and routing ourselves. We also have to decide how to organize and structure the logic of our application (like using flux or similar, for example)
https://facebook.github.io/react-native/ http://www.gajotres.net/react-native-review-the-transformation-of-mobile-apps/ https://www.ekreative.com/blog/a-developer-s-review-of-react-and-react-native-s-use-and-potential https://medium.com/ios-os-x-development/an-ios-developer-on-react-native-1f24786c29f0#.479w8l8ok http://readwrite.com/2015/09/25/react-native-mobile-apps-web-apps-marc-shilling http://red-badger.com/blog/2015/03/04/react-native-the-killer-feature-that-nobody-talks-about/ http://blog.scottlogic.com/2015/03/26/react-native-retrospective.html http://www.theregister.co.uk/2015/07/17/facebook_react_native_hot_for_how_long/ https://www.reddit.com/r/IAmA/comments/3wyb3m/we_are_the_team_working_on_react_native_ask_us