React Native Radio

RNR 267 - React Native Windows With Chiara Mooney

Episode Summary

Chiara Mooney joins Jamon and Mazen to talk all about how React Native for Windows is helping Microsoft build Microsoft Office.

Episode Notes

Chiara Mooney joins Jamon and Mazen to talk all about how React Native for Windows is helping Microsoft build Microsoft Office.

This episode is brought to you by Infinite Red! Infinite Red is a premier React Native design and development agency located in the USA. With five years of React Native experience and deep roots in the React Native community (hosts of Chain React and the React Native Newsletter), Infinite Red is the best choice for your next React Native app.

Helpful Links:

  1. RNR237—React Native on Desktop
  2. React Native for Windows 
  3. Official tutorials
  4. Twitter thread by MSFT React Native
  5. Adding Jest Snapshot Testing to React Native Windows Apps
  6. RN Gallery

Connect With Us!

Episode Transcription

Todd Werth:

Welcome back to React Native Radio Podcast, brought to you by politics. Have too many friends? Give politics a try. Episode 267, React Native Windows with Chiara Mooney. 

Jamon Holmgren:

Mazen, I was wondering if you have ever had a bad job interview. By the way, if it was my interview with you when you applied to Infinite Red, please don't hold back, just roast me. It's totally cool.

Mazen Chami:

How do I put this nicely? You had to drop out of our interview because of a dentist appointment, if I remember correctly. We were in the middle of talking, and you were like, "Wait, hold on. I need to go," and you just bounced. Other than that, I would say-

Jamon Holmgren:

That totally sounds like me, and I feel shame over that. I should be more aware of my calendar than I usually am. It's unfortunate. It's just how I am. But I will say, didn't you have to bounce from an interview as well, a different interview with Infinite Red?

Mazen Chami:

Here we go. Yes, I did for other reasons. I was sitting... One of the rounds is a pair programming interview with a developer, Yulian, on the team. Maybe five minutes in, I just hear sirens going off. I live really close to Duke University, and you can hear their sirens. My reason was because there was a hurricane coming through town, so I had to get to the basement. So similar reason I guess. But, yes, I had to bounce and then I pinged him an hour-

Jamon Holmgren:

Hurricane, dentist appointment.

Mazen Chami:

I pinged him an hour later. I was like, "All right, all clear, we can leave the basement. Are you still free?" So it worked out. But to answer your question-

Jamon Holmgren:

That is funny.

Mazen Chami:

... I have had my fair share of bad interviews. I won't go into too much detail because it's, I guess, close to... Yeah, it was bad. I think one big thing with some of the bad interviews I've had is a lot of off topic interview discussions and stuff. So one thing I'll talk about is an interview was, this was kind of early on, I wasn't sure if I wanted to be a full developer or like a PM/connect the dev teams to the product teams. I was being asked, in that role of PM has to do these crazy, crazy computational coding things. I'm like, "Hold on, isn't this for a PM job?" They're like, "Yeah, but we need to know you understand the technical part very deep." I was like, "Okay, sure. If that's how you want to roll, I'll do it, but that's not my strength. I clearly mentioned that I'm coming here to do the linking part, not the coding part."

I think the nice thing about the Infinite Red interview was it was focused on the personality connection and making sure that the right person's there for the job. Then at the same time, every pairing interview I had with you, I had with Yulian, even with Gant, Gant was just more talking about how I would tackle a problem. It was React Native focused and specific to what I do today on a daily basis. So I think, all you bad interviewees out there, focus on that next time.

Jamon Holmgren:

I've been doing this on my own for so long, almost 18 years now, that I barely remember the interviews I had back in the day. They weren't tech interviews because I got into the tech industry by starting a company. So it was very different. I've never had a tech interview. I've just heard many bad stories about tech interviews. It feels like everybody has them. There's interviewers who have something to prove, want to show they're better than you, or they... I don't know. It's a epidemic within the software industry for some reason.

We definitely have tried to take a different tack. In fact, my take home, which I think you did, it wasn't actually very good. It was partially just because I hadn't spent the time to really make it good. But also because I don't do React Native as my job. I lead a team. I don't do it every day. So me putting together a take home is probably not the best. So I actually asked Robin and Yulian, who you mentioned, to lead an initiative to make a new take home. We also had someone who recently joined help craft that. So they had recently been through interviews, so it was helpful to have that perspective. I just saw this morning a new version of what they came up with, and it's so much better-

Mazen Chami:

Yeah, it is.

Jamon Holmgren:

... so much better.

Mazen Chami:

I'll take a look at it. I think if you're giving these complex algorithms for junior developers right off the gate, I think you're missing the mark. Because for the junior, it's almost disheartening I guess is the word because they see this crazy algorithm. Your first intro is a crazy algorithm and they're like, "Whoa, hold on. I didn't do this in college. What?" Juniors are usually hired to do the simple stuff. Then you mentor them and teach them and build them up to that algorithm eventually if you are even doing that algorithm in the first place.

Jamon Holmgren:

Well, we need to move along just in case I have a dentist appointment I don't know about, so I'm going to move forward. I'm Jamon Holmgren, your host and friendly CTO of Infinite Red. I live in the beautiful Pacific Northwest with my wife and four kids. I play rec hockey. I actually played three nights in a row. Boy, I'm sore. I don't normally do that. I'm joined today by my cordial co-host, Mazen, as well as our guest, Chiara Mooney. I will introduce her in a second. Mazen Chami lives in Durham, North Carolina, with his wife and baby boy. He's a former pro soccer player and coach and is a senior React Native engineer here at Infinite Red. Chiara, first off, your name is going to trip me up because my wife's name is Chyra, and I have a niece-

Chiara Mooney:

That is totally okay.

Jamon Holmgren:

I have a niece name Kiara.

Mazen Chami:

Oh, wow.

Jamon Holmgren:

So the Chiara thing might throw me off. If I accidentally call you the wrong name, I will try to fix it.

Chiara Mooney:

No worries.

Jamon Holmgren:

You're making it hard on me.

Chiara Mooney:

I'm well used to it. There's lots of different variations and things like that, so no harm.

Jamon Holmgren:

Well, Chyra gets all kinds of things because it's C-H-Y-R-A, so it's like Chira, Crya, all kinds of weird permutations of it. Chiara is a software engineer, too, at Microsoft. She is skilled in Python, C++, JavaScript, React Native, Windows development. She's done public speaking into leadership. She has a computer science degree from UCLA. I've known Chiara for a little while now working in open source with the React Native WebView, which is kind of fun. We'll probably talk about that at some point during the podcast. Welcome to the podcast, Chiara.

Chiara Mooney:

Thank you. Thank you so much for having me. Excited to be here.

Jamon Holmgren:

Let's get into our topic, building Microsoft office with React Native for Windows. I really appreciate Chiara coming on to talk about this. Robin and Mazen actually did an episode on React Native on desktop. This was RNR 237. This was in the past. Robin had tackled the Windows side of things while Mazen talked more about the Mac OS side. I know Microsoft is maintaining both. Now, Chiara, before we get into that, give us your background. You went to UCLA. How'd you get into coding and whatnot?

Chiara Mooney:

Yeah, absolutely. My dad did his undergrad in CS, then went on to do the academia route, and he teaches information systems. So tech has kind of always been sprinkled in around my childhood, but I never really thought about getting into coding or tech myself. I feel like I didn't see a lot of people that were like me and had similar interests to me in the field. So it didn't really cross my brain.

Then in high school, my math teacher was also the CS teacher. He pulled me and some of my other female students aside one day and essentially was like, "I think that you guys should really give this a go. I think you'll like coding. I think it's one year. You can see if maybe this is something you would want to do. Otherwise, I think you're going to excel in the class." We all looked at each other and said, "All right, it's our senior year of high school. Sounds good. We'll try something new." And I ended up really liking it. The class was super unstructured. We worked on making video games. We learned all of the concepts on the fly. I ended up applying to college in engineering programs because of it.

