+++
Our team has lots of experience with JavaScript + React
+++
Build once for both platforms
++
Much better developer experience (faster turnaround times)
+
Can update without having to go through the app store most of the time
+
Has a lot of traction
+
Eventually, it might be possible to share components between web and mobile (react-native-web)
+
Great prototyping experience with Expo
+
Can use Atom/VSCode
--
Things that aren't important for facebook don't get built (navigation)
-
May get abandoned (unlikely, used in production by fb, instagram, netflix, airbnb, bloomberg) or facebook may slow down development
-
Can be slow on older Android devices
-
Documentation is improving but still not great
++
Full and direct control of all the capabilities of the phone
++
More stable
+
Can do advanced stuff like beautiful transitions
+
Swift and Kotlin are better languages than JavaScript (TypeScript somewhat alleviates this problem)
---
Have to build everything twice
--
No experience on our team, would have to hire new people and fragment the dev team into JS and mobile
-
The Android API is a nightmare to work with (inconsistencies between devices, debugging is hard, Fragment lifecycle is a mess, arcane build system)
-
XCode and the Swift compiler aren't very stable, Android Studio is slow and downloading stuff from Google's servers is slow in China
-
All updates have to pass the app store review process
-
Fuchsia (Google's new mobile OS) is on the horizon, hard to say what will happen in the future, Google may abandon Android
- Flutter (very early stage but similar to react native)
- Progressive web apps (probably not viable at this point but best deploment story)