React Native Radio

RNR 254 - How can we improve React Native?

Episode Summary

Today Robin and Jamon go over the Github discussion about what could be improved in React Native. Jamon also recounts an embarrassing story about jet lag.

Episode Notes

Today Robin and Jamon go over the Github discussion about what could be improved in React Native. Jamon also recounts an embarrassing story about jet lag.

This episode 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. https://github.com/react-native-community/discussions-and-proposals/discussions/528
  2. https://reactnative.directory/
  3. Gant’s talk
  4. RNR 253

Connect With Us!

Episode Transcription

Todd Werth:

Welcome back to React Native Radio podcast.

Brought to you by 2023. I just realized that there are adults who were born in 2005. Ouch. Episode 254: How can we improve React Native?

Jamon Holmgren:

Well, Robin, I'm back from the UK, and back in my comfortable warm home office here in the Pacific Northwest. It's really nice to be home.

Robin Heinze:

Was the UK not comfortable and warm?

Jamon Holmgren:

The weather was actually amazing there, which is crazy because I was there in October, and October is supposed to be the super wet rainy season there. It was actually very nice. It was cold like…

Robin Heinze:

Seems like everywhere had a very unseasonably warm fall.

Jamon Holmgren:

It's true. Yeah. Because I know we did here.

Robin Heinze:

It was 80 degrees right up until the end of October, and then it was straight into winter.

Jamon Holmgren:

Yeah, right. We didn't really get a fall. Up in Scotland was cold, but not rainy. My wife and I, we really enjoyed it.

Robin Heinze:

Were you a little disappointed because you were promised rainy, cold Scotland?

Jamon Holmgren:

Nobody promised me that. But I think if I'd asked, a lot of people would've just... They would've bet pretty heavily on that, but it just didn't happen. We had a great time. It was about two weeks we went to... Well, Gant and I went to React Advanced London, which was a cool conference.

Robin Heinze:

I hear Gant gave a pretty awesome talk.

Jamon Holmgren:

He always gives awesome talks. This one was no exception. It was really good. In fact, if you're listening to this right now, we'll try to drop a link into the show notes and get Gant's talk in there. Hopefully it's out by the time that this episode comes out.

Robin Heinze:

It's relevant to React Native.

Jamon Holmgren:

Yeah, it is. It's a React Native talk, talks about the future of React Native. Which ties into our topic today pretty well, actually, because we're going to be talking about... I'm going to give a little spoiler here. We're going to be talking about, how can we improve React Native? We're going to get into that in a second. But yeah, it was…

Robin Heinze:

Hey wait. Wait. But before we do that, Jamon, do you have any really funny stories from the UK?

Jamon Holmgren:

Are you going to do this to me?

Robin Heinze:

Yeah. I don't know. Just a little Birdie told me you had a really funny story about something that happened to you in a restroom.

Jamon Holmgren:

It's the most embarrassing thing, and I don't know why you have to bring this up. Okay.

Robin Heinze:

It's funny.

Jamon Holmgren:

When you're in a different country, things are done differently. Sometimes toilets work differently. I don't know. So I'm exhausted from the flight. It's the first night, we're walking around: Gant, Alicia, my wife Chyra, and we have Gant and Alicia's three-year-old daughter with us. And we're all exhausted from flying nine hours, or whatever it was, to London. And we're looking for somewhere to eat. And I need to use the restroom, and there's a restaurant, but there were tons of people there. We weren't going to eat there, we were going to try to find somewhere else. And I spot where the restrooms are in the background, and I go through this busy restaurant there.

And for some reason there's 12 ladies standing outside the restroom. And it's not like they're waiting for the restroom. It's not like they're waiting for the women's restroom, they're just standing outside of the restroom talking. This is already making me nervous. Why are there a bunch of people just standing outside the bathroom? Why do you have to be right here?

Robin Heinze:

Foreboding.

Jamon Holmgren:

Yeah, this is not good. This is not good at all. I don't know if I want to tell this story, Robin. But-

Robin Heinze:

You don't have to if you don't want to.

Jamon Holmgren:

It's so embarrassing. I'm just like, "Is this restroom used?" "No, no, no. You can go in." So I go in there. And you know how some toilets have... They have a cord that you pull to flush.

Robin Heinze:

Yeah, I've seen them.

Jamon Holmgren:

And I've seen them too. Next to this toilet was a cord. Right next to it there's a cord.

Robin Heinze:

I can see where this is going already, even though I've heard the story and I know where it goes.

Jamon Holmgren:

Yeah. So I go to flesh, I pull the cord, an alarm goes off loudly. It's just... I'm like, holy crap, that was an I'm falling and can't get up alarm. Why is it right next to... I guess because that's where you would fall.

Robin Heinze:

Well, yeah. It's an I need help alarm.

Jamon Holmgren:

Right.

Robin Heinze:

But you didn't need help.

Jamon Holmgren:

I didn't need help.

Robin Heinze:

You were just trying to flush the toilet.

Jamon Holmgren:

I'm like, okay, well, let me shut this stupid thing off. I can't find the shutoff switch. There's nothing on the... You pull the cord again, it doesn't do anything. And then I hear commotion outside, of course. And the manager's like, "Is everybody okay?" I'm like, "Yes. I just can't figure out to turn this off. It was an accident." He's like, "Look underneath the toilet paper roll, there's a switch underneath there." I'm like, "Why would you hide that? Why would you hide the kill switch for this?"

Robin Heinze:

Yeah, that doesn't make any sense. You should definitely make the stop switch very accessible and obvious.

Jamon Holmgren:

Yeah, just obvious. With a label.

Robin Heinze:

Because if you really need help, you're not going to press the kill switch.

Jamon Holmgren:

It was underneath the toilet paper roll cover. You couldn't see it. Standing or sitting there, you couldn't see it. So I'm like, after I wash my hands, I just beeline out of there. Past everybody. I'm just not looking at anybody. And then to make matters worse, later I go into a different restroom and it has an actual pole cord toilet. And of course I'm just so nervous to pull the thing. I don't know. It's the worst.

Robin Heinze:

Now you have a phobia of European bathrooms.

Jamon Holmgren:

I do. Just traveling in general is distressing for restroom use.

Robin Heinze:

For restroom use. The problem is the customs are all different, and the hardware is all different. But you're in there alone, right? So there's like no assistance.

Jamon Holmgren:

And everybody else knows you don't pull that cord.

Robin Heinze:

Very distressing.

Jamon Holmgren:

I was very tired too. I'll put that in. I probably would've recognized that, hey, there's a lever too, or a button or something. I probably would've recognized that if I wasn't just so jet lagged.

Robin Heinze:

It's dangerous to use public restrooms while jet lagged.

Jamon Holmgren:

Apparently. I'm so traumatized now.

Robin Heinze:

I'm so sorry that you had to experience so much pain so we could experience so much joy.

Jamon Holmgren:

You're not sorry enough not bring it up though. Anyway, I'm Jamon Holmgren, your host. Friendly CTO of Infinite Red. I'm back in the Pacific Northwest. I'm very happy to be back where the toilets work how you expect them to. I am joined today by my wondrous co-host, Robin. Thank you very much, Robin.

Robin Heinze:

I feel like you want to choose a different adjective now. Tricksie, annoying.

Jamon Holmgren:

Mazen is out with COVID. Mazen, my good friend, who would never bring up such a thing, is out with COVID today. Luckily he's doing okay.

Robin Heinze:

Fortunately, he is doing better, but he's still in isolation. He can't get to his recording equipment, so he can't join us.

Jamon Holmgren:

Yeah. His family has not contracted it, he's isolating. And yeah, that's Robin. Robin Heinze. She's a senior software engineer at Infinite Red.

Robin Heinze:

For now.

Jamon Holmgren:

Hey, I'm not like some CEOs, I don't fire people publicly.

Robin Heinze:

Ooh. That's a subtweet.

Jamon Holmgren:

She's also located here near Portland, Oregon with her husband and two kids, and works on React Native here at Infinite Red. This episode is sponsored by Chain React. Chain React 2023. Chain React is back, the biggest and best React Native conference in the US. We'll be back May 17th through 19th, 2023. We promise all the toilets work, and there's no... Actually, I can't promise that. I can't promise there's no weird alarms that you can't shut off in these bathrooms. I've never noticed any, but maybe they've remodeled since the last time we were in there. So, you've been warned. Get your tickets today at chainreactconf.com. There's some really cool workshops and a lot of other stuff. Go check it out, chainreactconf.com.

All right, let's get into our topic for today. As I alluded earlier, how can we improve React Native? And there was, just as context, over the years the React Native core team has posted in the discussions and proposals repository a discussion asking, what sucks about React Native? How can we improve it? What are the highest priorities? It's a really great way to gauge the mood of the community, and prioritize what things to work on. Which is really fantastic. This was posted mid-October by Luna. Luna Leaps is her GitHub handle, and she's on the React Native core team.

And she says, "The React Native team is looking for feedback to improve the developer experience of React Native. Our team has gotten so much value from the past responses in 2018, 2019. We missed 2020 and 2021. This year, your input matters more than ever as we look to prioritize your feedback into our planning." I really love this. I think it's one of the coolest things. It's now locked. So now that people have had their chance to get feedback in, now we're going to go over the top requests and just talk about them.

Robin Heinze:

Ironically, the first comment, which has a lot of conversation under it, is actually something that most people disagreed with. Somebody pointing out that they would like the two platforms to be more similar in terms of UI, between iOS and Android. Similar to the way Flutter does it. And it actually got quite a lot of negative response of people saying, "No, I like that about React Native. That's one of the defining features of React Native is that it honors the platform specific UI differences."

Jamon Holmgren:

It is one of the differences from Flutter, for sure.

Robin Heinze:

There was a lot of conversation under it. People saying, "No, please don't change that. We liked that they're different. That's one thing that makes React Native special."

Jamon Holmgren:

And I think one of the most compelling responses was, you look at a native alert dialogue for iOS and Android, and they look different. And I think if you put an iOS alert on an Android app, the Android users would be like, what is this?

Robin Heinze:

Well, yeah. But you wouldn't. I don't actually know what Flutter alerts look like. But I'm guessing in Flutter the alert is a third option that looks nothing like either of the two native.

Jamon Holmgren:

Yeah, I suppose. It's material UI or something. But yeah, I would agree with that.

Robin Heinze:

Which I know some apps, that's what they want to do. They don't like that the system UI takes you out of the app's branding and everything, and so they want a more customized experience. Which you can do. There's plenty of ways to do a custom dialogue. But out of the box, the alert component that you get with React Native will honor the system dialogues which are familiar to users. So that was one of the very first discussions, or comments, that was added that sparked some discussion. Some of the most requested things also got a lot of conversation, including a conversation about Yoga.

Jamon Holmgren:

The layout engine. It emulates CSS, but it's not 100% full implementation of CSS.

Robin Heinze:

And it sounds like CSS has advanced and grown, and added a lot more features. And Yoga hasn't really kept up with everything that CSS can do, including CSS grid.

Jamon Holmgren:

I remember suggesting, hey, we need CSS Grid. And I think this is probably, I don't know, 2018, 2019, in Yoga. And I remember the response from the core team back then was, why do you need that? Which was actually a fair point, to be honest. Back then, I didn't really need it. It was just a cool feature I wanted to play with. You can do just about everything with Flexbox. But it seems like this has grown in popularity now, it was the top voted suggestion.

Robin Heinze:

Yeah. Some people are saying Yoga was considered complete by Facebook and not... Or sorry, by Meta. And not getting any attention anymore. So a lot of people really echoed that. And it sounds like they're working on it. I don't actually know how Yoga will tie into Fabric with the new architecture. Is Yoga still going to be relevant?

Jamon Holmgren:

There's some rumors that there's a different layout engine being used internally at Meta. Not Yoga, like a Yoga successor that works more like CSS.

Robin Heinze:

Which kind of explain why it hasn't gotten a lot of love.

Jamon Holmgren:

Yeah. There's no internal ownership of Yoga, from what I understand. Or if there is, it's new. And that's part of why it stagnated. It's not just the layout though, there's other stuff. There's fixed and sticky position, there's mask, clip path, filter, multiple shadows. Maybe even just shadows that work consistently on iOS and Android.

Robin Heinze:

One comment highlights the gaps that they think are the most prominent fixed and sticky position, mask and clip path, like you said. Multiple shadows filter for things like blur 20 pixels. I don't know what that is. I never use CSS, so I don't know about all these things, but they sound cool.

Jamon Holmgren:

Yeah, there's a lot of things you can do with CSS that you can't do with React Native. That is something that is pretty popular here.

Robin Heinze:

There's a comment from Nick Gurlman. I don't know if he actually works at Meta or not, but he said the issue is very directly on his radar right now, and row gap, column gap will be here soon. It sounds like there's things coming to address this, which is good.

Jamon Holmgren:

That is good. The next one I think is probably my top thing, and that is debugging with Flipper. Or just debugging in general.

Robin Heinze:

Flipper has so much potential to be awesome.

Jamon Holmgren:

Yeah. But right now it is, as the author of this one says, "Unbearably slow and buggy."

Robin Heinze:

It's true.

Jamon Holmgren:

It's slower to boot than both Xcode and Android Studio, and that's saying something.

Robin Heinze:

I'm so sorry to whoever works on Flipper currently, or worked on it in the past. Yeah. It's not a very pleasant tool to use. And there's been times, long periods of time where I just couldn't get it to work at all. I don't know, there was some version incompatibility with Node or with React. I don't know. And there's just very little documentation, there's very little troubleshooting help on the internet. And I wasn't able to solve the issue. Yeah. In theory, Flipper could be amazing and very critical for debugging, but it has to work in order for that to-

Jamon Holmgren:

Yeah, it does. And I think one of the worst comments here was, "When people ask me, what do you do to debug React Native? I simply avoid mentioning Flipper."

Robin Heinze:

Yeah.

Jamon Holmgren:

It just needs some TLC.

Robin Heinze:

It does. It does.

Jamon Holmgren:

They need to use Flipper on Flipper. So there's a lot of stuff there that I think needs to be improved quite a bit. Some of the things that are mentioned here are network inspector, state inspector, we have those in Reactotron. Which, there is actually a Flipper plugin for Reactotron. You can use it in Flipper.

Robin Heinze:

Yeah. I primarily use Reactotron for my day-to-day.

Jamon Holmgren:

Yeah. Speaking of apps that need some TLC. But, that will eventually happen. We're going to put some time into it, but it's still useful.

Robin Heinze:

There are some things that it doesn't do, like the performance tools in Flipper are like, you can't get them anywhere else. The flame graph is so useful when you can actually get the thing to work.

Jamon Holmgren:

The nicest thing about Reactotron is that it's super lightweight and loads up quick.

Robin Heinze:

Yeah, very light.

Jamon Holmgren:

Things like that.

Robin Heinze:

When you just need to inspect your state and see what your network calls are, what your redex actions are, it's right there and it's easy and fast and useful.

Jamon Holmgren:

One of the comments is, "Flipper uses many CPU resources, so I don't use it. I still always have Reactotron in the background." So someone likes Reactotron.

Robin Heinze:

Someone likes Reactotron.

Jamon Holmgren:

I actually think Reactotron is probably more beloved than we might even know. Because we don't have any metrics on it.

Robin Heinze:

You don't always need heavyweight debugging. There are times when you really need heavyweight debugging, but most of the time you don't.

Jamon Holmgren:

Yeah. The next one is a familiar one. Upgrades.

Robin Heinze:

Upgrades, everybody's favorite thing. It's like, React Native upgrades are like dishes. Everyone hates doing them, but you have to. And then as soon as you're done, it feels like you have to do it again.

Jamon Holmgren:

I love that. And the React Native upgrade command doesn't even work for new apps. Which is like, hey, you have a dishwasher that even if you put a clean dish in, it doesn't come out clean. So you have to do it by hand.

Robin Heinze:

I don't use the upgrade. I don't think I've ever used the upgrade command. I don't trust it-

Jamon Holmgren:

I don't know anybody that does.

Robin Heinze:

... with apps that I've added a bunch of native packages, and changed all the configure... No, I wouldn't trust an upgrade command to do it for me.

Jamon Holmgren:

There is a comment, "Upgrading an app with Expo is a delight. I can't say the same for React Native CLI." So that is true. Expo's upgrading process is very nice. In fact, Expo solves this issue, but not everybody uses Expo.

Robin Heinze:

Is that still true with the new era of Expo with EAS and more-

Jamon Holmgren:

I think it's largely true. I think that anytime you add more power like that, you're going to end up with more complexity, I guess, when you're upgrading.

Robin Heinze:

It's moving to a less controlled environment. Traditional or classic Expo, they maintained a lot of control over the native side. So they could just update React Native in the SDK and release the new SDK, and that's your upgrade basically. Whereas new era of Expo, you're letting people modify the native code and add their own native packages, and it gets more complicated. It's like Apple's way of doing things where they control everything so that they can make the user experience really pristine and seamless, and Android lets you do more customization and stuff, and so it's a little more rough around the edges.

Jamon Holmgren:

It's worth noting that Flutter's upgrade process is actually very easy and simple, and they still have a lot of power. So they've…

Robin Heinze:

... anyone think you're biased against Flutter.

Jamon Holmgren:

Right. That is something they've really dialed in.

Robin Heinze:

Yeah. Which is important. Little DX developer experience, things like that make a big difference in adoption. In that discussion, did they say anything about whether they're changing, have any plans to improve the upgrade experience? Or is it just, sucks to suck? It's going to be…

Jamon Holmgren:

Yeah, they didn't really respond to it.

Robin Heinze:

Cool.

Jamon Holmgren:

We'll see.

Robin Heinze:

Right. The next one is another one of everyone's favorite topics, enabling the new architecture. It's the buzzword of the year.

Jamon Holmgren:

Yeah. And this is related to upgrades in some ways.

Robin Heinze:

Right. It's kind of the same complaint, there's just not a ton of support for how to upgrade from old architecture to new architecture. Obviously, they're working on it. We've talked about this on the podcast a little bit. One of our own engineers did some work documenting the new architecture. I think there's some docs up already on the main React Native doc site, correct?

Jamon Holmgren:

Right, yeah.

Robin Heinze:

It's something they're working on.

Jamon Holmgren:

Yeah, slowly documentation is being added around this, and what to do. I think there's a comment by Tom Sherman on this. He says, "Our medium-large app had 37 native dependencies in June of this year. 32 needed support added for the new architecture, and there's still 32 that need support added for the new architecture at this point. New architecture has a critical mass problem, it's not worth it to library maintainers to add support because there's not enough users that need it. But there's not enough users because none of their dependencies support it." And that's fair. The React Native team is working on this. There is a website, reactnative.directory. And they have added a little new architecture flag on... I'm looking right now at the homepage. And it says, "React Native community/datetime picker. And there's a tag, MIT license, type script types, and new architecture. They have a way of doing that. I think they actually auto detect whether the new architecture is supportive or not.