When I got to UCLA, didn't really know exactly what kind of engineering I wanted to do. Bounced around between civil engineering and bioengineering and then finally landed back to CS and have been super happy with it ever since. That's my journey to coding. I got hired by Microsoft straight out of college and have been here for about two and a half years now.

Jamon Holmgren:

Fantastic. So you ended up at Microsoft. Did you jump right into React Native for Windows right away, or were you working on anything else before that?

Chiara Mooney:

I jumped into React Native Windows right away. That was the team that I got placed out of.

Jamon Holmgren:

Very cool.

Mazen Chami:

Other than React Native for Windows, you mentioned you work with React Native WebView-

Chiara Mooney:

Mm-hmm.

Mazen Chami:

... with Jamon in the past. Can you talk a little bit, as you started in Microsoft, how did you get focused in those and what you've been doing with those packages?

Chiara Mooney:

Yeah, absolutely. When I started, I think there was definitely a ramp up period, and so most of my work was focused on the React Native Windows platform itself and doing bug fixes and bits and pieces like that. I think at the time that I joined the company, React Native Windows was in a place of really trying to figure out what was our story with the community and especially with community modules. We had contributed to a couple of the big ones like checkbox and DayPicker. I think we had an initial WebView implementation. But we were also having conversations about, how do we support these things in the long term? Is the community going to engage to support them? So there was a little bit of space for me to slide into and trying to figure out what some of those bits and pieces were.

As a result of that, I think I've kind of stepped into the WebView module a little bit more. We added support to it. I think it's nice to have a point person who has a Windows background on some of those modules to make sure that they stay up to date and things like that. Then we've also done a good bit of work in creating a React Native Gallery app, which showcases what are our third-party community module offerings that have Windows support. I was kind of a part of the effort of building out that app and getting it into the store. So I've kept going in the community module space.

Mazen Chami:

That's awesome. I think we got to look at the Gallery app prior to this podcast. It's pretty cool that you're highlighting everything that's possible in the Windows world. For someone who used to be a Windows exclusive user until I was kind of forced into the Mac world and haven't looked back since, it's kind of hard to go back to Windows. I've forgotten a lot of that stuff. But it's also nice to just see that, even though it's a different environment and there are different requirements and things work differently there, are you guys exclusively using React Native for everything? Because it sounds like Office is now built in React Native. What's happening there?

Chiara Mooney:

Great question. It's definitely not exclusively using React Native. Microsoft obviously has a lot of code in a lot of spaces. There's a lot of things that have been built previously. For Office itself, I think they're in a process right now where they are trying to migrate to have more and more surfaces use React Native Windows. But because you're working with an app that is so large and has so many features, there's a slow process in transitioning all of those components. So in Office, you can see things like the commenting feature is built in React Native or the persona coin profile image is React Native. And there's more and more of those things popping up. We're also seeing projects pop up in Windows OS shell itself that are making use of React Native. But there's a lot of code here. It's a gradual process. I don't think it's been a situation of drop everything in the past and switch onto this new boat.

Mazen Chami:

Awesome. How is it working in an Apple dominant community? You're Windows. You're coming from that background. How has that been?

Chiara Mooney:

I think it's an interesting space to be in, and I think we're kind of seeing two sides of the situation. So for our internal customers, many of them are coming from a Windows development background. So they're onboarding into React Native and React Native Windows, but oftentimes less for the desire of the cross-plat element and more because they like the development inner loop that comes with React Native. So for those customers, we're not as much seeing the... We're a fish out of water in some ways in this Apple dominated ecosystem because everybody is already using Windows computers for the most part internally.

When we go to look at our third-party partners and partners in the community, if you're someone that had a previous React Native app, most likely you are using an Apple device because that's going to enable you to target iOS and Android and all of those things. I think there's something to navigate there. I think in the last couple of years we've been in a state of mind of let's see how the community moves. Do people have access to Windows devices and could use them to test separately? What does it mean to add Windows support to these modules that aren't used to needing to build on this platform and target this platform? So I think we've been in a bit of an observation stage of seeing what people adopt and what they don't want to adopt rather than coming in and saying, "All right, everybody, go try to use Windows." That's not necessarily going to be a great path forward.

Jamon Holmgren:

You said something really interesting there, Chiara, where you said that... Because I think there's this narrative that React Native is primarily used because it's cross-platform, which is mostly true. But you're the second developer that I've heard say this where the cross-platform wasn't even the top concern here. It was that the developer experience was better. The other person was talking about iOS. They said that this was a high level... This was someone who was one of the top maintainers of CocoaPods. This is a high-level iOS native developer who said that they switched to React Native for iOS, didn't even do Android, literally just for iOS because the experience was better. So that's really fascinating to me because there's, to some degree, somewhat accurate perception that React Native's main advantage is that it's cross-platform. From a business perspective, that's definitely true. What we don't normally hear is that the developer experience is better, but now I'm starting to hear that more often.

Chiara Mooney:

Yeah, absolutely. I had a similar reaction when we were first talking with customers internally. They were saying, "No, no, we have no desire for cross-plat. We really just want this development experience." But it really is a huge pull for a lot of our customers. We do have customers internally that are interested in cross-plat. But when we consider customers that are within the Windows shell, Windows is not going to be on a different operating system because it is Windows. So there really is a pull for Fast Refresh and all of those kind of other things.

Jamon Holmgren:

What's your relationship with Meta like and the React Native Core team? I know that I see Microsoft developers, for example, Lorenzo, known as Kelset in the community, basically I'm seeing Microsoft and Meta engineers working together on this open source constantly. Can you describe it from your perspective?

Chiara Mooney:

Yeah, absolutely. I'd say in my time working on the project, there has been a really solid bit of collaboration. As you mentioned, Lorenzo is one of the main drivers of React Native releases, not just React Native Windows releases, but React Native releases. We have syncs with the React Native team and lots of the people at Meta working on this product weekly to check in on how things are going and what breaking changes are going to come in. I think the flow of communication there is one in which if we have feedback on the platform or what have been our pain points in building a platform out of tree and what our customers saying are pain points as they're upgrading and using React Native and things like that, I think they're super receptive to what are our bits of feedback, what is our input. At the end of the day, Meta owns React Native, and so we're not co-owners of the platform, so there's decision making that comes downstream to us from Meta, for sure. But so far there's strong flow of communication there, and we sync pretty regularly, which is great.

Jamon Holmgren:

I see really Microsoft's involvement with React Native as a tremendously strong signal for its long-term viability. If it was just Meta, I think that I would be a little bit worried about that or if it was just Meta and much of a lot smaller players. Like we're small. Infinite Red's 30-ish people. We have some influence. They've given us a seat at the table in a way that we are very grateful for, and we are involved in the release meetings. We're one of the React Native partners. But at the end of the day, it's hard to beat having one of the biggest companies in the world on our side. They're kind of advocating for non-Meta use cases for React Native. I think that that's something that I've really appreciated the Microsoft involvement from.

Mazen Chami:

Adding on what you said, Jamon, I think a lot of people will say, "React Native is not mature or whatever. It's not 1.0." People get hung up on the whole 1.0 business. That aside, you have companies like Facebook who have... Sorry, Meta. Their products are Facebook, Instagram, WhatsApp. Those aren't going anywhere anytime soon, so React Native needs to stick around with all the OS updates that needs to happen. Then now Microsoft, all this investment in BackOS, Windows, you can even apparently build apps for Xbox. That's a lot of investment. If you would say Microsoft's investing in it short term, they're going to change, eventually go somewhere else, that's a big investment for any company of any size to go into and then decide to drop on a dime and turn and do something else. So there is a long-term future, and people should come along for the ride because it's exciting. Hopefully, we get an Xbox... Although, I'm a PlayStation, sorry. Hopefully, we get an Xbox client coming in soon.

Jamon Holmgren:

I have an Xbox.

Mazen Chami:

That would be great. There's a lot of cool products like that for us tech nerds to get to work with in any sort of platform.

Chiara Mooney:

Yeah, absolutely. There's already Xbox products out and shipping that are using RW, which is super exciting. But I think we absolutely acknowledge we're in a position at Microsoft of being a big name and a big company and our voice here and what we express here and advocate for really matters. I think it's interesting to be a big player but also still a part of the community that is outside of Meta and is outside of the rooms where we're adding features to Core and all that kind of stuff. Everyone's in a similar boat, which is interesting.

Jamon Holmgren:

Let's move into the nuts and bolts of this a little bit. I think I speak for probably a lot of our listeners when I say we're curious about... Let's say I have a React Native app. It's iOS and Android kind of traditional platforms for React Native. There is a use case where maybe having a Windows app makes sense within the type of workflow that my app does. So I go to investigate this. Can I just reuse my code base? Is it just a matter of dropping in React Native Windows? If not, what kind of changes and how much work would it be to make it compatible with React Native Windows and Windows desktop in general?

Chiara Mooney:

Great question. I think it really depends on the app that you've already built. I think React Native Windows is in a stage right now where we have API support that is super solid. So, at least for things that are in the Core platform, the majority of things that you would like to use within your app, we have supported, at least in Paper. Fabric is in progress. In terms of third-party community module support, I think that's where you can run into some more situations of, if you're using particular modules in your app, they may not have Windows support as of now. So that can create some difference in the code and things that you need to edit when you go to add Windows as a target.

I think another thing to consider is that you're not only moving to add a different operating system, a different target, but you're also moving from mobile to desktop. So at least layout-wise, UI-wise, there are going to be changes in look and feel that you're probably going to want to make in moving from a vertical phone dimension layout to more of a horizontal desktop setup. You're also going to have a change in input from typically more touch-based input into mouse and keyboarding and things like that. So what we've generally seen is that there is a little bit of rejigging and customization that's needed in going from mobile to desktop. But I think the hope is that once you've done that layout adjustment, what should be in Windows can transfer pretty heavily into Mac OS because those are going to have super similar layout decisions and things like that. But API support-wise, at least within Core, what comes out of box with React Native, you should see most of that coming through with React Native Windows, which is really great.

Mazen Chami:

A little bit deeper, and let's use some of the open source packages out there, can I use the typical React Navigation, Redux, Reanimated, Firebase, MST? Can I use that familiar Navigation or even state management tools that are out there?

Chiara Mooney:

React Navigation definitely has support. For the other ones, I don't believe that we've gone in and added Windows support on our end to those yet. I think we'd love to see it, but it comes based on internal demand, third-party demand, and things like that. So Navigation, yes. The other ones, not yet.

Mazen Chami:

I was thinking about it while I was saying the question because the more I... Again, coming from a Mac side, I think it probably applies on the Windows side, a lot of Mac or Windows apps don't necessarily have Navigation. Now the navigation might just be a left tab bar, let's say. One that's coming to mind right now is Slab, for example, has a left tab bar, and when you click on it just renders. You could probably accomplish that without a React Navigation type deal. So I don't think a lot of apps have... I could be wrong, correct me if I'm wrong. A lot of desktop apps don't have necessarily Navigation like we think about in a phone, adding something to the stack.

Chiara Mooney:

I definitely think there are some differences there. I know a lot of the Windows standard is to have that left bar menu. So once you have something that's React Navigation Drawer-like, you're pretty much set to go. We also have done a lot of work, given that we're having customers that are coming from a Windows development environment, we have a lot of pathways to enable, how can you use...? There's a really popular library called WinUI. How can we add those controls and make them available through React Native Windows? They have a Navigation view as well, which is very similar to that kind of sidebar menu tabbed view.

