Thursday, June 21st
Airbnb Switching Away From React Native link →
Before React Native can render for the first time, you must initialize its runtime. Unfortunately, this takes several seconds for an app of our size, even on a high-end device.
A common misconception is that React Native allows you to move away from writing native code entirely. However, that is not the current state of the world. The native foundation of React Native still rears its head at times. For example, text is rendered slightly differently on each platform, keyboards are handled differently, and Activities are recreated on rotation by default on Android. A high-quality React Native experience requires a careful balance of both worlds. This, paired with the difficulty of having balanced expertise on all three platforms makes shipping a consistently high-quality experience difficult.
Although I don't have any real experience with React Native, both of these points seem like dealbreakers to me.
I'm always hesitant to recommend a framework like React Native that is not officially supported by Apple. Especially when Apple can operate mysteriously and suddenly. It's quite possible (however unlikely) they could ban all apps from the App Store made from frameworks such as React Native.
Furthermore, I think there's a lot of cases where branded apps across platforms should behave and meet the interface guidelines of each platform. Sharing model and data code is nice (in which case, C/C++ is pretty cross platform…), but I have a hard time believing that views and UI should be identical. To me, that would just be the lowest common denominator of experience across all supported platforms.
In addition, personally, I'd rather write Swift than JS.