Eli White

Transcript from Friday November 10th, 2017

React Native Core Team @ Facebook

Hey Everyone! I'm super excited to be here and have a chance to talk with you. I've been at Facebook since March and have been focusing on internal JS infra around React Native and helping our product teams improve the reliability of our apps, mostly by improved flow typing!


# Q: Will there be native support for vector drawables in the future? - Andrew

A: I'm not familiar with vector drawables, is there a github issue you can forward me about this?


# Q: Hi Eli. What do you recommend to debug performance of a React-Native app? / What is the preferred way to measure performance of an RN app? - shubh15

A: Systrace is a good tool to find bottlenecks in your code from local changes. For production performance, classic perf logging is probably the best way. It all depends on what you are trying to measure.


# Q: How is it to work at Facebook on the React Native team - what is your typical day like? - axemclion

A: I'm loving my time at Facebook. Getting to work on React Native which is so well used both internally and externally is a really amazing opportunity. Free breakfast doesn't hurt either. :stuck_out_tongue:


# Q: redux-sagas or redux-observables, which you prefer? - ronsuez

A: Why not state? :stuck_out_tongue: I've actually never used redux-sagas or redux-observables. So sorry, no good thoughts there.


# Q: Hello! Recently Facebook released React 16, and a complete new shiny web-site. Which is really nice. But React-Native lacks good site, and documentation feels auto-generated, not complete, and pretty meh overall. Can we expect some improvements in this aspect? Would be very nice to have something similar in quality to main React site, with introduction, guides, FAQ, and well documented API. - Checkmatez

A: We know that the React Native website is in need of some love. We have some plans to improve the ability for people to contribute. If there are specific things you think we can do better, please link to some github issues so we can track those pieces

Regarding React Native Docs: we're removing the autogenerated docs (component and api reference docs, which are generated from source files using react-docgen). The result will be a flat docs/ directory with all the markdown sources for our docs. You can see this in master already! Throughout this process I identified a bunch of apis that fell through the cracks with the old autogen docs. There's still a lot of work to do on the docs, but hopefully this will make it easier for the community to contribute without having to learn how our old autogenerated site worked. :smile:

  • hector

# Q: I’m a non-native dev developing an app that’s going to need to integrate an sdk without a react native port. This is a great learning opportunity for me in the short term but I’m curious if there are plans to make tools for integrating native SDKs easier for people without native experience. - Sylnir

A: The best way to help us know what needs to be improved is with github issues that define the problems you've been having and recommendations for how we could improve. We don't use many third party SDKs here at facebook so it is useful to have those pain points surfaced to us.


# Q: Do you see React-Native being a viable alternative to Java / Swift for Augmented Reality / 3D applications or what are the anticipated use-case limits? - Murray

A: I'm really excited about the React Native work happening as part of React VR. I have yet to use it, so my thoughts are in no way official from the React VR team. The way I think about where it will be great is similar to the tools to create different kinds of mobile apps. 3d games on mobile are written with engines very specifically meant for that use case. But React Native shines on a huge number of apps that have 2d interfaces with lots of interactive pieces. I think React VR is going to be similiar. React VR will make it incredibly easy to develop 2d panels for things like HUDs, menus, flat panel apps, etc. In fact, a lot of the new in 3d stuff coming out from Oculus like the store and home screen are written with React VR.


# Q: Do you think React Native will be used a lot more in mobile apps in a few years? - smokyboo

A: React Native seems to be growing immensely both internally and externally.


# Q: how do you think web assembly will influence react native? What's your opinion about web assembly in general? - Sear.Hamlin5

A: Re: web assembly, I haven't thought too deeply about this. I think web assembly could have a huge impact on JS for the web in the long term. I haven't thought much about the RN implications.


# Q: is there any plan to add more shadow props for android beside elevation? Cause I think only elevation is not enough - enakenak

A: I'm not familiar with the shadow props on android. Knowing the particular use cases would be necessary for the community of contributors to prioritize that


# Q: Why is the state of react-navigation so bad? Why Facebook declared it to be the official navigation library and has not received proper attention? There is even an issue questioning the overall state of the library. Please fix. This is has been the worst part of react-native so far. - debug

A: Re: Navigation. Sadly, Facebook engineers aren't able to contribute or provide thoughts about navigation approaches. I really wish we could. For general thoughts, native navigation approaches like Wix's and Airbnb's will give the best animation and user experience.

I personally think that react-navigation has good API - it also has the potential to support a "native driver", just like what happened to animations. I think overall, navigations using native are good for perf - thats what Wix and AirBnB are doing. - axemclion


# Q: how does future support for accessing native hardware such as Bluetooth, etc look? It is my understanding that NativeScript for instance has better support for this hardware and hopefully ReactJS will catch up in this area! - Deathstroke5467

A: Native functionality can be exposed with NativeModules following the guide that @axemclion linked to above. Exposing that functionality into React Native should be a pretty quick and easy way to get access to that functionality. If there are things missing in the core, feel free to write that native module and put it on github for others to use!


# Q: I'll be releasing an animation engine for the react-native to polyfill all the CSS animations and some other core stuff like WebWorkers for RN, just wondering whom I could contact for a code review before making a PR? - Yuriy Yarosh

A: Either just open a PR and ask for specific feedback or open an issue for us to talk about the approach and thoughts first. :smiley:


# Q: The react native docs, for eg say the FlatList docs aren't showing all the available props https://facebook.github.io/react-native/docs/flatlist.html#props in for new versions. Older docs show all the available props. Is that issue on your radar? - shubh15