Mazen Chami:

Is there support for Expo?

Chiara Mooney:

No, there's not. I love Expo. Especially for me when I was a university student in using React Native for the first time, it was super helpful to get ramped up on React Native and understand the components and learn the platform. But at this time we don't. I think our team would love to see Windows integration into Expo. But those conversations take time, and there's a huge input of effort and things like that. So not at this point.

Jamon Holmgren:

One of the biggest challenges, I think, that's in front of React Native in general, the whole community and the Core team and everybody is this new architecture that's coming along. You mentioned Fabric and Paper, Fabric, of course, being new rendering engine for the new architecture. I know you're in progress upgrading React Native Windows to the new architecture, Fabric, Turbo Modules, Hermes, JSI, Codegen. These are all features that Core React Native experience is going to be defined by going forward. Can you talk a bit about that process? How it's gone? Also, I'd love to hear, is Microsoft going to see some benefit from that? Do you see these architectural changes making a difference not just on iOS and Android but on the Windows platform?

Chiara Mooney:

Fabric is in progress. We've managed to say super up to date with React Native at this point in time when it comes to Paper. I think Fabric on our end took a little bit more time to take a step back and say, we have a chance to re-architect things here. When we originally built the platform, and as I mentioned in the last question, we used the WinUI library as a way to add Native visuals to the platform. Is that still the step forward we want to take? Is that the right way to go about things? Office is one of our biggest customers, and they don't use WinUI for the most part in their products. So there's lots of decisions with how we want to move forward in the platform. We have a plan now. I think we're in the progress of starting to tackle all of those elements. We've pretty much worked our way through most of the Core components, and now we're talking about, what does it look like to add accessibility and navigation and all of these kind of additional layers?

I think customer-wise, what is the interest of our customers, and are they excited about Fabric? I think people are definitely excited about using Hermes. Right now on Windows Chakra is still the default we're using towards Hermes being enabled as the default, but we do have some customers that have already migrated onto Hermes because they want to be able to use that. I think otherwise, Fabric-wise, because we have a chance to wipe the slate clean and restart, it's going to allow us to reduce a little bit of code forking to help different customers across Microsoft. They all have super specific needs. I think the hope in Fabric is that we can build one solution with a little bit more overlapping code than having to customize for different partners, I think, is the biggest vision. What elements of Fabric will benefit customers? I think we're still figuring it out. There's View Flattening bits. Maybe there's performance bits. Obviously, you have all of the kind of React 18 features that are now becoming available. There's those things, of course, but I think to be determined on the exact impact.

Jamon Holmgren:

That's kind of across the whole new architecture, I think. That's a to-be-determined thing. I've been having some conversations with Rick Hanlon at Meta who is handling a lot of, I guess you would say, the messaging around it. It's a tough problem because it's something that certainly companies at Meta scale and probably Microsoft can see certain benefits to this, but is maybe a little harder to explain to someone who just wants to spin up a new app from scratch. So that is a challenge in front of us.

Let's talk really quickly about React Native WebView. I was part of the process of extracting that from the React Native Core, which was actually kind of fun pulling that out and untangling those bits and pieces. I actually enjoyed that quite a lot. Initially, my goal was to support Windows out of the box. I was working on, of course, getting the iOS and Android parts working really well, but then I ran out of time and so I just sort of left it off, "Okay, well, maybe someday." Then Microsoft comes in and is just like, "Hey, here you go. It's done. We'll do this. We got this." It was pretty fantastic. But if you're talking to maybe other React Native library maintainers who currently maintain iOS and Android, and we're talking Native code, we're not talking about JS-only libraries, how hard is it to add Windows support to what we're talking about here? Is this a pretty monumental task, or is it something where it's pretty achievable?

