React Native Radio

RNR 252 - Ionic's React Native Portals with Josh Thomas

Episode Summary

Ionic’s Josh Thomas joins the podcast to talk about their new React Native Portals feature, allowing for highly performant microfrontends in React Native apps.

Episode Notes

Ionic’s Josh Thomas joins the podcast to talk about their new React Native Portals feature, allowing for highly performant microfrontends in React Native apps. 

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. Portals
  2. Portals docs

Connect With Us!

Episode Transcription

Todd Werth:

Welcome back to React Native Radio Podcast brought to you by Twitter. You know when you go to Twitter on your computer, how does that work exactly? If you know, call us. Episode 252, Ionic's React Native Portals with Josh Thomas.

Jamon Holmgren:

Well, Mazen, no Robin today, so you know what that means of course.

Mazen Chami:

Yes. Sports, sports, sports.

Jamon Holmgren:

We get to talk... This is a sports podcast now.

Mazen Chami:

Exactly.

Jamon Holmgren:

Sports radio, not React Native Radio. Before we alienate most of our audience, I don't care, that's fine, we'll talk sports. It's okay. Some of them care.

Mazen Chami:

Robin keeps us on track. So here we are.

Jamon Holmgren:

She does. Yeah. Well, that's what she gets for not showing up. That's my opinion. So my Seattle Mariners, Major League Baseball, finally made the playoffs after 21 years. I don't know what will have happened between now and when this episode comes out, but they did just win their first... the Wild Card series, which is unbelievable.

So let me put in perspective for people who maybe don't follow sports very much. The last time that the Mariners went to the playoffs, I was I think either 18 or 19 years old and I'm 40 now, so that's a while ago. That's half my life ago and I don't know, it's pretty exciting. Actually, my son Cedric and I went to a game, not a playoff game, but one of the games right before the playoffs and it was a lot of fun. It's been a while since I've been to a game.

Mazen Chami:

I heard the Wild Card game was epic too.

Jamon Holmgren:

Yeah. Oh man. One of the best games I've ever seen in my life. They were down like eight to one at one point.

Mazen Chami:

Yeah, that's nuts.

Jamon Holmgren:

And my brother was over and Cedric and I were watching and we were just so despondent, and then they just started chipping away and then ended up winning the game.

Mazen Chami:

Like 13 innings or something.

Jamon Holmgren:

In this case, they didn't go to extra innings. They managed to win it in nine, but yeah.

Mazen Chami:

Oh, I must be thinking of another game then.

Jamon Holmgren:

There was another one that was like 15 innings. So it's been a really fun post-season already. It's been a lot of fun to watch. I don't normally follow baseball, but now that the Mariners are actually good, I'm back into it a little bit and it's been a lot of fun.

Mazen Chami:

I must confess, I was never a baseball fan until I met my wife who's from New York.

Jamon Holmgren:

Okay.

Mazen Chami:

And she's a big die-hard Yankees fan. So I guess I'm a Yankees fan. Sorry, let me repeat that. I am a Yankees fan. I have to say that with some authority.

Jamon Holmgren:

I guess I'm a Yankee.

Mazen Chami:

But yeah, I watched the last, I don't know, six, seven games just to see Judge hit 61 and then 62, was it? So that was a lot of fun.

Jamon Holmgren:

So what side of the fence are you on? This is kind of inside baseball in a very real sense, but what side of the fence are you on? Is Aaron Judge the first person to really surpass Roger Maris' 61 or are you going to count the... And I see our guest shaking his head, but I know he's a Cardinal fan, so I'm not going to pay attention to him. Do you think he's the first without an asterisk or are you going to count the other ones who have?

Mazen Chami:

So I don't have a lot of context. I know what happened and all the other ones.

Jamon Holmgren:

Yeah, just sort of like the PED era, the steroid era. There's sort of a, "Oh well, they were cheating," blah, blah, blah.

Mazen Chami:

Were they taking these steroids when they hit those?

Josh Thomas:

They did.

Jamon Holmgren:

Probably.

Mazen Chami:

I would say that Judge is then, Judge and then Maris.

Jamon Holmgren:

Okay, I got to bring in our guest. So obviously, I'm Jamon. He's Mazen and I will introduce us more formally in a second, but Josh Thomas is here, Cardinals fan. Obviously you were probably a big McGwire fan, Mark McGwire fan.

Josh Thomas:

Yeah. Yeah, it was a pretty big deal when I was a kid. It's what brought baseball back from after the strike.

Jamon Holmgren:

It's true. Yeah. So obviously McGwire then hit what, 73? Something like that? 70... No-

Josh Thomas:

72, I believe.

Jamon Holmgren:

72. And then-

Mazen Chami:

Isn't 74 Bonds?

Josh Thomas:

Bonds.

Jamon Holmgren:

Barry Bonds, yeah. Yeah he hit 74.

Josh Thomas:

Speaking of PEDs, yes. 

Jamon Holmgren:

The pitchers were all on steroids as well. There's all this whole argument, but we are, believe it or not, not a sports radio program. We could talk about this all day. I will get back to our main topic here. I'm Jamon Holmgren. What, Mazen?

Mazen Chami:

I was going to say, isn't GitHub Copilot our PED?

Josh Thomas:

It's fair.

Mazen Chami:

Anyways, back to your intro, Jamon.

Jamon Holmgren:

I did a joke tweet. I don't think very many people got it. I did a joke tweet that we have done some analysis on your code and found that you've been using AI assistance to write your code. So you are now banned from software engineering. No, people didn't really get it. I don't know. There's this whole chess cheating scandal going on. There's a poker cheating scandal. There's even a competitive fishing cheating scandal going on right now.

Mazen Chami:

I heard of that.

Jamon Holmgren:

So it was relevant, but it didn't get much attention. I thought it was funny. Anyway, I'm Jamon Holmgren, your host and friendly CTO of Infinite Red. I'm going to skip all of my stuff but you can listen to other episodes for my full bio. I'm joined today by my incredible co-host, Mazen, Mazen Chami lives in Durham, North Carolina, former pro-soccer player and coach, works at Infinite Red as well. And our guest is Josh Thomas who lives in Madison, Wisconsin, despite I guess being a Cardinals fan. So you must be from St. Louis.

Josh Thomas:

Yeah. Grew up in the St. Louis area, but in Madison, Wisconsin now.

Jamon Holmgren:

That's an interesting move-

Josh Thomas:

Yeah.

Jamon Holmgren:

To go that direction to the cold.

Josh Thomas:

It was a conscious move. It was wanting to move to a smaller city that was kind of a college town. So it was going to be Madison or Ann Arbor and Madison's just a little bigger.

Jamon Holmgren:

Okay. Okay. Just fit the profile. Josh is a Product Manager at Ionic, works on portals, which we will be talking about. He also worked on Stencil.js. Five years before that, before becoming a Product Manager, he was an open source developer, worked on the core team on Ionic. He has two daughters, he's into music. So really happy to have you on Josh. Really appreciate it.

Josh Thomas:

Yeah, thanks for having me. Happy to be here.

Jamon Holmgren:

This episode is sponsored by Chain React 2023. Chain React is returning in person this year. You should... Man, say that five times. You should sign up for the Chain React newsletter so that you will be informed when the conference and workshop tickets are available. Chainreactconf.com. That's exciting to have a different sponsor.

And then also sponsored by Infinite Red, we are a premier React Native design and development agency located fully remote in the US and Canada. Hit us up infinite.red/reactnative, and don't forget to mention that you heard about us through the React Native Radio podcast because we love hearing that.

All right, let's get into our topic. We brought Josh on. I've actually met with Josh a couple times about this just sort of off air, but Josh's been working on a thing called React Native portals and we're not... So first off, clear up the confusion here. You're not talking about React Portals and React Native, right?

Josh Thomas:

No, it's completely different. I didn't come up with the name, but when you think about it, the name makes sense. It's about empowering WebViews to appear within React Native. So it's kind of like a portal view into it. Most of the jokes we have at the company are about eating cake though, about the portals game.

Jamon Holmgren:

Okay. Yeah, I love that game. It's fun.

Mazen Chami:

How does Portal work then?

Josh Thomas:

So Portals, the underlying technology is something called Capacitor, which some people know about it, some people don't. It's really about this enhanced web view that you place within your existing React native applications. So the focus is really on existing applications rather than new development.

Jamon Holmgren:

Yeah. So more of a Brownfield approach. And so because of that, this seems to be more applicable to bigger enterprise. You have a lot of code, you can't just go and rewrite the whole thing.

Josh Thomas:

Absolutely, and we think about it more as empowering more teams to be able to contribute to an existing application.

Jamon Holmgren:

Right.

Josh Thomas:

So you could have many portals within your application. You could scale up the number of web teams that you have contributing to your React Native application, but React Native is just one of the targets. There's also portals for Native as well for iOS and Android.

Jamon Holmgren:

That makes sense. Now, Capacitor you're saying is an enhanced WebView. Differentiate this for us from React Native WebView, which I've been involved in open source. I know because of that experience, how complex WebViews really are.

Josh Thomas:

Yes.

Jamon Holmgren:

Most people don't realize. It's almost like an entire framework within a framework. React Native WebView is probably arguably the biggest React Native third party library that has any adoption. It's enormous and there's a reason for that. It's got a huge API surface, so many props, so many different ways you can configure it and it continues to grow because there's just so many different ways that you can use WebView. But talk about Capacitor a little bit more and differentiate it from React Native WebView.

Josh Thomas:

Sure. React Native WebView is really about empowering developers to show web-based content, things that are served from an HTTP server. So you've got an existing web property that you're trying to show in your React Native application. The way Capacitor works and Portals as well is it's showing web content, but that content actually lives on device. So it's meant to be more around creating an experience that feels like it fits in the larger application rather than taking someone and showing them content from a website.

So the files live on device and there can be communication back and forth from the web code, the JavaScript code, the HTML and the host application, which is native or React Native at this point.

Mazen Chami:

So looking at your package, it seems like this is a new application that's out there. So I think it was released a couple months ago, if I'm not mistaken.

Josh Thomas:

Yeah. We actually released it in September, but it really started getting popular, I'd say around January.

Mazen Chami:

Got you. Okay, cool. So about a year at this point. Would it be October?

Josh Thomas:

Yeah, for Portals.

Mazen Chami:

Correct.

Josh Thomas:

Capacitor though, the tech that it's based on has been around for five years, I think.

Mazen Chami:

Got you. Okay, it's been around for a while. What would it look like? What would a journey look like for me or any team out there that's looking to move a web app to a React Native application successfully and what would that look like?

Josh Thomas:

Yeah. I think it's a difficult answer, right? Because it's really not about taking a web application that's hosted somewhere and putting it into a React Native application. It's really taking a perspective on your existing React Native application and looking at features that you're trying to add to it. And a very common scenario in large companies is those features are developed by individual teams.

So in web perspective, it's easy to have these things separated because URL is good enough to separate, put a reverse proxy in place. But in Native applications or in React Native applications, that separation isn't as easy across teams. We don't have the idea of micro front ends and React Native, unless I'm wrong.

Jamon Holmgren:

No, you're right. And this, from our conversation, it seems like it's a solution for that problem specifically where it's like, "Hey, we have a team. We don't want them to have to integrate as tightly with the rest of the team. We want them to operate a little more autonomously and build out their feature." Maybe they're in charge of one particular feature.

Just as an aside, I heard for example that there was a whole team devoted to just the buy button on Amazon or something like that. They're these big ones with very critical interactions. They'll have whole teams just for one component, more or less.

Josh Thomas:

They've got an entire team just dedicated to showing you a list of products that might be things that you would want to buy after you've made a purchase.

Jamon Holmgren:

Yeah, exactly. So this is what we're talking about.

Josh Thomas:

Yes.

Jamon Holmgren:

These types of things. So in those cases, you don't want this... Well actually, tell me what happens when you don't do this, when you don't do sort of the micro front end, what are the problems that pop up?

Josh Thomas:

I think a lot of the problems that you see are things that you see with typical monolith applications, like large code bases, is that you're trying to have a code base and when you look at it from something of more Native versus React Native, there's a limited number of React Native or native developers at an organization that have that expertise. So in order to add additional features, you have to either put it in the queue of the timeline of the priority of features that are going to be released, or you hire more developers in order to accomplish that.

But it doesn't always work out because usually the features that are being provided are... the web developers that are working on it are experts. They're experts in that specific problem space. So there really isn't an easy way to do it. Maybe they're using React Native WebView to accomplish it.

Jamon Holmgren:

Right. Oh, I know that's definitely happening. It's not a great tool for that necessarily because it is such a general purpose Swiss Army knife.

Mazen Chami:

I think there's a cool, and I want to pull from your website, I believe I found this, "Ionic Portals allows you to quickly and safely embed those experiences in an iOS and Android application without massively impacting Native developers' workflows, while also allowing web developers to test their code without needing a mobile device." I think that's huge because I'm working on a project right now where I can't get the iOS and Android up and running and sometimes that's usually the toughest thing around environment specific because quick context, I was working on a ReactJS app, micro front end specifically, and then now moving to React Native to help support this one issue. My environments are completely different in this scenario because it's two separate projects.

So I'm really struggling converting everything over and I know I'm going to have to reverse engineer that back so I can get back to the web stuff later. So I think this is key and it helps a lot. So can you talk about some of these developer experiences that you guys have heard from others about some good stuff, maybe some other side of things where some things might need to improve on that too?

Josh Thomas:

Yeah, I think what we've seen really is the tooling that we've created is specifically for native developers or React Native developers because if you tell a web developer that they're able to contribute to an existing mobile application, they're excited about it. They don't need to jump through a lot of... They're okay jumping through a few hoops in order to get it to work but really convincing the teams that exists with React Native or Native in general, you've got to create tooling that speaks to them and creates a great developer experience for them in order to empower more teams to do so. So we've gone through a lot of work on this and creating an experience that feels like it belongs in the existing problem space. If you are a native developer, we're not going to have you do an NPM install. Right? It doesn't make sense.

I think one of the benefits though for our web developers is that the experience of development feels like... We expect you to do it in Chrome or Safari or your development should not be different than the experience that you have today for web development. It's just that it's used in a Native application rather than being hosted on a website somewhere.

Mazen Chami:

That's great.

Josh Thomas:

And I think that that's one of the things that people are really interested by is that they can focus on doing the development they've always done, but just have another place where that content can be used, a new platform.

Jamon Holmgren:

So I think the biggest question that comes to my mind when I hear this is, is it going to feel Native? That's the big thing.

Josh Thomas:

Oh, yes.

Jamon Holmgren:

Is it going to feel like janky? Is it going to feel like... I built a couple apps in PhoneGap way back in the day and it was sort of like there was a lot of jank and it was hard to get it to feel like a Native app, but with Portals, is the performance good? And then how'd you do that?

Josh Thomas:

Yeah. There's a few things. So comparing it to back in the day, things have changed dramatically since then for browsers and for devices, right? I've got a new iPhone 14 Pro and comparing that to what I had with a 3GS-

Jamon Holmgren:

Right.

Josh Thomas:

They're not the same. It's a new ballpark now. But also, browsers have really changed dramatically over time as well. And specifically for iOS, right? Years ago we were using a different WebView than what we have today. So we're using WK WebView and that's on par with what Safari provides.

Jamon Holmgren:

That of UI WebView. Yeah.

Josh Thomas:

Exactly. So to start with, there's a lot of things that have changed in the web space on mobile devices, but also, I think that the biggest problem people have with using WebViews in a native application is the latency of the experience, the amount of time it takes in order to display that content. And that's why we are so gung-ho about only allowing content to be displayed from files that live on device.

Jamon Holmgren:

Which is a lot like React Native. If React Native had to go out and download the JavaScript every time it needed to do something, it would be slow too. But because the JavaScript lands is living on the device and that's what you're doing with Portals as well, you're keeping the web content right on the device, that makes sense. You're just kind of getting rid of the whole HTDP request cycle.

Josh Thomas:

Right.

Jamon Holmgren:

And also potentially loading errors and things like that.

Josh Thomas:

And the waterfall from the initial request taking place in order to all the subsequent files loading.

Mazen Chami:

Yeah.

Josh Thomas:

And we know that on mobile devices, you really don't know what the network's going to look like at any point in time.

Mazen Chami:

Does Portal have support for Expo or even now the latest new architecture specifically?

Josh Thomas:

It's a great question. We don't have support for Expo right now and we actually evaluated this early on, but all of the customers that we've talked to who are using React Native have already ejected. So it wasn't really a priority for us to ensure that it worked, considering all of our customers are already in a scenario for not doing it.

Jamon Holmgren:

And Expo now has support for custom native code through their config plugins and things like that. So honestly, even Expo isn't really concerned about things supporting, specifically Expo Go and the sort of fully managed workflow. That's actually a very small part of Expo these days.

Josh Thomas:

Yeah. And for the new architecture, I think it's definitely something we're evaluating and we're excited to see where it goes. But really, we take a look at what our customers have, what their needs are, and what are the prospects we talk to, what their needs will be? So we're probably going to be a little bit behind on introducing things from the new architecture until it's needed.

Mazen Chami:

Got you.

Jamon Holmgren:

I don't even think you're behind, to be honest. I think new architecture, to be completely honest, is at least nine months out in terms of adoption, widespread adoption, potentially longer. We're going to have to see but even though Facebook is using it internally already in their apps, the community has long ways to go to catch up and there's a reason for that. It's not just the community being lazy. There's actually still a lot of stuff that has to be ironed out before it will be.

Otherwise, the transition would just be very brutal. So right now if everybody tried to swap over, I think they would have a really tough time. I don't think you're necessarily even behind. I think you're just evaluating like everybody else.

Josh Thomas:

It's good to hear.

Mazen Chami:

So you mentioned some customers that have given you guys some feedback on Portal. Your website, for as far as the examples go, only highlights e-commerce, and I can see how that would be a good fit for this.

Josh Thomas:

Yeah.

Mazen Chami:

What are some other cases or is it only e-commerce that's your main target? What are some cases for using this?

Josh Thomas:

Yeah. So what you read about e-commerce was originally when we wanted to show this off, we created an example application and e-commerce was an easy one for people to understand, especially for a checkout process that they want to share across platforms. I think that we've got customers across many different spaces. Financial spaces, a few different customers there, a large airline. And I think that some of the feedback that we've received is if they're replacing an existing WebView, the performance improvement is dramatic because they're not dealing with existing latency but I think what we're hearing from the financial vertical in particular is empowering those web teams to be able to contribute to that existing native application is something that they are really, really excited about.

I actually come from a financial company. First eight years of my career was working at Edward Jones, which is a large financial company and they have a lot of teams with expertise in different areas and those teams, their primary language is web. That's just how it works for internal applications. So being able to take that and bring it to mobile and not just have it on desktop is something that a lot of companies are looking forward to.

Mazen Chami:

Yeah, and you named a couple industries where security is key. Financial, forget about-

Josh Thomas:

Yes.

Mazen Chami:

If finances weren't secure, it would be mayhem everywhere. So that's pretty cool that with security that you can use this and then use React Native in general also.

Josh Thomas:

Yeah. All of our products go through assessment. We have a security team that we work with in order to evaluate those and ensure that there aren't any... I don't want to speak too much to it, but any real problems.

Mazen Chami:

Yeah, oh yeah.

Jamon Holmgren:

On your website, there's a thing that goes through who Portals is for and who Portals is not for. So I'm just going to read off some of these, "Portals is for you if you'd like to accelerate app development, make more effective use of your time, you're maintaining a complicated brittle WebView on your own." I know there's people in the audience who are probably nodding right now. "Your apps require seamless user experience embedding web content into Native. You want to incorporate web-based experiences with the skills your web team already has. You'd like to enable both web and Native teams to collaborate in a safe and effective manner. And then it's not for you if you're already content with using the stock WebViews from the platform vendors. You'd prefer to roll your own security features integrations. You're happy with traditional WebView user experience in Native apps. You're not currently using or planning to leverage any web-based experiences in your apps, or you plan to keep your web and native teams focused on their respective platforms." I think that's a pretty good list of how you would evaluate whether Portals is for you or not.

So one thing about this, and normally when we have people on, it's is like this is open source and free for everyone. But in this case, because Portals is focused on more of an enterprise level and you're really putting a lot of effort into making that a great experience, this is not a free license, right? This is not MIT?

Josh Thomas:

No, it is not MIT, but we have a unique license with this. So you're able to use Portals in non-production environments. This is source available.

Jamon Holmgren:

Okay.

Josh Thomas:

So if you want to look at the source code, you can do so. And if you're working at a company that has less than a million in revenue, you're actually able to use it in production.

Jamon Holmgren:

Okay.

Mazen Chami:

For free.

Jamon Holmgren:

Well, that's a pretty permissive thing. So essentially, you could kind of start off with, "Okay, this is helpful for me and my startup, use it for free." And then once you get to that million level, then-

Josh Thomas:

Talk to us.

Jamon Holmgren:

Yeah. Then talk to you.

Josh Thomas:

Yep, definitely.

Mazen Chami:

I like that model. That's interesting.

Jamon Holmgren:

Yeah, very cool.

Josh Thomas:

We came up with that license because we're traditionally an open source company. A lot of the tools we provide are open source and we were trying to come up with a license that we felt worked well for our existing customers or our existing community, as well as what we want to provide in the future for larger organizations.

Jamon Holmgren:

Totally makes sense to me. And honestly, and you know this Josh, you've done open source for a long time, getting sustainability within open source is very difficult. And I will tell you right now that the WebView team is not real fond of maintaining WebView. We're just not. It's not very fun. There's no glory in it. Nobody notices. If it's broken, they notice. That's it. Sort of like being an offensive lineman in the NFL. Nobody notices you unless you do your job badly.

Josh Thomas:

Very true, very true.

Jamon Holmgren:

So that's essentially what it is and a lot of open source is that way. It just is. You're not the wide receiver, you're not the quarterback, you're just in the trenches.

Josh Thomas:

It's really fun to create a new project. New open source is always fun, but supporting something in open source over a very long time is very draining and difficult.

Jamon Holmgren:

And that's why I think coming up with licensing and whatnot is with some permissiveness, you can still use it on your smaller apps and things like that, but I think that that's actually... I think we need to be exploring these routes to make it sustainable long-term. Otherwise, we just won't have as cool tools.

Josh Thomas:

Completely agree.

Mazen Chami:

If I'm a small startup and I'm trying to break into some of these industries, I get this essentially for free until I hit my milestones and then when I hit my milestones, obviously as any company grows and hits that million dollar mark, it comes with a lot more responsibilities. So being able to afford it at that point should be absolutely fine because it's gotten you that far. And potentially, if you're in the e-commerce field, it's brought you all that money essentially at no cost.

Josh Thomas:

Yeah. And honestly, when companies get to that size, it's a liability not to have someone to help you.

Mazen Chami:

Absolutely.

Josh Thomas:

Right?

Jamon Holmgren:

I would agree with that. Yeah.

Josh Thomas:

They're looking for that support.

Jamon Holmgren:

There have been situations where we've had open source libraries. I know one time for example, we were working on a project that used UI Kitten, and we reached out to the company behind UI Kitten to help us with an issue and being able to pay them to help us was helpful. It was really helpful. When you don't have that support when it's just... Like WebView, I hate to say this, but there was a guy that reached out and said, "I'd like to pay you the core team to fix an issue for me." And nobody on the core team was interested, even though they were offering money, that's where we were. It was, there's no real support there. I hate to say it because WebView is a very important part of the ecosystem that's so complicated. So it is such a complex beast. It's painful to work on. So I think it's good that there are some alternatives out there.

Cool. Well, thanks so much for coming on, Josh. It was a quick little overview. People can go check out ionic.io/portals. Go check out Portals. Like Josh said, you can try it out on your smaller projects and see how it works for you. Maybe it'll work better, especially if you're maintaining something that's using React Native WebView and you're not super satisfied with how it's working. Don't contact us. Go check out Portals instead and see if that works for you better.

If you'd like to nerd out more about React Native, you can check out my Twitch stream @rn.live. By the way, I haven't been streaming much lately. We've been getting ready for a conference in London, so I may not be streaming for the next few weeks, but I'll get back to it. Usually during the fall and winter I stream more often. Maybe I'll have Josh on and we'll do some hacking, some open source hacking or something.

You can also join our Slack community @community.infinite.red, and our new Twitter community, rntwitter.infinite.red. Where can people find you, Josh, online?

Josh Thomas:

Find me on Twitter @jthoms1.

Jamon Holmgren:

@jthoms, T-H-O-M-S1.

Josh Thomas:

Correct.

Jamon Holmgren:

Mazen is at @mazenchami and you can find me @jamonholmgren. Make sure to follow all of us and then also go and follow React Native Radio @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 2023 and Infinite Red.

Check us out @chainreactconf.com and infinite.red/react. Thanks to all of you. Make sure to subscribe. Maybe give us a rating on your favorite podcasting platform. By the way, Robin's not here, but Mazen, do you have a dad joke instead of the usual mom joke?

Mazen Chami:

I do.

Jamon Holmgren:

Okay. I'm preparing myself.

Mazen Chami:

I was on a diabetes awareness site. It asked me if I accept all cookies? Is that a trick question? That's the joke.

Jamon Holmgren:

That's the joke. There's just no way to end the episode elegantly after a bad joke like that. I just don't know how to do it.

Mazen Chami:

Thanks. I'll be here all week, by the way.

Jamon Holmgren:

Yeah, sure. We'll see you all.