I attended the React Native Workshop held by Artsy at Facebook’s UK HQ.
I was interested in attending this workshop as it was being run by a company that actively uses the technology for their production app.
Talks and slides from the conference will be posted by Artsy on GitHub.
This blog post captures some takeaways and notes from the talks at the workshop.
Approach & Rationale
- Artsy use a hybrid approach: native code where necessary, and integrating React Native powered View Controllers using CocoaPods.
- Recognised that “Swift was just another programming language” and did not do anything to serve their engineering needs.
- Recognised their app was “a JSON parser than produces UIViews”. React Native is a good fit for their app.
- There is a learning curve. Native Developers will feel slower and less productive initially.
- Eventually you will write less code
- Allowed the organization to “de-silo”. Web developers get to work on the mobile app, and mobile developers get to work on the web app.
Why Artsy Chose React Native
- Simpler Mental Model
- Simpler and more efficient Networking
- De-silo people
- Improve developer experience
- Expand platform support
Cross Platform
- You will need/should have a native expert for each platform you intend to support.
- Android
- You dont just get an Android app for free.
- Artsy does not have an Android version of their app.
- “Learn once, write anywhere”
- Learn React and you can have mobile developers contribute to the web site and web developers contribute to the mobile app.
Facebook as Platform Vendor
- React Native is an open source project, originating from Facebook.
- Facebook makes just what they need.
- When you are off off their golden path your team will have to do the work to add features you need and/or fix relevant bugs.
- 10 people at Facebook work on React Native.
- Facebook are currently undertaking a rewrite of React Native.
- React Native is open source. (Contrast to Cocoa, having to file RADARs for bugs etc).
Tooling
- No need to use Xcode!
- Artsy have their own preferred tooling when using React Native, but you can choose other options.
- Testing: using Jest
- Run tests outside of the simulator
- Can automatically update tests
- Has a great mocking API
- Storybooks for live coding
The event was edifying, and it’s always good to hear about the context in which technology decisions are made, and the implications of those decisions.
I recommend you watch the videos from the talks when they become available.