Chiara Mooney:

I think there's two pieces there. There's the first bit of, what is the challenge in just adding the physical code to these existing repos? I think for the most part, at least on our end, coming from a Windows development background, for us, the answer has been not that bad. We have standard community component library templates that you can run the CLI and get. Then you add in your customized Native control, and you add all of its functionality. Luckily, a lot of the community modules have super well-established documentation, and so it's super clear, what is the behavior supposed to be, what should all of the props be, etc., etc.?

I think the second piece is is taking that code and pitching it to a library maintainer to say, "Hey, do you want to add Windows to your community module?" I think there's also a challenge in that phase as well, which is totally understandable. You have maintainers who are familiar with Native iOS code, and they're familiar with Native Android code. Now the ask is, can you add this whole other section of code when most likely they have not done development in Windows? They don't know how the code works. They don't have a Windows device to test that the code works. Now you could have code in your repo that could go stale and could break, etc., etc. So I think our experience has been different depending on the community module maintainer as to how receptive they are to want to take that code and embed it in the community module, and that's totally understandable. I think it's one of the bits in adding Windows to this existing space when this wasn't previously at baseline on people's radar.

Mazen Chami:

Again, coming from the Mac side of things, what are some common like misperceptions of React Native for Windows?

Chiara Mooney:

Maybe this is a simple one to start off with, but I definitely think that there's even the misperception of React Native is only a platform that supports iOS and Android. For those of you who are really embedded in the space, you know a lot here. But for a lot of the people that I talk to who know React Native by name or are just ramping up on what is React Native, "Oh, okay. It's used to develop mobile apps," we definitely still get the surprise and the shock of, "Oh, it does target Windows. That's very interesting. I could also build a desktop." So that definitely, I think, is a misconception.

Circling back to the Fabric point, I'm sure in the next couple of months we will encounter a lot of people that are like, "All right, the new architecture is ready. React Native has released it. Why is this not working on Windows, and why is my app breaking?" So this kind of out of tree, what supported upstream may not have trickled down and has support downstream yet, I think is something that we commonly get.

I'd say the third bit is maybe a viability, a lasting misconception. We know that Microsoft has invested in this product. They're working on it. It's an open source. Is this effort to stay? Is this an effort that we're testing out and giving a go and maybe dropped at some point? How much support is there for React Native Windows, at least in the core of the platform, in the community modules? What is the viability here? Can I actually use this? I think is a lot of question that we answer a lot.

Jamon Holmgren:

I think that Microsoft using it internally for really key products that Microsoft relies on is the best answer to that. You're not going to go away from it if it's the underpinnings of Microsoft Office products, maybe not underpinnings, but certainly used in key areas. So that's a good sign.

Chiara Mooney:

Yeah, absolutely. I think that has been a show point, I think, to a lot of people who are raising those questions is we've jumped on board here, it's kind of hard to back out.

Mazen Chami:

Hard hitting question here. What sucks about React Native for Windows? What would you like to see improve?

Chiara Mooney:

What would I like to see improve? Maybe that's a good way to answer it. A couple of things come to mind. Number one, I at least bring myself back into the position of someone who was maybe in university just learning about React Native for the first time, even when I started my job here. I think the documentation story of React Native and how that fits in with Windows and Macs and all those things, the documentation as it stands right now is separate. We have our own website for React Native for desktop, but discoverability-wise it becomes very tricky. I think a lot of people don't know it exists, and then the documentation isn't necessarily in alignment. So I think that creates issues not only in terms of adoption, but also being able to understand the Windows space and how that fits in to the ecosystem as a whole.

I think another one of the pain points that we'd love to see get better is the upgrade story for customers. As it stands right now, you have a React Native version that releases, and then we have to take in those changes, make a bunch of adjustments, and then we can release 71, for example, which just came out. Then we can give that to our customers. Then they have their own customizations and things like that, and then they can ship their product on the new version. So there's a lot of lag time there. I think there's also a lot of opportunity for a bit of a game of telephone when it comes to new features, new APIs, deprecated APIs, what is the migration story to new things. So in having the code pass through lots of parties, I think upgrades become kind of a tricky story, and we'd love to see that get better for our customers for sure.

