React Native Radio

RNR 253 - We React to News: Kotlin's got a new daddy

Episode Summary

Another episode of "We React to News" is upon us! Today, Mazen and Robin are talking about all sorts of juicy topics like Expo 47, Solito, and Meta adopting Kotlin as primary language for Android development, just to name a few.

Episode Notes

Another episode of "We React to News" is upon us! Today, Mazen and Robin are talking about all sorts of juicy topics like Expo 47, Solito, and Meta adopting Kotlin as primary language for Android development, just to name a few. 

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. Expo SDK 47 beta is now available | by Brent Vatne | Oct, 2022 | Exposition
  2. Introduction | Expo Router
  3. Expo Router | Solito
  4. RFC: File System-Based Native Routing with Expo and React Native | by Evan Bacon | Sep, 2022
  5. RNR 224 - React Native Web on Next.js with Fernando Rojo
  6. From zero to 10 million lines of Kotlin - Engineering at Meta
  7. Create React Native Library 0.25
  8. Alexandre Moureaux New Architecture Benchmarking on Twitter
  9. React Native types moving out of DefinitelyTyped
    1. https://twitter.com/kelset/status/1572994139649720322
    2. https://github.com/react-native-community/discussions-and-proposals/discussions/490#discussioncomment-3693520

Connect With Us!

Episode Transcription

Todd Werth:

Welcome back to React Native Radio Podcast, brought to you by ChatGPT. I asked them for their ad and they said, "We may be robots, but at least we're not as awkward as you." Ouch. Episode 253, we react to news.

Mazen Chami:

Did you hear about the dad who told his wife, "I'll be back soon," and took his eight-year-old son and climbed El Capitan?

Robin Heinze:

I did not hear about that.

Mazen Chami:

What would you do if that was your kid?

Robin Heinze:

Wait, did he come back?

Mazen Chami:

He did. He did. Everyone's fine. Yeah, I should have said that, but yeah, everyone's fine.

Robin Heinze:

This wasn't like kidnapping situation.

Mazen Chami:

No, the kid is fine.

Robin Heinze:

This is just like a surprise rock climbing expedition.

Mazen Chami:

He is the youngest person to climb Mount Capitan, with the help of his dad, because I think his dad just kind of tied him onto himself and just climbed El Capitan.

Robin Heinze:

So the mom was not down with this, and so he had to do it without telling. Is that the idea?

Mazen Chami:

I don't know. I was just adding effect to the story.

Robin Heinze:

I think if my husband was a professional, very experienced rock climber, I would probably be fine. I would be like, "Okay, I trust you." It's a little weird that you'd like took him without telling me, but pretty epic to have climbed El Capitan as an eight year old.

Mazen Chami:

The youngest person to climb it. I wonder if he did climbing. A lot of the pictures that I've seen, he's pretty much just kind of being pulled up by his dad most of the way up, which kind of makes sense. I mean El Capitan is flat.

Robin Heinze:

Yeah, it's like a straight up and down rock face, isn't it? Yep.

Mazen Chami:

Yep. It's a famous 3000-foot granite cliff.

Robin Heinze:

And also a version of macOS.

Mazen Chami:

Exactly.

Robin Heinze:

That's what I think of when I hear El Capitan. I think macOS. But it is also a giant rock.

Mazen Chami:

Yes.

Robin Heinze:

Would you take your eight year old rock climbing in secret?

Mazen Chami:

In secret? No. I mean I wouldn't be allowed back home first of all. Second of all, no, I don't think so.

Robin Heinze:

It's a pretty bold move.

Mazen Chami:

Yeah. Unless the kid had experience in climbing prior to it.

Robin Heinze:

There's a lot of context we don't have.

Mazen Chami:

Exactly. Yeah.

Robin Heinze:

This maybe was not so out of the normal for this family.

Mazen Chami:

Oh, I see a picture of the kid with a T-shirt that says adventure is my middle name, so I'm sure this is not his first rodeo.

Robin Heinze:

I wonder if that's actually his middle name.

Mazen Chami:

That would be hilarious.

Robin Heinze:

I knew a kid who was actually given the middle name Danger, literally his middle name is Danger, which I thought was pretty cool.

Mazen Chami:

Watch out.

Robin Heinze:

Danger is my middle name. No, seriously. Here's my birth certificate. I can prove it.

Mazen Chami:

Sam Baker, if you're out there, let us know what your middle name is.

Robin Heinze:

If you're listening to React Native Radio, as I'm sure you are. Let's get into it. You've probably noticed that you're not hearing the voice of Jamon. He is a little under the weather today, so he won't be joining us, but that's okay. We'll see him next time and we'll miss him, but it'll just be Mazen and me today. Of course, I'm Robin Heinze, a senior software engineer at Infinite Red and I live just west of Portland, Oregon with my husband and my two kids. And I've specialized in React Native for the past five years. And I guess I'll be your host for the day. And then I'm joined by my transcendent co-host-

Mazen Chami:

What, what?

Robin Heinze:

What, what? We looked it up. It means really cool.

Mazen Chami:

Very cool.

Robin Heinze:

Very, very cool. My transcendent co-host Mazen, as always. He lives in Durham, North Carolina with his wife and his baby boy who is almost not a baby anymore, getting close to-

Mazen Chami:

No, he's eight months tomorrow.

Robin Heinze:

Yeah, he's getting big. We saw a picture of him in his Halloween costume recently, which was adorable. And he is also a senior React Native engineer here at Infinite Red.

Mazen Chami:

Me that is, not my son.

Robin Heinze:

That's right. I should briefly mention that this episode is sponsored by Chain React 2023. Chain React is returning in person this year, actually next year, and you should sign up. Early bird tickets are available now. You can sign up. Also sign up for the Chain React newsletter to be informed about when conference and workshop regular tickets go on sale. And you'll also be notified about things like the CFP. If you want to submit a talk, definitely check that out, chainreactconf.com. And of course, as always, we're also sponsored by Infinite Red. Infinite Red is a premiere React Native design and development agency located fully remote in the US and Canada. So if you're looking for React Native expertise for your next React Native project, hit us up at Infinite.Red/ReactNative. And don't forget to mention that you heard about us through the React Native Radio podcast.

Mazen Chami:

You said CFP. For those that don't know, can you clarify what it is?

Robin Heinze:

Oh yeah, it says CFP is a call for papers I think. It just is, if you want to submit a talk for Chain React, you would enter our CFP, which you should do. We love our speakers and we'd love to hear what talk ideas you have. So sign up for the newsletter and you'll be notified when that happens. Awesome. Let's get into our topic for today. It's going to be probably a quick one today. We're going to react to some news in the React Native world. So to start us off, you may have heard Expo 47 beta has been released, which has some much anticipated new features. Mazen, do you want to talk about that a little bit?

Mazen Chami:

Hermes is now available for iOS and Expo Go. So you can now enable that flag if you ever need to. Well, you should. I feel like it improves Android quite a bit, so I think iOS should leverage that now.

Robin Heinze:

So if you're not aware, Hermes was added to iOS a while back, I think in the mid sixties of React Native, but has not been available in Expo Go until this beta, since Expo Go is much more controlled and less native integrated, Hermes has not been available on iOS and Expo Go until now.

Mazen Chami:

Mm-hmm. And one thing to keep in mind is by SDK 48, it'll be enabled by default. So 47 is getting you there, 48…

Robin Heinze:

Right. It's available but you have to turn it on-

Mazen Chami:

Correct, yes.

Robin Heinze:

... if you're using SDK 47.

Mazen Chami:

Mm-hmm, exactly. Another big one is React Native and React versions were updated. So React Native is on 0.70.4 and React is 18.1.0.

Robin Heinze:

Getting closer to supporting the new architecture.

Mazen Chami:

Mm-hmm, very close.

Robin Heinze:

Adding support through Expo is going to be a big piece of getting new architecture in more and more apps.

Mazen Chami:

The minimum iOS version was also updated to 13. I think that's mainly because Apple is pushing that higher up also. So now you do need to be on 13 to release.

Robin Heinze:

Pretty sure we have someone on our team who really hates upgrading his devices and is stubbornly still on 13, but he has had to upgrade to 13, because Apple doesn't really support any older. But yeah, he's a good resource for testing whether things work on really old devices.

Mazen Chami:

Like, "Hey, does this crash?"

Robin Heinze:

I think he has an iPhone 6.

Mazen Chami:

Oh wow. Okay, there we go.

Robin Heinze:

Which is, yeah, pretty old. So it looks like they've also added experimental support for fabric in some of the Expo modules, Expo AV, Expo Camera and Expo Linear Gradient now support Fabric in SDK 47. They also mentioned some view based modules that don't support Fabric yet, Expo Apple Authentication, Expo Barcode Scanner, Expo Blur, and Expo GL do not yet support Fabric, but all of the other Expo modules are compatible with the new architecture already. They don't have anything that would need to be upgraded to Fabric. So they're just talking about the Expo modules that have view components that need to be Fabric compatible.

Mazen Chami:

That's awesome. Yeah, if you think of only four that aren't compatible yet, so maybe they'll be in 48, so that's very soon.

Robin Heinze:

Yeah, I wouldn't be surprised if they were in 48.

Mazen Chami:

And there's a lot of other community packages that aren't there. So you could kind of pretty much say that Expo is closing that gap to new architecture fast and we will be there very soon, a hundred percent I think, so that's pretty cool.

Robin Heinze:

Let's see. There's a couple other things that are worth noting. One thing that we'll actually be talking a bit about more in our next item, but there's a beta release of Expo's new file system-based routing called Expo Router that's part of this Beta 47 SDK. So this is new. It's a file system-based routing API that they've built on top of React Navigation. It's called Expo Router. There's a blog post about it, which we'll link in the show notes. And we're going to talk about this more in a second, but this is a big deal. I think this is the start of a big shift in how people use navigation in React Native and Expo apps. So definitely, definitely read that blog post, check that out, give it a try because that's in SDK 47.

Mazen Chami:

Another thing is they've deprecated app dot JSON fields, so if you're on 47 or above, there's a bunch of items that you would need to either find their replacement or completely remove, especially if you're using them. Some are iOS dot Splash, dot XIB, Android dot Google sign in, use next notification API, and then iOS dot Google sign in also. So there's a bunch of others there. Take a look there. Expo Firebase libraries, so analytics, CAPTCHA and all are deprecated, so that's a big one.

Robin Heinze:

So their solution, they said they suggest migrating to React Native Firebase. I think they previously had an Expo flavor of Firebase JS, but React Native Firebase, the regular React Native Firebase is compatible with Expo now, which is why they're they're deprecating their Expo base libraries.

Mazen Chami:

And if you're using the EAS build, you can still use React Native Firebase to get all the stuff. One great example is the Chain React app is using this underneath the hood.

Robin Heinze:

Yes, spoiler alert, we're starting to work on the Chain React 2023 app, which is still very much in the early stages, but stay tuned for more news about that as we get further along. That'll be fun to watch that come together. Another deprecation warning, actually it's not even deprecated anymore, it's just gone now. SDK 47 doesn't support classic builds anymore. So the Command Expo Build iOS or Expo Build Android, SDK 46 was the last release to support that, so that's not supported in 47. You can build your Expo projects with EAS Build either locally or in the cloud, or you can build through Xcode and Android Studio.

Mazen Chami:

Another one is React Native Maps had a major version bump, so if you're using that, please take a look at the change log, because it's a big bump. We're talking about 0.31.1 to 1.3.2.

Robin Heinze:

That's a big bump.

Mazen Chami:

That's a big bump. I mean you don't know that .31.1 and then the next version is 1.0. You don't know.

Robin Heinze:

But still even 1.0 to 1.3 is not something to sneeze at.

Mazen Chami:

Usually going to 1.0 means there is a big update there. So I actually just clicked into it and yes, .31.1 and then the next version is 1.0. So that alone probably has a lot of breaking changes right there, so please take a look at that.

Robin Heinze:

Yeah. So yeah, that's Expo SDK 47 beta release. It is still in beta. It may be full release by the time this episode comes out. Who knows? But as of this recording it's in beta. I'm probably going to try and upgrade the projects that I'm working on that are using Expo to see how that goes. Hopefully it goes well.

Mazen Chami:

Yeah, good luck.

Robin Heinze:

Thank you, appreciate it. Cool. As promised, we're going to talk a little bit more about Expo Router, specifically though in the context of Solito. If you don't know, Solito is a library that was released, which makes it easy to have a shared web and React Native app, because it adds much more cohesive navigation between the two, since navigation has always kind of been one of the biggest differences between web and mobile. So Solito is aiming to sort of bridge that gap. And now Solito and Expo Router are coming together.

Mazen Chami:

Solito is actually by Fernando Rojo, who we had on the podcast in RNR 224. We talked to him about React Native Web on Next.js. But it was John Major and I, I don't really remember, but I think there was some hints to Solito, and him starting to migrate his application that we talked about BeatGig onto Solito and all this stuff. So I would assume that he's using Solito on that application right now. But yes, this is, I think you mentioned, still beta and still being worked on, but it is pretty cool to see it in action. There's the blog post that Evan Bacon posted. That blog post kind of shows how cool, and I think there's a GIF on there if I'm not mistaken, of how it works when you create a new file and how you navigate to it. And that that's pretty cool to see it.

To me it just seems like web-based structure at the end of the day. And it just kind of points to your file and folder. So if you had a file in four sub directories, you would just kind of do it that way, folder A, B, C, D slash index, dot JSR slash home, dot TSX. And then it would kind of display for you that way and that's how you'd navigate to it. That's pretty cool. It makes it almost easier I feel to handle routing, because sometimes routing can be very daunting, unless you're using Ignite and the generator does it for you. What, what?

Robin Heinze:

Web navigation and mobile navigation have always been very different just because mobile navigation has always been based on this idea of stacks and screens coming in on top of each other based on-

Mazen Chami:

Mm-hmm.

Robin Heinze:

Because that's just kind of how ... I think Apple really started that with the UI experience of feeling like you're pulling a page in on top of another page, and so there's this idea of screens being layered on top of each other, which doesn't exist on the web. And so that's kind of been the basis for mobile navigation libraries. But because there's so many cases now where we're trying to share as much code and logic as possible between a web app and a corresponding mobile app, I think libraries like this, which seek to unify those are going to get a lot of traction.

Mazen Chami:

Yeah, and that was the motivation behind this, the ability to get universal linking and just deep links into your application that work both on web and mobile, because they are very different mechanisms of how we route on both.

Robin Heinze:

Yeah. I haven't had a chance to give this a try yet, but there's been a lot of buzz, so I'm looking forward to seeing what it's all about. Maybe you'll see it in Ignite. You may see it in Ignite Cookbook at least. Actually have we even announced the cookbook yet?

Mazen Chami:

I don't think so.

Robin Heinze:

I don't think we've announced the cookbook yet. Nevermind, we won't talk about the cookbook.

Mazen Chami:

Erase that from your memory.

Robin Heinze:

We'll take that out.

Mazen Chami:

Cut Robin.

Robin Heinze:

You'll probably see Jamon tweeting about it anyway. If we give it a try around here, I'm sure you'll see it. Awesome, let's move on. Some news in the Metasphere, Metaverse-

Mazen Chami:

Metaverse.

Robin Heinze:

Not actually the Metaverse-

Robin Heinze:

In the world of Meta, the company is adopting Kotlin as their primary language for Android development now, as opposed to Java, which is big news for Kotlin. Big news for people who don't like Java, prefer to use Kotlin.

Robin Heinze:

That seems like a pretty big endorsement of where Android is moving. And there's a blog post, there's an article about it called From zero to 10 million lines of Kotlin. That's a lot.

Mazen Chami:

Yeah.

Robin Heinze:

There's a bunch of reasons behind their switch, which was not a trivial switch, obviously. There was a lot of code to change, but they had some pretty good reasons for doing it. One is just the amount of code. Kotlin is shorter. It takes fewer lines to do the same thing. It's easier to read and follow. It's more functional. It supports inline functions and Lambda expressions and you can do more of a functional programming style.

Mazen Chami:

Type safe builders were one that they mentioned specifically.

Robin Heinze:

Also-

Mazen Chami:

Null ability.

Robin Heinze:

... null pointer exceptions apparently are a common problem in Java. I'm not a Java Pro. I've never really done much in Java, but I'm guessing if you have been a Java programmer, you know what that implies.

Mazen Chami:

You're probably jumping up for joy right now.

Robin Heinze:

It sounds like they had to do a lot of manual tooling to detect that type of exception and keep it from causing errors for users. But it sounds like Kotlin has a lot of built-in tooling to prevent null pointer exceptions, so that sounded like a pretty big reason to switch. So yeah, Meta is switching to Kotlin.

Mazen Chami:

And something just real quick, some points that they highlighted that they learned from this switch was it's significantly reduced the lines of code, so it was a reason why. The execution speed was pretty much the same, so that didn't really affect much. The build side wasn't an issue, I think mainly because Kotlin was just a little bit smaller. And then lastly, they have to address that with Kotlin, because it's relatively new in comparison to Java, there are longer build times, so that that's something that they're paying attention to and trying to figure out how to decrease, essentially.

Robin Heinze:

Nice, one less organization using Java. Okay, so in the same vein, Kotlin sort of gaining a bigger footprint in the world. Create React Native library, which I think is similar to Create React, but Create React Native library specifically for creating libraries, not applications.

Mazen Chami:

Yeah. This is part of the React Native builder Bob call stack stack.

Robin Heinze:

They have now added support to create turbo modules in Kotlin.

Mazen Chami:

Look at Kotlin getting all the-

Robin Heinze:

I don't know if that's in contrast to they only had a Java template before-

Mazen Chami:

Probably.

Robin Heinze:

... or if they didn't have a template for creating turbo modules at all before this, but-

Mazen Chami:

So it says adding Kotlin support to turbo modules template, so I assume turbo module template exists and now the flavor of Kotlin is added to it.

Robin Heinze:

Yep, that's right. So there was a turbo module template before, but now you can create them in Kotlin. Even more evidence that Kotlin is taking over the world. If you're sitting down to do Android development and you don't know Java or Kotlin and you're trying to pick which one to learn, definitely learn Kotlin it sounds like.

Mazen Chami:

Yeah. Cool. I think the next one's actually very interesting. It was something I stumbled on Twitter recently. Alexandre Moureaux, I hope I said his name right. He is doing daily benchmarks of React Native old versus new architecture. And he has this long thread, we'll link in the show notes to his Twitter. He pretty much goes through random scenarios of crazy amounts. For example, day one was displaying 10,000 views. The clear winner was the new architecture. And he has a lot of GIFs to show how it happens. It was very mind blowing, the difference in speed between the two loading. Day two was display 2,000 text, text fields I believe. Almost seems like old architecture won that one, but it was very close. The nice thing about it is he gets to show you who wins if there's a draw between the two, so really get to see it.

Now we have mentioned that new architecture is still a ways out from being fully adopted and you get to see all its benefits. But this is actually a really cool now in its infancy to kind of see how it's growing. And I can't really find it right now, but he does mention, he did have one where he kind of posted his CPU versus RAM usage, and there's a big difference between the two sometimes. I can't remember which one it was, but I think it was RAM, new architecture would have a huge spike but then a quick dip and just kind of stay very flat line, while old architecture kind of stayed high and just had this gradual increase. So as you were using the app, the RAM or CPU usage was more and more as you kept the app open, but with new architecture it did a really good job of getting all the resources it needed early, maybe on startup, not quite sure. And then that dip where it wasn't using much and then kept, almost felt like background.

Robin Heinze:

Wow.

Mazen Chami:

So, really cool.

Robin Heinze:

Wow, yeah.

Mazen Chami:

I would check it out. Yeah, the GIFs are interesting. I mean, for us to come here and say old architecture is winning a bunch of his tests is not something I expected it to say out loud, but it's the reality of where we're at. It's also interesting that React Native SVG, displaying two K SVGs, 2000 different SVGs was a draw between the two and they both showed up at the same time. So-

Robin Heinze:

SVGs are notoriously quick.

Mazen Chami:

Exactly, so it's-

Robin Heinze:

Compared to PNG. I would want-

Mazen Chami:

Exactly.

Robin Heinze:

Does he have the same benchmark with PNGs?

Mazen Chami:

I don't think so. I know he does a Pokedex FlatList scrolling.

Robin Heinze:

I was just looking at the Pokedex.

Mazen Chami:

Yeah. But he does a straight comparison of FlatList. Old architecture won. I'm interested, and he also notes that he would be interested, in trying FlashList as a comparison.

Robin Heinze:

Yeah, I was just going to ask. I was like, "I wonder how FlashList would stack up."

Mazen Chami:

I would assume that would not be a competition right there. So from what this is showing, startup time is quicker in new architecture, but then after that, there is pluses and minuses in all other aspects.

Robin Heinze:

Oh yeah, that's a daily thing. He's up to day seven, which he posted a couple days ago, so maybe he's taking a little break. But he at least got seven days, which is super interesting. I haven't seen a ton of this kind of benchmarking, tangible, this is the difference kind of thing with the new architecture, so definitely check that out. We're going to link that in the show notes.

Mazen Chami:

I'm not sure if I mentioned, but he's doing the Fabric side of things.

Robin Heinze:

Okay, right.

Mazen Chami:

Yeah.

Robin Heinze:

Okay, so specifically UI rendering?

Mazen Chami:

Yes, exactly. Yeah, Fabric UI rendering. I'm not sure if he has anything else enabled, but he mentions that it's his Fabric test in quotes.

Robin Heinze:

Getting to the end of the list here, one thing to note, React Native types have always been in DefinitelyTyped. So if you're not familiar with DefinitelyTyped-

Mazen Chami:

Definitely-

Robin Heinze:

... it's basically just a communal pile of types for open source libraries. For a long time, that was the only place where types were defined. It was just a bunch of people who would come define the types for the libraries that they were using, because if the libraries didn't have their own types included, this is kind of back when TypeScript was still pretty new and adoption was not across the board by any means, so it was a place that you could define types for libraries that you were using, and then share them with the rest of the community. But as TypeScript support has gotten more universal, it's like most libraries have their own types now. So now React Native types specifically will be included with React Native itself.

Mazen Chami:

That's big. 

Robin Heinze:

Which is big, yeah.

Mazen Chami:

Yeah. Yeah, I feel like every time I install, I'm always like, "Yarn add? Yes, I use Yarn."

Robin Heinze:

Yeah, you have to have to remember to add React Native and then add React Native type separately.

Mazen Chami:

Even if I'm adding a random packet sometimes, I think out of habit I'll do Yarn add package-

Robin Heinze:

And then-

Mazen Chami:

... space, add types slash the package.

Robin Heinze:

I have-

Mazen Chami:

And if it installs, it installs. 

Robin Heinze:

I don't know why, it just occurred to me that I haven't really had to do that very often anymore.

Mazen Chami:

It's rare, but they exist. I kind of think it's more on their React side of things than React Native, because I think a lot of React Native stuff is built in TypeScript to start off with. Well and I am, I'm kind of working on a web project right now, so that's maybe why it's front of mind for me. So I'm kind of like, "Yes, this is big." So it is big in general and then-

Robin Heinze:

It just feels like a milestone just sort of like, "Okay, yes, TypeScript, it's here, it's the default now. It's first class."

Mazen Chami:

Yeah. And the React Native types that live in DefinitelyTyped, whew, say that a couple types, those are being deprecated in 0.72, so if you're going to migrate to 0.71.

Robin Heinze:

They're still going to work for a couple versions. But-

Mazen Chami:

Mm-hmm. Yeah, so I think if you're planning to upgrade to 71, get rid of the add types at the same time, just so you're not caught with it.

Robin Heinze:

Cool.

Mazen Chami:

So the last point that I have is not necessarily news, it's just something that's been bugging me for a while. And a friend of IR, David Leuliette kind of posted the solution to it. You've probably started trying to do specifically Yarn iOS. And then you get that annoying message that says, "Unable to boot device." It's happened to me a couple times and I kind of like ugh.

Robin Heinze:

It happens to me.

Mazen Chami:

... curses.

Robin Heinze:

Yeah, I've seen it a lot.

Mazen Chami:

Well, you can get rid of it. On the simulator if you do command comma, a little screen will pop up and then you uncheck, "when simulator starts, boot the most recently used simulator." And that solves it. It solves the issue.

Robin Heinze:

Solves the error. 

Mazen Chami:

Yep.

Robin Heinze:

Today I learned.

Mazen Chami:

Weird nugget of the day.

Robin Heinze:

Should that be a new segment?

Mazen Chami:

That's like the first weird-

Robin Heinze:

Mazen's weird nugget?

Mazen Chami:

Let's see. Hopefully-

Robin Heinze:

I don't know about that.

Mazen Chami:

Yeah, no, I'm fine. One and only weird nugget of the podcast for a while maybe.

Robin Heinze:

Oh, awesome. Well, that's all the news that we had to go over today. If you'd like to nerd out more about React Native, make sure to check out Jamon's Twitch Stream at RN.live or YouTube.Infinite.Red. He's been out of the country actually for a while, so he hasn't streamed in the last few weeks. But I think he'll be back to it pretty soon. It's always a good time. A lot of the Infinite Red people pop up in the chat. You can also join our Infinite Red Slack community at community.Infinite.Red and check out our Twitter community @RNTwitter.Infinite.Red. You can find Mazen @MazenChami on Twitter. You can find me @Robin_Heinze on Twitter. And then you can find the show @reactnativerdio.

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. Thanks to our sponsors Chain React and Infinite Red. Check us out at infinite.red/ReactNative. And a special thanks to all of you listening today. Please make sure to subscribe wherever you get your podcasts.

Mazen Chami:

It almost sounds like I was listening to NPR there, Robin.

Robin Heinze:

I listen to a lot of NPR. Oh, and to wrap things up, I do have a mom joke.

Mazen Chami:

There we go. I was waiting for it.

Robin Heinze:

I think it's a pretty good one. What washes up on tiny beaches?

Mazen Chami:

What?

Robin Heinze:

Microwaves?

Mazen Chami:

Yeah.

Robin Heinze:

It's so cute.

Mazen Chami:

That was a good one. That was a good one.

Robin Heinze:

Okay. Okay, we'll see you all next time.

Mazen Chami:

I'm holding back. Bye.

Robin Heinze:

Bye.