I had a chance to be part of a team that started developing a decent size React Native mobile app from scratch. As a developer with a solid React background, I had some expectations at first. During my initial research, everything sounded terrific: performance stats, ease of development, learn-once-use-everywhere, debugging tools, etc. But is everything terrific really?
I'm excited to share my journey about how my expectations met the reality. I'll give my personal opinion about the matureness of the technology, for which use-cases it fits well and for which it doesn't. I'll also try to address the most popular misconceptions about React Native, which front-end developers usually have before they have the chance to actually built something.
How many are front-end developers? How many have done at least 1 project with React? How many have done at least 1 project with React Native?
#1 Different concept than Cordova or browser-based apps, which run inside a web view.
#2 NO "mobile web app", an "HTML5 app", or a "hybrid app". A real native app.
Single-code base. Single team. Single tech stack.Game changer! Cost saving. Faster iterations.
It’s impressive what can be accomplished.
It’s impressive how many big companies are using it.
The best way to evaluate a new technology is to use it.App profile: team of 2. 6 months. A bit more info about the project.
Measure of success. Score.
Design patterns. Redux!Krasi Tsonev book.
Works the same way in React Native as it does in CSS on the web, with a few exceptions.The defaults are different, with `flexDirection` defaulting to `column`, and the flex parameter only supporting a single number.
Gotchas! Piniz: a way to resolve a problem, usually technical and hidden.Not all CSS properties work to all components.
Not single code base out of the box.Not designed to write once, run everywhere
Layout Animation API (simple) and Animated API (advanced).
Time to Learn: 2-3 weeks.
CRNA - app without any build configurationExpo (toolchain):- Support for iOS and Android out of the box - Instant Updating - Asset Management - Modules (Push Notifications, Auth, Map)
Choose based on the use-case you have.
- NO native modules without detaching- Expo limited components. - Expo is always at least one version back from React Native
No, it doesn’t fit all-mobile-app-use-cases-in-the-world.
Expectation: web experience. I’m used to it.
Change styles on-the-fly
- JackDanielsAndCode/react-native-multi-slider | 130 stars, good documentation, doesn’t work on Android
- ptomasroos/react-native-multi-slider | 150 stars, no documentation