BY IAN OUTTERSIDE
I’ve spent a week now on the West coast of the United States and found it to be a very friendly and welcoming place. My experience at Chain React day 1 only continued this pattern, and I was excited to get straight back for its conclusion for day 2 to continue my deep dive into all things React Native. In particular, I was looking forward to a panel discussion between some of the influential names present at the conference.
RxJS and the Limitations of React Native
Following Tracy was my favourite talk of the 2 days, given by Ram N from Facebook. The talk focussed on the state of React Native today, Facebook’s internal adoption of RN, and the roadmap for RN in the months ahead. The first interesting piece of the talk was to discover that the entire marketplace section of the Facebook app is powered in production today by React Native. Not only is that 100+ screens (something Facebook estimates to be the largest React Native integration currently in production on the iOS and Android app stores), but the team working on the marketplace internally at Facebook is larger than the team that works on the news feed. Facebook were very keen to stress throughout the talk that they are doubling down on React Native, but were also aware of its state right now.
Ram went on to talk about the current limitations of React Native, acknowledging some well known issues and even addressing directly the recent Airbnb post (more on that later). The key takeaway to Ram’s introduction was that React Native was built as an async language, but that means it has problems at times when things need to be synchronous (e.g. integrating scrollview native implementations). Ram went on to explain why this is “under the hood”, illustrating how React Native communicates and performs layout with the 3 concurrent threads that it currently interacts with. Whilst I won’t get too technical here, I would highly suggest looking out for the YouTube video of the talk if you’re at all interested.
Ram moved on to explain what the limitations of their current approach is, before providing a sneak preview of how Facebook plans to solve this with a major rewrite of React Native. Critically, this rewrite will enable some synchronous behaviour for high priority updates, which should fix a large number of the concurrency issues, increase performance, and improve user experience. I can’t wait to see how this changes the react native ecosystem, but best of all, Facebook are committed to not requiring any changes from developers of their apps in order to benefit from their changes.
The Power of GraphQL and Brownfield React Native
A quick coffee break later, and it was back to the talks with Peggy Rayzis from Apollo to demonstrate the power and features of GraphQL. GraphQL has numerous advantages over regular api fetch, including minimising the size of wire fetch requests and ensuring you have exactly the data you need, no more, no less. Peggy advocated that taking this further, React Native app developers can use the GraphQL client together with “Apollo Link State” to effectively remove the need for Redux completely from apps. I can definitely appreciate having one source of truth for all things data inside your app has the potential to dramatically reduce headaches, so this is well worth keeping an eye on.
Next up was Harry Tormey discussing using React Native in a brownfield app, rather than a greenfield one. This particular challenge formed a key component of the Airbnb post, and it was interesting to hear Harry articulate his experience of doing work like this. Harry estimated that it was between 2 – 3 times harder to integrate RN into an existing application, than starting a greenfield RN focussed app. Harry felt that therefore, the work should not be undertaken lightly, and is really mainly suited to large organisations that can commit to the investment. Finally, Harry explained the process he felt was best at tackling such an integration.
— Harry Tormey (@htormey) July 13, 2018
Powering VR and the Future of Unified Experience
The final talk of the morning came from Michaela Lehr focussing on a new web standard for AR and VR called WebXR. Whilst not strictly a React Native technology, Michaela talked about React360 and AFrame, two frameworks powering AR and VR on the web today. Without a doubt, the most interesting aspect to her talk was her discussion around user experience in VR, and establishing patterns and best practices. With the help of some hilarious GIFs she demonstrated some of the most important “what not to do’s”, including rapid changes in balance and placing items in VR in physically unreachable places.
The age old discussion of “device specific experiences vs unified experiences” was examined at length by Jen Luker and Eric Vicenti – and whilst it was clear that both parties had the users best experience at heart, they had wildly different viewpoints as to how that may be achieved. Jen argued that each piece of hardware has its own capabilities and accessibility strengths, and that these should be played to. Eric on the other hand argued that we’re now approaching an era of development in which we don’t need to accept this any more, and we can look to a future of the unified experience.
Airbnb and the Technical Issues of React Native
The most interesting part of the panel was a six minute post mortem of the Airbnb post, with most of the panel weighing in. Hoping this might be addressed, I captured the segment on video and (posting with permission from Todd at Infinite Red) have put it on YouTube to review – check it out at https://youtu.be/Jn5mKKVbeTg. The points raised were fascinating, but the general consensus was that there were 3 fundamental causes for the Airbnb post. The first was that they were encountering technical issues with React Native, which Facebook have acknowledged and indeed believe will be fixed with their rewrite. Secondly, these issues were exasperated by the fact they were approaching React Native from a brownfield point of view, hoping to reduce the complexity of introducing new features when in fact that was likely not to be the case. Finally, and perhaps most importantly – those in the room felt the post highlighted cultural problems at Airbnb in relation to their support of React Native, in other words they were simply actively resistant to it. Ultimately, React Native requires developer buy in, and just like any other technology it is doomed to fail in an environment where buy in doesn’t occur.
ReasonML, SVG and “Good Enough isn’t Good Enough”
The penultimate talk of the day was from Ori Harel discussing the use of SVG within React Native apps. Ori started simple and worked his way up in complexity right to animated D3 graphs, providing sample code through. Having used some of the suggestions Ori made in some of our own apps at Komodo, I can definitely attest to them.
The final talk of the day was given by Jani Eväkallio from Formidable Labs entitled “Good Enough isn’t Good Enough”. The talk was presented in a unique way, comparing the current state of development to various artistic pieces, before deep diving into what will make successful apps, and why we as developers have to strive to deliver apps that don’t just suffice, but exceed expectations in delighting users if we want them to be successful, and if indeed React Native itself is to be successful.
I had a fantastic 2 days at Chain React and indeed my week in Portland was amazing. The tech scene and it’s developing nature in Portland is worth a blog post in and of itself, but I’ll save that for another day. Instead, let me say to all the speakers and attendees, thanks for all the fantastic talks and insights, and I look forward to the next Chain React.