A: As I mentioned above, we just removed the autogenerated docs on master. You can see the new version at https://github.com/facebook/react-native/blob/master/docs/flatlist.md. Please open an issue and tag me and I'll take a look at what's missing! - hector


# Q: on the topic of exposing native modules, are you guys going to improve the documentation to include swift and kotlin? also, are you going to improve the way it works (meaning, expose an auto serialization so we don't need to decompose objects into maps or writablearrays)? - rodrigoelp

A: If you have recommendations for how we can improve the documentation, please open a PR. Documentation PRs are amazing. :heart: :heart: :heart: :heart:

Re: auto serialization, that isn't something we currently have on our radar afaik, I'd be interested to know more how that would work. Perhaps you could propose something in a github issue?


# Q: any ETA on when RN & NPM 5 will get along? - fresh

A: I'm not sure how RN and NPM 5 don't get along. We use Yarn at FB so we probably don't run into those issues ourselves. There is no reason that I know of for why they shouldn't. Is there an issue for that?

Do you mean npm deleting modules after react-native init happens?

I think adding an npmshrinkwrap.json may be a possible fix.

  • axemclion

# Q: Is metro-bundler supporting symlinks documented anywhere aka stable? - blackxored

A: I am not familiar with much around metro-bundler but I know the people who work on it are very communicative on their repo!


# Q: Top 2 JS books that come to mind right away? - fresh

A: https://www.amazon.com/Patterns-Enterprise-Application-Architecture-Martin/dp/0321127420

When I was younger I bought that book (textbook) for some fun reading. It opened my eyes to so much of good strategies for organizing and connecting real code.


# Q: Hello, as someone new to React are there any resources you recommend? And any tips in terms of progression in programming. Thank you. - Journey

A: My absolute favorite intro to React tutorial is this one: https://chibicode.com/react-js-introduction-for-people-who-know-just-enough-jquery-to-get-by/


# Q: Hi, my question is about React Fiber internals. Given an old React component, it was possible (I think) to access the component's current instance. How would one do when given a React Fiber? Given that a Fiber has a one-to-one relationship to an instance, and yet is also a "unit of work", this seems a bit more complex, and yet still possible? I apologize if this question is rough, but I'm still struggling with the concepts so not sure if my vocab is right. - ezmiller

A: ---

# Q: What is this experimental feature for? i couldn't wrap my head around what it will improve or anything? https://github.com/facebook/react-native/blob/master/Libraries/Experimental/Incremental.js - shubh15

A: I've never seen that before and have no idea. Looks like it hasn't been touched since May 18th 2016. @sahrens was the one who wrote it, also on my team. Perhaps he could give some context.


# Q: React Native currently is very focused on iOS and Android, but I see a lot of potential for various other native platforms (like react-native-windows and react-native-ubuntu). The react native core allows platform developers to reuse the most if not all of the JS-side and implement just the native side through a message queue. My question: platform developers are sort of required to disover the correct messages to send across the bridge by reading the source code of an existing platform, implement as much as they can, and then wait until something breaks; are there any plans to document the core module messages/interfaces in order to make it easier to start new platforms? - Vincent

A: Enabling people to use React Native for more platforms is definitely something we are thinking about and want to support. It is a really hard technical problem. @axemclion is thinking about it a bunch.


# Q: I'm a current college student in the DC area, my ultimate goal is become a web developer, any tips on what you'd recommend for when trying to get into large companies such as Facebook? To make it clearer how would I a person that doesn't go to a top 15 cs school standout and prove that I'm a good fit for the company? - Preethesh

A: This is a hard question. If you go to a school where Facebook doesn't recruit it can feel quite challenging to know how to get yourself seen. Sadly, I don't have any magic bullets here, just the typical answers. Contribute to Facebook's open source projects and build a relationship with that team, or get internship experience at some other smaller companies that Facebook might think highly of. I'm sure our recruiting team would have much better answers for this. :confused:


# Q: how long until version 1.0? - Sylnir

A: We use RN for a bunch of stuff internally and almost every large company is using RN for something or another. It is very stable in that sense. We haven't put too much thought into an actual 1.0 cut but we are starting to try to figure out the implications now. @axemclion is working with some different companies to understand what RN going to a 1.0 would mean for them.


# Q: is react-perf-tools or something like it ever coming back, outside of the tooling that Facebook might have it seems like performance analysis for the rest of us it's more complicated than it should be IMHO? - blackxored

A: ---

# Q: trying to extend the Text component with more native functionality, we've run into issues that some parts of the RN native code base are not designed for extensibility, because of static inner classes and final methods and fields. Similar problems were found by others try to extend the built in WebView. Do you think this is a deliberate choice by the engineers making these parts and if not, are you open for PR's that restructure this code to make extension of core views easier? - bartol121

A: I doubt the engineers building those features purposefully meant to lock others out. More likely, they were trying to solve for the requirements they had at the time. Feel free to open a github issues with the problems you are having and how you'd like to see those things change to better support those use cases.


# Q: Is it possible to include in the initialization of a new project which language (javascript, flow, typescript) to use as well as updating the template for the projects (as it is using xcode 3.x, several years old)? - rodrigoelp

A: I haven't done any of the work in that area of the codebase and I'm not sure what is involved. Is there an issue tracking that problem already?


# Q: RN evolves in a rapid pace thanks to all of the (community) contributors and the monthly release cycle. I sometimes miss a clear sense of direction though. Are there any plans for a public RN roadmap and what's the primar - Tim

A: This is something we've heard. Better supporting the open source community and making sure that we properly communicate is one of @hector and @axemclion's main goals. Hopefully you can feel more confident in our direction and what is coming soon.