Skip to content

Instantly share code, notes, and snippets.

@jsoendermann
Last active July 10, 2017 03:05
Show Gist options
  • Save jsoendermann/493fb97049f5e2cdb604ee82bc3ef3c3 to your computer and use it in GitHub Desktop.
Save jsoendermann/493fb97049f5e2cdb604ee82bc3ef3c3 to your computer and use it in GitHub Desktop.
React Native vs Native

React Native

+++ 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

Native

++ 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

Other options to look at

  • Flutter (very early stage but similar to react native)
  • Progressive web apps (probably not viable at this point but best deploment story)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment