These are my notes on the recent React Native panel in the F8 2018 Facebook developer conference. Watch the original video here.
Where is it used
- Facebook — Marketplace, Jobs, Safety Check etc
- Skype — Skype app
- TaskRabbit — Tasker app
- Postlight — Audubon Bird Guide
- CondeNast — Vogue iOS app
Code reuse between multiple platforms
- Facebook: ~93%
- Skype: 85–90%
- TaskRabbit: ~86%
- Postlight: 90–95%
Why was it chosen
- Platform specific codebases result in
- Developers hitting different snags
- Each platform moving in different speeds
- Getting out of sync
- Doing same things twice
- Polish/optimization doesn’t get done uniformly in both platforms
Skype
- Platforms: iOS, Android, Windows, Mac, Linux — Using ReactNative or Electron+React
- Before ReactNative
- 7 devs and 7 product owners for each platform across multiple timezones
- Main issue was communication between different platforms in different timezones
- After ReactNative
- Moved from platform specific teams to feature squads that focus on delivering features across different platforms
- Feature squads reduce the communication challenges and improve development velocity
- Reduces implementation discrepancies in different platforms
- Got transferable knowledge as all the teams speak the same language
- Easy to ramp up squads for new features and ramp down squads for other features
- Ramp up time is almost zero as there’s a single language used
- Lost good developers
- Focus on hiring generalists
- React — Same UI description language and layout semantics for all platforms
- React — Everything is encapsulated in a component as opposed to code scattered across different layers
- Uses ReactXP
TaskRabbit
- Before ReactNative
- 3 devs on each mobile platform
- After ReactNative
- 2 person team moving faster than the 6 person team
- Business logic lives in a single place and bugs gets fixed for both platforms at same time
- Helps in hiring
Postlight
- Postlight has React (web) experience
- 1.5 devs, completed before deadline and under budget
CondeNast
- CondeNast is a JS shop, so using ReactNative to leverage that experience
- Why replace Swift with JS?
- Declarative layouts with JSX
- Writing layouts in Swift is hard
- Iterate very rapidly
- Lower the barrier to create layouts
- Frees developers from working on “pixel pushing”
- Gives them time to focus on harder and interesting things
Lessons learned
Postlight
- Was able to do performance tuning for low-end devices targetting Indian market
- ReactNative is not prescriptive and makes it possible to drop out of ReactNative and use native modules when needed
- Ran into performance issues when you don’t expect the same with native modules (long scrolling lists etc)
CondeNast
- Being early adopter
- Going through multiple ReactNative version bumps is tough
- Better suited for apps that are under active development as batching several updates at once is painful
Originally published in sheshbabu.com