The third thing that comes to mind is the limited third-party support. People who are using modules, they want to be able to use Firebase or something like that. There isn't Windows support for it, and that can be a huge blocker for them being able to add Windows as a target. Third-party support is tricky, where a team with fixed capacity and committing to support Windows for a particular module is a long-term investment. So there are blockers there, and that prevents people from onboarding to the platform, which is disappointing.

Jamon Holmgren:

Those are kind of what I expected you to say. For what we're talking about, React Native for Windows, desktop, and it is, like you said, targeting other things like Xbox, I think that it's come a long way from the very beginnings, for sure. There's a lot more support. It seems like things are really moving the right direction. As more apps are built within Microsoft in React Native for Windows, that's just going to continue to expand, which just makes it easier for all of us.

Chiara Mooney:

Yeah, absolutely.

Mazen Chami:

I feel like the three things you mentioned could go across the board. Documentation, we can all improve on documentation. Speed of our releases, we would love to be on the most recent release, but let's be honest, there's always some work that needs to be done everywhere. Everything you mentioned just to me sounds like not just a React Native for Windows issue. It's just all of us as developers just need to improve on and keep working towards. Again, we might not ever hit that rapid fire release stuff, but at least something we can actively keep working on and a goal to improve on.

Chiara Mooney:

Yeah, totally. I think it's interesting to hear that those are similar issues that are coming across not only just React Native Windows, but also as customers of React Native itself. I think it's also interesting to hear from both of you about what the pain points you're experiencing as people that are consuming the platform. I think sometimes, from our end, as people who are developing on the platform, it's easy to have a skew of what's going on and of what are the challenges and the hiccups and things like that. So glad to hear that those are similar things that you would identify. Those are top of mind for us and things that we bring up to Meta as what we'd like to see get better in the future, which is great.

Jamon Holmgren:

Well, this has been fantastic, Chiara. Really appreciate you coming on the podcast. I think that having these out-of-tree platform discussions is really useful. I'd love to talk about React Native for Mac OS at some point. We didn't really get into that too much. It's a fantastic discussion. It's one of the superpowers of React Native being able to target different platforms like that. I do want to say if you want to nerd out more about React Native, you can come to Infinite Red Slack community, which is all about React Native @community.infinite.red. I know not all of you use Slack or like Slack. That's fine. There are Discord communities out there too, but we use Slack. So if you jump into Slack, feel free. Where can people find you online, Chiara? I know that you're mostly on, I think, GitHub? Where can they find you?

Chiara Mooney:

Yeah, I am on GitHub. We are on GitHub. All of the stuff is in open source. Beyond that, I don't have a Twitter or anything like that for people to necessarily reach out to.

Jamon Holmgren:

That's smart, actually. File an issue.

Chiara Mooney:

Yes, file an issue. You can assign it to me-

Jamon Holmgren:

Perfect.

Chiara Mooney:

... and I can answer your question.

Jamon Holmgren:

You can find Mazen @mazenchami on Twitter, you can find me @jamonholmgren, and of course, React Native Radio @ReactNativeRdio. We really appreciate it when people tweet out that handle. It's actually more rare than you think, but it seems like sometimes we're shouting into the void. I know you're out there though. There's almost 5,000 people listening just about every episode. I'm sure with Chiara here, it's going to be over 5,000. It's going to be a great episode. Thanks so much for joining us today. As always, thanks to our producer and editor, Todd Werth, our assistant editor and episode release coordinator, Jed Bartausky, our designer, Justin Huskey, and our guest coordinator, Derek Greenberg. Make sure you subscribe to React Native Radio. Appreciate you all coming along. We'll see you all next time.