Robin Heinze:

I didn't know about that.

Jamon Holmgren:

Yeah, it's pretty cool.

Robin Heinze:

Really useful list. There was also a GitHub issue that Lorenzo linked, which has a list of known libraries and their new architecture statuses, but it sounds like maybe that's been integrated into the directory site that you just linked.

Jamon Holmgren:

Yep. And one of the ones that I'm involved with is React Native WebView, and Tebow Mecho is currently working on the new architecture transition. But it's a pretty big job, it's taken some time. And I think he started it early this year, or May or something.

Robin Heinze:

I'm guessing that the reason there's not a lot of information about what the path forward looks like is because maybe the people at Meta don't quite know what the path forward looks like. It's a very complex problem. And it's not like they're not capable of documenting things really well. So I think if those docs don't exist yet, that means it's a really tough and complex problem, and they're working on it.

Jamon Holmgren:

And one thing to remember is that the React Native team at Meta is actually pretty small. They have full-time engineers on it, but they're having to fix bugs and handle releases and all that. And so, that's one of the reasons we've been working with them to help them with the documentation for the new architecture. But yeah, it's taken time. My internal estimate is nine months to a year before it starts becoming really viable. So November of next year, hopefully.

Robin Heinze:

I think it's definitely going to take some community leadership.

Jamon Holmgren:

That's for sure.

Robin Heinze:

I think the major packages are going to have to step up and take the lead and encourage others to come along with them. And we'll figure it out together.

Jamon Holmgren:

And I think that one of the next ones, I don't want to skip ahead, but one of the next ones... Well, I will skip ahead. Because there's one, Aditya, who is a cool guy, he actually comes and chats on my stream sometimes. He said, "These are some things I'd like to be addressed and fixed. The new architecture is out, but there are no performance benchmarks to see what benefits we're getting." And I think that's one of the big things. If it feels like we're not getting any benefits from all of this work, then what is the point of upgrading it? That's a lot of work to, what are we getting? And I think the core team still needs to do a better job of explaining what we're getting. A lot of the benefits feel like things that Meta, that Facebook specifically is dealing with, and not so much things that maybe our clients are dealing with.

Robin Heinze:

There was, in one of our more recent We React news episodes... I don't remember if you were there. I think it might have just been me and Mazen. But we talked about this guy that's doing a Twitter. He's regularly posting on Twitter every day about a different benchmarking experiment he's done with the new architecture, and showing the performance gains. We'll link to that episode in the show notes, because I thought it was super interesting. It seems like there are people that are starting to experiment with it, but not seeing anything official from Meta is frustrating.

Jamon Holmgren:

The one I skipped over was, "Better built-in images and image caching. It seems strange to have to reach for a third party library like React Native FastImage, or React Native Image Cache, when the built-in image component should be able to do this by itself." And I think I agree with this. We always are adding React Native FastImage or React Native Image Cache.

Robin Heinze:

We pretty much always use FastImage by default. Ignite uses FastImage.

Jamon Holmgren:

Yeah, it's just built-in. So why not have it built in to React Native? That's a fairly basic thing. Although, obviously they don't want to have too many of the third party stuff in there. But yeah, I think that's good. No documentation around concurrent rendering. Any benefits or benchmarks back to Aditya’s comment document, the native areas. It's a lot of documentation that's missing. There are some React Native packages that are abandoned, and that's really unfortunate.

Robin Heinze:

It's happening more and more. React Native was new and exciting five years ago, and there were packages all over the place, and they were still new and maintained. And now those same packages that we used to reach to every single time are now-

Jamon Holmgren:

They haven't changed.

Robin Heinze:

Four, five years. You'll look down the commits and you'll see four years ago, three years ago, and that it's just happening more and more.

Jamon Holmgren:

Yeah, for sure. There are a lot of really well supported packages, but a lot of them are by Expo, by Shopify, by some of these more active people. Microsoft.

Robin Heinze:

Yeah. The ones that have corporate or enterprise sponsors, basically. It's the companies that are relying on React Native for their product.

Jamon Holmgren:

React Native Gifted Chat is one that's been abandoned, and that's unfortunate because it's a really cool one. But the maintainer hasn't commented on there in ages.

Robin Heinze:

And there's not a lot of other chat UI libraries. Because it's so overwhelming to be a single person maintainer of a library used by hundreds of thousands of people.

Jamon Holmgren:

And you're not getting compensated for it, so you only have so much time. And eventually, if you burn out, then what happens? It's just a broader problem with open source.

Robin Heinze:

It is.

Jamon Holmgren:

That's why at the end of the day you end up with corporate sponsors of open source, and that's pretty much your main focus.

Robin Heinze:

Right. Who are trying to protect their investment, and with good reason. And they have the resources to devote to maintaining open source, which is great.

Jamon Holmgren:

Please fix the modal issues. That's a big one. Modal is useless in React Native right now.

Robin Heinze:

Everyone seems to be using Gorem's React Native bottom sheet. But like we were just talking about, I'm fearful that it will succumb to the same issue. Because it's this guy doing this, essentially alone, and everyone is starting to use this library and demand more and more and more from him. And I'm worried that he's going to burn out as a maintainer, and this library that we have discovered and is great.

Jamon Holmgren:

Let me hit a few more really quick. "Please give us a nice performance list component." Obviously, Shopify's FlashList is a step in that direction. And actually, we just implemented FlashList on a client project, and it made a big difference performance-wise. Keyboard handling and React Native apps, it's way harder than it should be. Keyboard avoiding view is just too basic.

Robin Heinze:

Keyboard scroll view, which is a library, is what we've had a lot of success with.

Jamon Holmgren:

Yeah. Yeah.

Robin Heinze:

Yeah, the community libraries are coming through for that.

Jamon Holmgren:

Yep, exactly. React Native keyboard manager, but that's only iOS. Keyboard aware scroll view is the big one. Does work with Expo. There's some other stuff too, but those are the main issues with keyboards. And it's actually one of the reasons Ignite is so nice. Ignite being our boiler plate. We implement these things that we think should be in React Native, but we just bring them in so you don't have to think about them, they're just available.

Robin Heinze:

Disclaimer, keyboard, avoiding scroll view is not actually in Ignite, but it should be.

Jamon Holmgren:

Oh really? Okay. Well that's something we should think about if we're using it in real projects. Maybe it will be by the time we get this episode out. 

Robin Heinze:

It's possible. Next time you stream, we'll add keyboard aware scroll view.

Jamon Holmgren:

This is a big one, improving the log box. It is heavy, it does a lot. But I don't know how many times I look and I see just useless stack traces that don't actually tell me what's going on.

Robin Heinze:

So often. I remember when I was first learning programming and I was using Rails. And the error experience was so good. Because you get this error comes up, you have your stack trace, you have a repo so you can see what values of all your variables are at that exact point. Super useful. I was super spoiled by that. The React Native error experience is a lot of times really frustrating because stack traces are meaningless.

Jamon Holmgren:

Yeah, I think that's probably my top one. I want to see more of that. There's a lot more here, I want to really quickly touch on a few. By the way, a real quick, going back to Yoga. Nick Gurlman said that he has been working on Yoga, and they've been improving their issue responses. Because an average time to first response of 800 days. I sometimes feel bad about my response times, but 800 days, that's a bit.

Robin Heinze:

What is that, two and a half years?

Jamon Holmgren:

Yeah. And that's for pull requests for community issues, 1,354 days. That's the average time to first response. But they have been working, and there are issues, there are pull requests. Things are moving forward over there, so that's good. There's a note about having Metro being able to follow SIM links. And it is moving forward. There is also RNX kit, which Kelset links to. Improve promises rejections, we see this all the time. Possible unhandled promise rejection, we don't know where. Just somewhere. It's just common. And then you're like, where? What do we do here? First class support for suspending inactive screens, that's another thing. So that-

Robin Heinze:

It's a performance.

Jamon Holmgren:

Yeah, reduce memory. Exactly.

Robin Heinze:

Yeah.

Jamon Holmgren:

Improving debugging with Chrome dev tools, that's a big one. Making sure that it's better.

Robin Heinze:

Adopt React Native Web.

Jamon Holmgren:

Yes.

Robin Heinze:

I agree with this one. Doesn't seem like there's any real acknowledgement from Meta that React Native Web exists, but a lot of people are trying to use it, and do use it for their cross-platform app. Yeah, some acknowledgement would be good.

Jamon Holmgren:

Yeah, that's big. This just keeps going and going.

Robin Heinze:

Yeah, there's a lot. We're definitely not going to be able to hit them all.

Jamon Holmgren:

We're not going to be able to hit them all, it's almost like we need a part two on this. Kiara, from the React Native Windows team says, "The breaking changes that come from React Native in the last year have put stress on our team and our customers. We've heard recurring feedback from our customers that the cost of breaking changes is high. And the pace at which breaking changes are occurring is furthering the challenges. We'd like to see more stability in React Native." And I can definitely say that's also the case. Maybe that's why they haven't gone 1.0 yet is because of all these. There's a lot of work to be done on React Native. Here's the good news, just to wrap all this up. The core team is asking about this stuff, and they are working on addressing it. And so that's fantastic. If they weren't aware of it, then we couldn't really have hope that it'll get addressed. React Native is really awesome, but it definitely has a ways to go.

Robin Heinze:

If the core team hears this, it sucks to hear everyone talk about everything you're doing wrong, and it can probably feel really demoralizing. We think React Native is awesome, obviously. Infinite Red's entire business model is on React Native, we love React Native. It's amazing.

Jamon Holmgren:

Yes.

Robin Heinze:

This kind of thing is because we love it so much, and we want it to be the best it can be. And that's never going to happen if the issues that the community is having aren't brought to light. So that's why. And obviously, you know that because you specifically solicited this feedback, but-

Jamon Holmgren:

Exactly.

Robin Heinze:

... we know it's hard to hear. And we love you.

Jamon Holmgren:

Well said, Robin. Well, thank you very much for your thoughts there. And yeah, thanks to everybody who's working on this. If you'd like to nerd out more about React Native, I am back streaming more regularly. Check out my Twitch stream at RN.Live. You can go to YouTube.Infinite.Red. I'm also on Twitch. You can also join our Slack community at Community.Infinite.Red. I actually just polled them recently to see if we should move to Discord. 95% said stay on Slack. So I was like, okay. The people who want Slack are here.

There are over 2,000 React Native developers in there, so go check it out. You can find Robin at Robin_Heinze on Twitter. You can find me at Jamon Holmgren on Twitter for now. You can find Mazen, who's not here, at Mazen Chami. Wish him a speedy recovery. You can find React Native radio at React Native RDIO. As always, thanks to our producer and editor, Todd Worth. Our assistant editor and episode release coordinator, Jed Bartowski. Our designer, Justin Husky. And our guest coordinator, Derek Greenberg. Thanks to our sponsor, Chain React. Go check it out, chainreactconf.com. And thanks to you, of course, for listening today. Appreciate it. Robin, do you have a mom joke today?

Robin Heinze:

I do.

Jamon Holmgren:

Let's hear it.

Robin Heinze:

What's the difference between a duck and George Washington?

Jamon Holmgren:

I don't know.

Robin Heinze:

One has a bill on his face and the other has his face on a bill.

Jamon Holmgren:

All right, we'll see you all next time.

Robin Heinze:

Bye.