Mazen and Robin catch up on five months of React Native and Expo releases, covering the biggest updates in 0.82–0.84 and Expo SDK 55. They talk through the move to the new architecture, Hermes V1 becoming the default, faster builds, better developer tools, and AI updates that make upgrading a little less of a headache.
Show Notes
Connect With Us!
This episode is brought to you by Infinite Red!
Infinite Red is an expert React Native consultancy located in the USA. With over a decade of React Native experience and deep roots in the React Native community (hosts of Chain React and the React Native Newsletter, core React Native contributors, creators of Ignite and Reactotron, and much, much more), Infinite Red is the best choice for helping you build and deploy your next React Native app.
Jed Bartausky:
Welcome back to another episode of the React Native Radio Podcast. Episode 357, React Native 82 through 84, and Expo SDK 55.
Mazen Chami:
Welcome back, React Native Radio fans. I'm Mazen, she's Robin, and we're React Native Radio. Before we get into our topic, let's hear from our sponsor. Infinite Red is the premier React Native consultancy located fully remote in the US. We're a team of 30 senior plus level React Native developers and support staff, and have been doing this for nearly a decade. If you're looking for React Native expertise for your next project, hit us up at infinite.red/radio. Don't forget to mention that you heard about us through the React Native Radio podcast. All right, let's get into our topic for today. Today we're going to talk about a topic that's been, well, it spans a five-month timeframe. That's a lot. Yeah. October 2025 to February 2026.
Robin Heinze:
We're a little behind on our React Native and Expo release episodes. There's been a few, so we're going to talk about all of them.
Mazen Chami:
We're going to cover React Native 82 to 84, and that 84 coincides with Expo SDK 55, which we'll mention along the way. Let's dig into it because there's a lot of ... We've kind of put this out in little chunks. I think it is. So it's like one, two, three, four. Then we have our other five section. So a lot of cool stuff has happened in these three releases.
Robin Heinze:
There's some overall trends that span all of these releases. We saw some patterns, so we'll talk about—
Mazen Chami:
It. Yeah. Yeah. We can't do a React Native specific one and then an Expo specific one.
Robin Heinze:
They're all tied together.
Mazen Chami:
Yeah. They do the same thing.
Robin Heinze:
And if we had done them just one in a row, we would've been talking about the same things each time.
Mazen Chami:
Exactly. Yeah. And then if we had done Expo SDK separately, it's like, oh wait, remember three episodes ago? Well, okay. Robin, first section is the architecture transformation. How has the current architecture evolved in regards, especially to the legacy architecture?
Robin Heinze:
Well, this is maybe the last one of these where we'll even be talking about the architecture because in version 82 or 0.82 is the first release that is entirely new architecture. You cannot even turn on the old architecture. The new arch enabled equals false flag is ignored. The interop layers are fully in place. This is the architecture in 82. So if you're still running the old one, you are stuck on 81 until you migrate. So hopefully that means we won't even be talking about architecture anymore because it'll just be the architecture. I think they're still going to be cleaning up a few things. 82 is where they drew the line, but then 84, there was still a bunch of legacy stuff that was being removed, like stuff that you can't access anymore, but that they're just cleaning up. And then on the Expo side, 54 was the last to support the old architecture.
And so 55 is all new all the time. We're done with the old.
Mazen Chami:
Out with the old and in with the new.
Robin Heinze:
And in with the new.
Mazen Chami:
Yeah. So much migration. Thank you to the Meta team and everyone else in the open source community that has put so much time into this for sure. Cool. Should we move on to the next one?
Robin Heinze:
Yeah, that's pretty much what there is on that — basically it's like there's not a lot of new work. It's just like, “Hey, we're finally turning off the old one.” So it's definitely noteworthy, but there wasn't a lot of actual changes other than ignoring the flag and removing some legacy stuff.
Mazen Chami:
That's awesome.
Robin Heinze:
But the next big piece was Hermes.
Mazen Chami:
Yeah.
Robin Heinze:
So Mazen, you want to talk about Hermes.
Mazen Chami:
Yeah. So I think one thing to keep in mind is as of now, everyone's probably heard of Hermes V1 and what it's capable of and what it can do. Version 82, which came out again in October, five months ago. Not to be confused with static Hermes, right? Hermes V1 came out as experimental. There were some great performance benchmarks. I think we saw Expensify said their app had a three to 9% faster bundle load time and you can opt in for this. It's experimental, you opt in for it. In 84, V1 became the default, but you can opt out of it. So if it's not compatible with what you have, some packages you're writing, you can kind of come in and out of it optionally.
Robin Heinze:
If you're opting out, you are having to build from source. Is that—
Mazen Chami:
Correct.
Robin Heinze:
Right.
Mazen Chami:
Yes. Yeah. Yeah. Because a lot of the changes that happened in the older versions where the building is so dependent on Hermes. As far as it goes from the Expo land, you have to define your Expo build property configuration to make sure you're using V1 if you want to use it. And also something that's opt-in is faster updates for end users. Something that I'm actually noticing — I just finished an Expo Updates implementation, like a QR code on your push notification so that product can test the app quickly and give me feedback on the new feature before we take it to QA and all that. One thing I am noticing is my initial implementation of it, which I did about a month ago, was good, but I'm seeing much faster times now. I need to do a percentage check on the times and see how it is, but Expo Updates does byte diffing, so it's much faster.
Robin Heinze:
Nice.
Mazen Chami:
And I'm noticing it's much faster because I remember before it was kind of one of those things where I'd set it and forget it and move on to my next ticket, but now it's like I set it, I do my push and then I start pinging the BAs and I'm like, “Hey, you all ready to test?” And by the time they get back to me, which usually they're kind of on call because we're trying to get this app out ASAP, it's ready. So quite some good improvements in performance there.
Robin Heinze:
So by diffing, it's comparing the binary instead of the regular code. Is that what that means?
Mazen Chami:
I don't know exactly what it was doing before, but yes.
Robin Heinze:
It's like a more efficient diffing mechanism. So—
Mazen Chami:
When—
Robin Heinze:
You're getting an over-the-air update, it figures out what's changed quicker. Cool.
Mazen Chami:
Yeah. And I wonder if they're only shipping the difference within it, which is why it makes it faster, right? I think that kind of makes sense.
Robin Heinze:
So many smart people at Meta. We've had Svette on the podcast several times. Yeah. He's really fun to talk to and he just has so much knowledge in his brain that I can never hope to have.
Mazen Chami:
Yeah. The next one actually that I want to talk about is React 19 landing in React Native. This is big. It has some really cool features. So if you're a web and React Native developer, and when you're working on your React project, you kind of get these instantly as soon as they roll out, we have to wait for a little bit. How long has React 19 been out for before we got it in 82? Anyways, one big thing is React 19.2 specifically comes with Activity and useEffectEvent, right? This is a React hook that lets you separate events from effects. useEffect can be ... How do I say this?
Robin Heinze:
I think it was overused. Yes.
Mazen Chami:
Overused and— And people—
Robin Heinze:
Use it for stuff that it wasn't good at or really meant for.
Mazen Chami:
Yeah. And all the linting tools will always make you exhaust them, which doesn't give you necessarily what you want. And if you want one on mount, you're not supposed to put anything in the dependency array, but your lint tool requires you to, so you kind of have to disable it and put a comment while you're disabling it. So there's just all this stuff.
Robin Heinze:
This is just the cleaner way. When we evolved from class components, I think a lot of people, probably myself included, didn't really know what to do without componentDidMount because that's where we would fetch all our data and do all this stuff. And then functional, like the hook stuff came along and we were just looking for a one-to-one replacement. And so we're like, “Well, it seems like useEffect is what you use for that.” And it turns out useEffect is actually not really ideal for those sort of one-off events. So now we have useEffectEvent, which is more optimized for exactly that.
Mazen Chami:
Yeah. Yeah. Awesome. Yeah. And I think some other key features — the owner stack for better error debugging. That red screen where usually you're just like, “Ugh, okay, fine.” Dismiss, put some console logs in and figure out where your error is because it's not really helpful, is getting better. I won't dig into that because I think we discussed that a little bit later. Activity. I know I glossed over it earlier, but I want to kind of chat about Activity real quick. So in the context of React, what is Activity? Activity is kind of like what was — I believe it was called Suspense in the past, right? It does the same thing where you can hide and show your UI based off of a state. So it's Activity and then you set a mode, whether it's visible or hidden. And then it's kind of like on web, it does display none versus display and shows the items for you.
So it's a cool way of doing like a loading state or even showing a sidebar. Well, that's more web related, right?
Robin Heinze:
I mean, you use it to control the visibility of stuff. So—
Mazen Chami:
Like—
Robin Heinze:
Tabs, modals, sidebars, yeah.
Mazen Chami:
Yeah.
Robin Heinze:
Yeah, based on the lifecycle of the component.
Mazen Chami:
Just hide your UI — it makes it easy for you. Suspense was more of like a loading state. This is more of, “Hey, I just need to hide this thing while my app is doing something else.” Yeah, cool. I mean, that's pretty much it. I would just say read up on the React 19.1 to 19.2 docs to get more information, right?
Robin Heinze:
Yeah. React Native 82 was 19.1.1 and then 84 is at 19.2.3. So yeah, spanning just a couple of the minor versions.
Mazen Chami:
Yeah, because I know there's one and I'm seeing it in the notes, but it's called useDeferredValue. This is a cool one. It's almost like a ... I think of it as like a debounce almost. You're basically saying defer updating part of my UI based off of this. And I think it takes a value that you can then control within it. Yeah. Lots—
Robin Heinze:
Of optimizations for snappy UIs—
Mazen Chami:
And—
Robin Heinze:
More performance.
Mazen Chami:
Absolutely.
Robin Heinze:
We also saw a bunch of developer experience wins in these few versions. My favorite being the updates to React Native DevTools. There's now a desktop app for React Native DevTools, which is very exciting. No more keeping track of which Chrome window is your debugger compared to your actual Chrome.
Mazen Chami:
And that's version 83—
Robin Heinze:
Technically, but— But Expo 55. With 83 and Expo SDK 55, that's right.
Mazen Chami:
Yeah.
Robin Heinze:
And there's also more stuff in the React Native debugger, like performance tracing and network inspection. It's getting more and more comparable to the dev tools that you would expect in the browser. Really, really, really good strides there. I'm really happy to see the debugging experience get more robust and mature. So really excited about that. Also on the performance side, 84 now comes with pre-compiled iOS binaries by default. Now this was a feature that came in an earlier version, but it was opt-in, I believe. And now as of 84, it's on by default. So what this means is just that the React Native core library comes pre-compiled so you don't have to compile it during your React Native Run iOS builds, basically. And so build times are way smaller. My notes say 120 seconds was the previous build time down to 10 seconds for the RN Tester app — that is the app they use to test all the React Native versions.
Mazen Chami:
Yeah. Yeah. I remember when I was on version 77 helping with getting that out the door, we had to use the testing app for that. So I can only imagine how much faster that is now.
Robin Heinze:
Insane improvement—
Mazen Chami:
In real time. Yeah,
Robin Heinze:
That's wild.
Mazen Chami:
And also another thing to mention is moving towards Swift Package Manager. That's a big one, right? Because CocoaPods is getting sunset at the end of this year. Which is so—
Robin Heinze:
Sad.
Mazen Chami:
December 2026. CocoaPods—
Robin Heinze:
Is annoying, so that part's not sad. I just love the name. I've always enjoyed CocoaPods.
Mazen Chami:
It's—
Robin Heinze:
A cool package name.
Mazen Chami:
SPM doesn't ring a bell, doesn't ... It's almost like spam. It sounds like spam to me.
Robin Heinze:
CocoaPods just makes me think of dessert and I'm like, oh, it's cocoa.
Mazen Chami:
I see that.
Robin Heinze:
Yeah. Maybe that's just how my weird brain works. But yeah, in terms of usability, I think people will be more happy to use Swift Package Manager.
Mazen Chami:
Yeah. It's also exciting that we are potentially more than half a year away from it being sunset. And I think it's just going to be read only. You can still use it, just knowing that if anything breaks, that's it. You'd almost need to fork it and fix it yourself. So it's almost cool that this early in the game, we're starting the transition towards it and hopefully we're on it, we're stable, we fix all the bugs that are there well before CocoaPods is sunset. And I'm sure the Meta team has a roadmap for that.
Robin Heinze:
Agreed. There were some web API compatibility improvements as well over all three versions — performance APIs, DOM node APIs, URL APIs — lots more just sort of bringing the web APIs up to the standard on the web, which I think a lot of developers appreciate.
Mazen Chami:
Yeah. And that's like if you ever use, for example, new URL to set up a hash, a host, a pathname. It never—
Robin Heinze:
Worked exactly how you wanted it to.
Mazen Chami:
Yeah. Yeah. Or even like URLSearchParams, which then give you set, get, delete, which makes it easier, more optimal instead of you putting together a string and being like, “Append as URL or as something.” So it parses. Yeah.
Robin Heinze:
I think I had to bring in like— There's a—
Mazen Chami:
Third party—
Robin Heinze:
Third party library to deal with URLs because the URL API was not up to where the web is, but now it sounds like it's closer.
Mazen Chami:
Yeah. Yeah. And I mean, this is cool stuff. I mean, the ability to just use JavaScript functions within React Native is great.
Robin Heinze:
You might also notice as a developer that there are some differences in the project structure in Expo SDK 55 — they revamped the default template. So now it looks a little different. There's a source folder structure now. So instead of it being in /app, it's in /src/app. So you can keep your configuration files and stuff a little bit more separate from your main app source. And they also brought in the native tabs API for the tab routing. So it's a much more platform native experience. So yeah, that was an Expo SDK 55 update. There was a bunch of other cool Expo stuff that's just the Expo SDK stuff, not necessarily React Native stuff.
Mazen Chami:
Yeah. Yeah. So for example, some of those — Expo Router V6 has been enhanced. So Apple Zoom transitions, experimental split view — I believe that's more iPad specific. Colors API for Material You setup. Robin mentioned it earlier, native tabs. Those have been cleaned up too, liquid glass and all that within it. So that's some cool stuff. Expo SDK 55 also includes the new Expo Brownfield package, so better integration for existing native apps. So if you have a native app, you can bring in React Native into your native app and slowly transition it over. And I wonder too, if you're a Flutter dev, you can probably do that too and transition and make your app a little more performant if you'd like.
Robin Heinze:
Yeah. There's an Alpha for Expo Widgets, which is fun. I love — if you're an iPhone user, I'm wondering how many of you out there actually use widgets. I love using widgets to customize your home screen and your iPhone experience.
Mazen Chami:
Yeah. When we were talking to William Candillon, we were talking about the Flights app and making them look cool. That's another one you could track a flight and kind of see where it's at and put that widget on your homepage.
Robin Heinze:
I literally have a widget on my homepage that's just a countdown to the next F1 race.
Mazen Chami:
Well, there you go. There you go. Now that's—
Robin Heinze:
Possible. Very important. It takes up — it's worth a good amount of real estate on my home screen.
Mazen Chami:
Yeah.
Robin Heinze:
Yeah. Oh, this one's cool. Experimental support for receiving shared data in Expo Sharing. So this was like a long-requested feature. I remember we built an app for a client several years ago that were requesting the ability to have your app receive shared data. So when you're in an app and there's a share option, you share it and it pulls up this bottom sheet and you can scroll through different apps to send the share to, like it's text or photo, whatever. But there was never a good way in React Native to set your app up to be a recipient of a share and to appear in that sheet. And it sounds like there's now some experimental support for that in Expo Sharing. It was always easy to share out. Yes. There was plenty of support for that, but being the recipient was hard and people have been requesting it forever. It sounds like they're finally adding it to Expo Sharing. So that's—
Mazen Chami:
Exciting. I believe there are native limitations to it too, both outbound and inbound sharing. So being able to fix that and standardize that is very important.
Robin Heinze:
Yeah. It does say it's experimental, but that's still a good step. It sounds like it's a gnarly problem to fix, and so that's probably why it's taken so long, but it's exciting. This next part made me laugh out loud. If you read the actual blog article announcement for SDK 55, they talk about changing their versioning scheme, meaning that all of the supporting Expo packages are now going to be aligned with the SDK version. So they're all going to be 55 to match SDK 55. But in the announcement, they included the meme of the guy going through the drive-through and he's doing the pay-it-forward thing where he's like, “I'll pay for the guy behind me.” And then immediately exits the drive-through and goes around and orders 55 tacos — but it's like 55 fries, 55 of a whole bunch of stuff.
We'll have to find the clip and put it in the show notes because it's too funny. But they used the meme in the blog for SDK 55, which I found funny.
Mazen Chami:
Yeah, that is funny. Yeah. And let's actually go to the last bit we have here, which — again, in today's world and where we're at in tech, we don't want to gloss over AI specific stuff. There's a lot of AI tooling out there now. I'm sure we're going to have a full episode on AI in general at some point soon. We know — maybe we'll pull in Jamon for that and have a chat. I'm sure—
Robin Heinze:
Jamon would love to make a reappearance to talk—
Mazen Chami:
About—
Robin Heinze:
AI tooling.
Mazen Chami:
Exactly. And a couple of things to just quickly highlight again — stuff like Xcode and Android Studio now give you the ability to integrate AI within them, but also from an Expo and React Native perspective, Expo is now giving us an Expo MCP server for you to use also with agent skills. So if you go to the Expo Skills repo, which I'll include in the show notes, there's a huge collection of their official AI agent skills that you can use with Claude Code. And I believe along with the Opus model, it's fine-tuned for that. So again, it kind of leads towards the end of this conversation here where it's like, how do you upgrade? Try out the Expo skill, use that skill to help you with the upgrade, or even just do it the old-school way. If you're using the React Native CLI, use the Upgrade Helper.
If you're on Expo, upgrade by doing npx expo install expo@next --fix, and that'll kind of get you migrated over.
Robin Heinze:
I'm sure there are devs out there that still do them by hand, which is totally fine. Yeah. I cannot imagine going back to doing them by hand now that I've experienced doing them with agents, but that'll be a whole topic that we'll do another episode—
Mazen Chami:
On. Yeah. And we're going to include all these links to 82, 83, 84, SDK 55 in the show notes, check them out if you haven't already. There's always some good nuggets in there that are important to look at. And kind of like — I want to end on this last one. From a React Native perspective, version 0.83 was the first release with no breaking changes.
Robin Heinze:
Woo-hoo.
Mazen Chami:
Our baby's all grown up, right? This is amazing. This is big news. This is great.
Robin Heinze:
Time for version 1.0.
Mazen Chami:
Is it? Right. That should have been 1.0, right? That would have been a great thing. Hey, no breaking changes.
Robin Heinze:
I don't see it — I don't see it ever happening. No, it's—
Mazen Chami:
Fine.
Robin Heinze:
We just have a party when we get to 0.100 though.
Mazen Chami:
Yes.
Robin Heinze:
That'll be a fun episode that we'll do.
Mazen Chami:
That will be.
Robin Heinze:
It's not 1.0, but it's still something to celebrate.
Mazen Chami:
We'll still be here for episode React Native 0.1000. We got you guys. Don't worry.
Robin Heinze:
Yep.
Mazen Chami:
Awesome. Well, yeah, that's all we have. Those are, again, our takes on the major highlights from these past five months of upgrades. Go ahead, upgrade your app. If your client is being like, “Well, no, I don't want to spend time on that. Let's focus on new features and stuff.” Well, I can accomplish those features even better for you and give you better UI and performance if you let me upgrade. That's what I always say.
Robin Heinze:
Works every time.
Mazen Chami:
Every time. And that's it for this episode. Robin, as always, do you have a mom joke for us?
Robin Heinze:
Do I have a good one? Today I learned if you turn a canoe over, you can wear it as a hat because it's capsized.
Mazen Chami:
That's a good one. That is a good one.
Robin Heinze:
That was from Carlin. He is a source of many of my mom jokes.
Mazen Chami:
Yeah. All right. Well, thank you and see you all next—
Robin Heinze:
Time.
Mazen Chami:
Bye.
Jed Bartausky:
As always, thanks to our editors: Todd Werth, Tyler Williams, and Jed Bartausky. Our marketing and episode release coordinator, Justin Huskey, and our guest coordinator, Mazen Chami. Our producers and hosts are Jamon Holmgren, Robin Heinze, and Mazen Chami. Thanks to our sponsor, Infinite Red. Check us out at infinite.red/radio. A special thanks to all of you listening today. Make sure to subscribe to React Native Radio on all the major podcasting platforms.




There’s no perfect time to get started. Whether you have a formal proposal or a few napkin sketches, we’re always happy to chat about your project at any stage of the process.
Schedule a call