Microsoft React Native Windows Team
Transcript from Friday October 18th, 2019
Follow the team
- @Harini_Kannan (harinik)
- @EricRozell (rozele)
- @pag3rd (pag3)
- Andrew Coates (not on twitter) (acoates)
# Q: How do you plan to pitch the idea of React Native to existing Windows developers? – orta
A: Great question. I don't know that we're planning to 'pitch' RN to existing Windows developers per se, so much as ensure it's a really terrific and first-class way to develop apps for Windows, and let developers pick what works best for them where they're coming from.
– pag3
# Q: Hi guys! What's the masterplan for RNW? Merge it into react-native itself, so RNW comes out of the box with the react-native-cli? Or every time I would want to support Windows, I'll need to bring in RNW manually? – Hantar
A: The master plan is to be part of React Native in the same way iOS/Android are. Yes, we want to become part of react-native-cli out of the box etc., in the long term.
– harinik
# Q: Do you guys use only TypeScript or plain old JavaScript for complete projects? – JustEscaped
A: Internally we use mostly TypeScript.
– rozele
# Q: Why not use Silverlight? Why move to React? – Ahmed
A: We have a lot of .NET/C# offerings for cross-platform like Xamarin. We are trying to go where developers are and participating in the React world helps us bring our native Windows stack to the web development community in addition.
– harinik
# Q: Does Hermes seem like a good fit for RNW? – Jeremy
A: Yes we have it running internally and hope to have it available in the public builds as an option soon.
– acoates
# Q: Why is Microsoft using React Native (Windows) for their applications? Hasn't Microsoft invested in Universal Windows Platform for a long time as a cross platform application framework? Microsoft also has Xamarin, right? What has been special about React Native vs these others? Also, hi! 😄 – EliWhite
A: As you can imagine, a large company like Microsoft (and Facebook I'm sure, too) uses many different technologies to build our apps and experiences. React Native has taken on a lot of momentum lately because it hits a real sweet spot for teams that have a lot of JavaScript experience and want to enjoy the benefits of agile, web-like development model yet be able to achieve highly polished native experiences for their customers, especially as Microsoft focuses on bringing our experiences across the entire "Intelligent Edge" (as Satya calls it).
– pag3
# Q: What other tools and frameworks do you guys use? – JustEscaped
A: Microsoft is a big place, across all of our teams, probably all of them 🙂.
– rozele
# Q: Will you be supporting react-native-navigation by Wix. They're the only one with native navigation. And how is Microsoft planning to catch up/integrate with other current existing libraries for RN? – Hantar
A: We would like to, hearing a lot of chatter about this module. We have it in our backlog (https://github.com/microsoft/react-native-windows/issues/2546) to add support for.
– harinik
# Q: Could you tell me what advantages could RNW have over Electron? – humarkx
A: RNW uses much less memory than Electron, and should generally be more performant. And the UI is fully native so you can take full advantage of the native platform including the acrylic effect that you see in a lot of Windows UI. It can be embedded in existing native apps. And it can use existing native controls.
– acoates
# Q: What possibilities for RNWindows are you most excited about React Native "Fabric" opening up? – empyrical
A: Component libraries, theming and other high value controls/utilities. React Native "Fabric" really helps us round out offerings in this space not limited to the core.
– harinik
# Q: Hi, do you guys have some plans for doing such thing for other desktop platforms? Or you will leave this for other guys not from Microsoft? 🙂 – Alexandrit_T
A: We have the beginnings of a react-native-macOS started. We are focusing on Windows for now. Would love to hear if supporting macOS would be interesting to the community as a broader "desktop" target.
– harinik
# Q: When can we expect parity with iOS. We have a RN application, and some big customers are not willing to buy iPads in their stores, its too big of an investment. We need to port the application quickly to desktop/Windows. What do you recommend? – Christian Mokbel
A: We're very close to "lean core" parity in React Native for Windows and expect to be there this quarter! In terms of the ecosystem of community modules that people use we're starting to engage in ensuring more and more of those have React Native for Windows built-in by default. We welcome feedback or asks on specific community ecosystem modules you'd like to see us prioritize.
– pag3
# Q: What are the limitations of React Native Windows? When it is not recommended for Windows development? Do we need to use Visual Studio for it or is VS Code enough? – gamingumar
A: -- We are building some full enterprise level apps with RNW, so there are not too many limitations. One of the great things about React Native is that you can always add additional nativemodule and native controls. -- So there are not many limitations. As far as the base platform is concerned we are filling out the core functionality as required for our needs, so it should get filled in pretty quick.
– acoates
At this time you will need VS as well. We are trying to improve the developer experience to see if we can enable just VS Code.
– harinik
# Q: Which products are using React Native Windows at Microsoft? – EliWhite
A: Several apps and experiences in Office (Outlook, Mail, Calendar, Word, Excel, Powerpoint) are using React Native for Windows. There are a lot more coming up soon. 🤐 😉
– harinik
# Q: Will RNWindows continue to support WPF? – empyrical
A: Our teams in Microsoft have always depended on community contributors for WPF support, and we had some tremendous partners at BlueJeans to create and maintain that offering in the solution. Moving forward, we hope that XAML Islands will address the needs of WPF users.
– rozele
# Q: Are the Microsoft apps you mentioned are fully(or mostly) using React Native Windows or is it part of it? – Alireza Ghamkhar
A: Some of both. We have some apps which we are looking at complete UI rewrites, but we also have embedded scenarios within some apps. -- That's the beauty of the flexibility of RN.
– acoates
# Q: How are you guys able to keep up with the in terms of release cycles? It seems that you guys are pretty fast to catch up! How many people are working on this project? – Hantar
A: It's an effort - and does take a lot of work. But its important both for the community, and so that we are up to date enough to be able to contribute back to RN. We have a dedicated team working on RNW, and also since we have so many teams using the platform we also get some help from app teams too. There are probably around 30 people who work on RNW.
– acoates
# Q: I am using React Native Windows for WPF app currently. With new vnext changes, WPF will not be supported, then what options I have? – godpranay
A: There is an example in the vnext repo that shows how to consume react-native-windows@vnext in WPF through XAML Islands. Check it out! https://github.com/microsoft/react-native-windows-samples/tree/master/samples/TodosFeed
– rozele
# Q: Why do you rewrite your apps with RNW? Isn't it less performant? – Дикийборщ
A: React Native for Windows layers on top of the modern, hardware-accelerated Windows UI ("WinUI") stack and in many cases it's runtime performance and experience is superior to that of how apps were previously written using older generation UI technologies. In addition, using React Native for Windows makes it more sustainable to deliver coherent experiences across native client platforms and the web as code can be shared and updated with greater agility.
– pag3
# Q: Where can we share all the dependencies that we would want ported to RNW? – Christian Mokbel
A: Great question! We are tracking several that we know of in our repo (see Extensions project- https://github.com/microsoft/react-native-windows/projects/6) If you can file new issues for dependencies you would like to see supported, that would be great!
– harinik
# Q: When will vnext become the "current" version? It seems like it is significantly better and faster! – EliWhite
A: 😃 Very soon. We plan to have most API parity with react-native and native modules/view manager authoring stories at par with the "current" version before the end of the year at which time vnext will replace current. You can see our prospective roadmap here - https://github.com/microsoft/react-native-windows/blob/master/blog/Roadmap2019.md.
– harinik
# Q: We've heard before with WPF, Silverlight, WinRT, and UWP, that support would continue, how can we trust this time Microsoft is fully invested in RNW? – Mark "Elsewhere" Lynch
A: You missed WinJS. 😉 All kidding aside, I think a general rule of thumb in trusting whether any given technology company is going to support a technology long term and how durable it is for you to build on: are they eating their own dogfood and using it themselves? If so, it makes it harder for them to abandon it without incurring the cost of rewriting their own experiences. So instead of listening to what companies and their marketing say, see what they do.
I think you can look at the list of technologies you mentioned and think about which ones has Microsoft actually used to build their own key experiences and which ones were primarily marketed to third party developers but not really used by Microsoft itself. WinRT/UWP are good examples of technologies that Microsoft has deeply invested in building the Windows, Xbox, and tons of app experiences on top of so it'd be quite an expensive and complex undertaking for Microsoft not to continue to invest in those. React Native for Windows layers on top of that whole technology stack and you can see some of the experiences we've already talked about building using that.
– pag3
# Q: With vnext RNW, to customize UI Component or write my own native UI component, I will have to know C++. Is it correct? – godpranay
A: No; We wrote the core of RNW in C++ for the best performance, but we plan to fully support writing native modules or native views in C# or C++. -- Community modules will likely want to be in C++ so that you dont require other apps to load the CLR. We are just starting to get examples of custom native modules and view managers in the repo.
– acoates
# Q: What changes in React Native are you most excited about and why? – EliWhite
A: Hermes is a big one - we all like better perf. Turbo modules is probably next, and we hope that will allow our native modules story to better align with the rest of the platforms in the future (as well as the obvious perf improvements). And then finally fabric is exciting, for basically the same reasons as people want it for the other platforms.
– acoates
# Q: How does this project relate to ReactXP? – metamarcdw
A: ReactXP is a layer on top of ReactNative to try to get a more write once experience when targeting multiple platforms. ReactXP should work on top of react-native-windows.
– acoates
ReactXP is an abstraction layer over react-native and react-dom to enable you to write common UI code for either Web clients or React Native clients, including react-native-windows!
– rozele
# Q: What's the debugging story like between managed .NET code and Javascript code? Assuming there is some interop layer, does a developer have to have two debugger instances attached to see how data is flowing between the two? – dustinsoftware
A: You would indeed need two debugger instances, my typical debugging work flow is to launch the app from Visual Studio in debug mode to debug native behaviors and spin up VS Code to attach to the JS runtime. Often I'm debugging either one or the other, so it's rare that I'm actually debugging both, but nothing would stop me from doing that.
– rozele
# Q: Are there any community uses of RNW you'd like to give a shoutout? – empyrical
A: BlueJeans was a tremendous partner and early adopter, and even though they only originally targeted WPF, they always tried to ensure their contributions moved the needle for both UWP and WPF.
We've also received some great issues and feedback from teams at Axsy, apparel21, and I'm sure a number of other companies and individual contributors that I'm forgetting (and I'm so sorry 🙂).
In terms of react-native community members that helped us along the way that we'd love to call out: our friends at Facebook have been tremendously supportive, and community members like @grabbou and his work to enable third-party integrations in the CLI (as well as rapidly shipping bug fixes when we needed them) have been invaluable as well.
– rozele
# Q: Any plans to rebuild Skype for Windows using RNW (instead of Electron)? – shergin
A: Don't know the answer to this, sorry.
– harinik
# Q: Do you think VSCode, or even full VS itself might see some pieces of RNWindows in it in the future? – empyrical
A: Unfortunately one of the issues with Atom/Electron is that its hard to mix in native UI. So it would be hard for VSCode to start using RNWindows. I dont know of any current plans for full VS to use RNW, but I can think of some shared experiences that are starting to use RNW which might eventually make it there.
– acoates
# Q: My Windows app is WPF app and supports Windows 7, and we are using RNW 0.57. Will we be able to upgrade to 0.60 and beyond as RNW is re-written? – godpranay
A: We are not investing in the WPF implementation at this time. As @rozele mentioned earlier, the way forward would be to use RNW vNext + XamlIslands for WPF apps. Here is an example of how to do this - https://github.com/microsoft/react-native-windows-samples/tree/master/samples/TodosFeed.
– harinik
# Q: Is there a feature you would like to see in RN core that might make things easier for RNWindows? – empyrical
A: Lean core helps, long term I'd love if we could get more of the RN core code to be in CxxCommon, as shared C++ code rather than having separate code for android, ios and windows (and other platforms). Fabric probably helps with this. I'd like it if more of the instance management stuff could get there too.
– acoates
We have several proposals our team members have put up on https://github.com/react-native-community/discussions-and-proposals for features we've brought to React Native Windows that we think would make sense to bring to RN core including around accessibility, keyboarding, light/dark theme, etc. Our intention is to work with the community to bring our knowledge/expertise to RN core and make it better for everyone.
For examples see https://github.com/react-native-community/discussions-and-proposals/pull/146 and https://github.com/microsoft/react-native-windows-specs/blob/harinikmsft-keyboardapis/proposals/0000-keyboard-apis.md.
– pag3
# Q: Hey guys will we have any native file system API? – Reacted Boy
A: There is a popular community module for fs (https://github.com/itinance/react-native-fs) and also an Expo module (https://docs.expo.io/versions/latest/sdk/filesystem/). We would love to have these supported for Windows as well. May not be able to get to everything ourselves, would love the community's help!
– harinik
# Q: What are the best RNW example apps to take a look at? – humarkx
A: Check out https://github.com/microsoft/react-native-windows-samples!
– rozele
# Q: Is React Native coming on Windows 10 also? Didn't know. – Reacted Boy
A: 😃 Now you know!
– harinik
# Q: What's the security model like? As in, can JavaScript dependencies be run in some sort of hardened context so that a third party dependency could not overwrite things like String.prototype? Are there any restrictions on the JS context (the thread that runs v8 or whatever) so that it can't access private native or managed APIs (such as spawning a process or writing to an arbitrary file...)? – dustinsoftware
A: The JS code can generally only call APIs that are exposed through native modules. The native modules run as part of your apps process, so generally the security model is the same as any other app. Third party JS code runs in the same JS engine instance as the rest of your code, so in that respect its trusted as much as the rest of your app. -- Which is generally the case with any OSS / 3rd party code you use in an app. -- This the same as RN on Android and iOS.
– acoates
# Q: What technology is used for Microsoft Teams implementation? – godpranay
A: Teams uses several technologies including React Native in some scenarios.
– harinik
# Q: So can all of the React Native apps be converted into Windows 10 apps? – Reacted Boy
A: It depends - if you're using a lot of third-party modules with platform-specific code, then you might need to do a bit of work to get things up and running on Windows 10. If you're mostly just using lean core modules, you shouldn't have any problems!
– rozele
# Q: Does React Native for Windows only let you reach desktop computers? What about Xbox and HoloLens? – EliWhite
A: Really good question. Since React Native for Windows layers on top of UWP/WinUI it actually lets you reach not just Windows PCs but also XBox, HoloLens, Surface Hubs, the (newly announced) Surface Neo etc. Since the native platform has built in support for using things like game controller (on Xbox) and gaze (on HoloLens) and so forth, you get those behaviors and capabilities for free using React Native for Windows.
– pag3
# Q: This is so cool. Is there even a platform where you can't use React Native now after this? – KremBanan
A: There is a Mac and a Linux version as well 😉. Anywhere you can run JS, you should be able to run RN.
– harinik
# Q: Are there any apps made which we can test? – Reacted Boy
A: We have published a couple of samples here - https://github.com/microsoft/react-native-windows-samples/tree/master/samples with more to come.
– harinik
# Q: How do you guys at Microsoft handle performance? Is there any kind of specific steps you do? – KnivesQ
A: That's a big question. Much of the answer is going to be similar to RN on other platforms. there was a good talk by Ram at chain react for some basic steps. On the platform we are looking at how to make the primitive components as fast as possible, as well as working with the Hermes team to optimize Hermes for windows. We also have the advantage of the fact that the primary team owning RNW also owns the native UI platform, so we are looking at what changes can be made in the native UI platform to make RNW even faster.
– acoates