React Native Radio

RNR 195 - React Native 0.64

Episode Summary

Harris, Robin, and Jamon look at the newly released React Native 0.64 and go through all the changes, including Hermes on iOS.

Episode Notes

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. RN 0.64 Release Blog
  2. Hermes
  3. JavaScript engine Wikipedia definition
  4. MDN Proxy 
  5. Proxy vs Reflect

Connect With Us!

  1. React Native Radio: @ReactNativeRdio
  2. Harris -  @nomadicspoon
  3. Jamon - @jamonholmgren
  4. Robin - @robin_heinze

Episode Transcription

Todd Werth:

Welcome back to React Native Radio podcast, brought to you by me. My name's Todd and I edit this podcast. Episode 195, React Native 0.64.

 

Jamon Holmgren:

Hey, friends. Welcome back, or welcome for the first time, if this is the first time you're tuning in. This would be a weird episode to tune in for the first time, wouldn't you think, Robin? Would this be the one you would send people and say, "This is representative of our show?"

 

Robin Heinze:

No. I can't say that it would be.

 

Jamon Holmgren:

Yeah, it's-

 

Robin Heinze:

This is probably not the best introduction episode.

 

Jamon Holmgren:

It's a fine topic, because-

 

Robin Heinze:

It'll be a good episode, but it's not the best introduction.

 

Jamon Holmgren:

I think it will be a good episode, but it's deep in the weeds a little bit. We'll get to that in a second.

 

Jamon Holmgren:

I am Jamon, Jamon Holmgren. I am the host of this React Native Radio podcast and I'm joined by my two, spectacular... Have I used that one before?

 

Robin Heinze:

Probably.

 

Jamon Holmgren:

I don't think so. Co-hosts, Robin ... How are you doing, Robin?

 

Robin Heinze:

I'm good. Just looking out the window at the rain.

 

Jamon Holmgren:

Yeah, it's back.

 

Robin Heinze:

It's back.

 

Jamon Holmgren:

Wasn't gone for very long and now it's back. And Harris. Harris is, based on the virtual background I'm seeing for you on Zoom, you're not in the rain right now.

 

Harris Robin Kalash:

No. No, but it is cloudy outside, actually. You can't see it, but it's probably going to rain today.

 

Robin Heinze:

Our listeners can't see, but Harris's Zoom background is the "This Is Fine-"

 

Jamon Holmgren:

Like the fire in the background.

 

Robin Heinze:

The fire for "This Is Fine" dog.

 

Harris Robin Kalash:

So is my mask. My COVID mask.

 

Robin Heinze:

Oh my gosh. You have a "This Is Fine" mask?

 

Jamon Holmgren:

This Is Fine. No kidding.

 

Robin Heinze:

That's amazing.

 

Harris Robin Kalash:

I always get comments on it.

 

 

Jamon Holmgren:

Harris’ theme today is a denial, apparently.

 

Harris Robin Kalash:

Just being okay with everything going on.

 

Robin Heinze:

This is fine.

 

Harris Robin Kalash:

Yeah.

 

Robin Heinze:

It's fine.

 

Harris Robin Kalash:

Yeah.

 

Jamon Holmgren:

Robin is a senior software engineer. She's located in Portland, Oregon. She works at Infinite Red and specializes in React Native. Harris is a coding instructor at Concordia Bootcamp in Montreal and a React Native contractor.

 

Jamon Holmgren:

By the way, it is Montreal to people in Montreal, right? You don't call it something else like French, right?

 

Harris Robin Kalash:

Well, it depends.

 

Jamon Holmgren:

Forgive my ignorance.

 

Harris Robin Kalash:

Oh no. No worries. Honestly, people are used to both. Technically, in French, it's Montreal, but obviously, if you're speaking English, you're going to say Montreal instead of Montreal, which is the French pronunciation.

 

Jamon Holmgren:

Okay.

 

Robin Heinze:

Do Canadian people in Montreal, who are not speaking French, call it Montreal, or do they say it the French way?

 

Harris Robin Kalash:

I've heard both, but usually, they'll call it Montreal.

 

Jamon Holmgren:

Okay.

 

Harris Robin Kalash:

But there's a lot of bilingual people, so you'll often hear people switching.

 

Robin Heinze:

I feel less bad.

 

Harris Robin Kalash:

Yeah.

 

Jamon Holmgren:

Yeah. Is it kind of pretentious if you're just an English-only speaker, but you insist on calling it by the French pronunciation?

 

Harris Robin Kalash:

Maybe to other English-speaking people, but not to French people.

 

Jamon Holmgren:

Okay.

 

Harris Robin Kalash:

Maybe they'll appreciate it.

 

Robin Heinze:

They'll appreciate it?

 

Jamon Holmgren:

Maybe appreciate it. Yeah. I like that. I like that.

 

Jamon Holmgren:

This episode is sponsored by Infinite Red. Infinite Red is a premier React Native design and development agency located fully remote in the USA and Canada and Montreal.

 

Robin Heinze:

No.

 

Jamon Holmgren:

I totally butchered that.

 

Harris Robin Kalash:

A for effort.

 

Robin Heinze:

It's almost worse.

 

Jamon Holmgren:

Is it a B sound?

 

Harris Robin Kalash:

No. It's Montreal, so 'Mont' ...

 

Jamon Holmgren:

Mariel? It's not like Mario.

 

Harris Robin Kalash:

No, no, no.

 

Jamon Holmgren:

Okay. I'm going to stop replying here. I'm learning Finnish, okay? You know?

 

Jamon Holmgren:

Yeah. That's a very different language. Okay. Where was I? We have years of React Native experience. Since it was released deep roots in the React Native community. We are the hosts of Chain React, which, unfortunately, we haven't officially announced this, but just for the few people that are listening to this podcast, Chain React is not happening this year. Boo.

 

Robin Heinze:

Boo.

 

Jamon Holmgren:

But it is going to be happening, hopefully, the following year. So-

 

Robin Heinze:

2022!

 

Jamon Holmgren:

Stay tuned, stay tuned. That'll be fun. Then we can be in person again. We also publish the React Native Newsletter to over 12,000 subscribers. Infinite Red is the best choice in my humble opinion for your next React Native app. Hit us up at hello@infinite.red. You can go to infinite.red/reactnative and mention the podcast when you do so. Infinite Red is also hiring React Native engineers. If you're a senior level React Native engineer located in the US or Canada, go to careers.infinite.red, and fill out our form.

 

Jamon Holmgren:

If you are, even if you're like a senior developer and just React Native-curious, want to work with us, go ahead and fill it out anyway. We'll read it and we will respond. Alright, let's get to our topic for today. So today we're talking about what's new in React Native 0.64. As of this recording, earlier this week, React Native 0.64 was released. Of course, when people listen to this episode, it will be a few weeks... A couple of weeks from now, so it'll be a few weeks ago.

 

Robin Heinze:

There might be 0.64.1 by then.

 

Jamon Holmgren:

There may be, yeah. There may be some patches. I saw one thing that definitely deserves a patch in the core team Slacks, or the discord.

 

Robin Heinze:

So there'll probably be a patch out by then?

 

Jamon Holmgren:

There'll probably be a patch, yeah. There's something kind of broken right now. Yeah, that could have been a weird bug. But anyway, Mike Grabowski, of course CTO, co-founder at Callstack. One of my friends, a great guy. He is often in charge of releases and he wrote a blog post talking about 0.64. We will link to it in the show notes, but we're going to go through this. It'll be a little bit shorter episode today and we'll see... We'll kind of introduce what 0.64 is all about so that people that haven't looked into it yet have an idea.

 

Robin Heinze:

Sounds good.

 

Jamon Holmgren:

So the very first thing is Hermes for iOS.

 

Robin Heinze:

That's the big, exciting feature for this release. Hermes for iOS.

 

Jamon Holmgren:

Hermes for iOS. So Robin, what is Hermes? We've heard about this before? It was actually announced at Chain React 2019, I think.

 

Robin Heinze:

It's been kind of a buzzword for a while. Chain React 2019 was when it was first announced, but it was only available on Android. So now it's available on iOS, too.

 

Jamon Holmgren:

So this is something that I didn't think was actually going to be happening for iOS because when I talked to Mark Horowitz, the guy that announced it at Chain React, he works at Facebook, he kept it very close to his chest about iOS. And it sounded like that might be tough. And I was thinking: Apple's never going to allow that.

 

Robin Heinze:

Yeah, Apple doesn't like to let people mess with their internals. They want you to use their stuff.

 

Harris Robin Kalash:

I didn't even realize it was permissioned. I didn't know that you needed Apple's permission to swap out. I guess that makes sense. But yeah, interesting.

 

Jamon Holmgren:

They've denied apps for far less egregious changes. So this is very surprising to me, but with the power of Facebook behind it, maybe it won't be a problem. And certainly Google hasn't heard. But yeah, what's Hermes? Hermes is a JavaScript engine, right?

 

Robin Heinze:

Yes. So I actually had to do some research about what Hermes really is because I've heard people talk about it. I know it's about making things faster, more performant, but I didn't really understand what it is. And so I did some research this week and, like you said, Hermes is a JavaScript engine, but then I'm like, "what's a JavaScript engine?"

 

Robin Heinze:

So I dug a little deeper and it's pretty much what it sounds. It's a computer program that runs JavaScript, but usually it's embedded in your browser because JavaScript is kind of the browser language. And so a program that runs JavaScript is usually built into your Firefox or Chrome or whatever and so you can make a JavaScript engine that stands by itself, like Node JS uses something called the V8 engine.

 

Jamon Holmgren:

And V8 is what powers Chrome, right? That's the built-in JavaScript engine for Chrome.

 

Robin Heinze:

Prior to this, React Native was using the JavaScript engine that comes with iOS, which is called JavaScript Core.

 

Jamon Holmgren:

JSC?

 

Robin Heinze:

Yeah. I think it must just not have been as performant as we would have liked, or it wasn't optimized specifically for what we were trying to do with it, so they wrote their own.

 

Jamon Holmgren:

Yeah. That's the big thing with JavaScript Core. So the nice thing about it was it existed and it was open-source.

 

Robin Heinze:

Well, the fact that it existed is what made React Native work as a concept.

 

Jamon Holmgren:

Yeah, totally. And it was open-source. You could also use V8, but V8 was even worse, performance wise. And you wouldn't think so because JavaScript Core, generally speaking, if you were to use JSC in like Node context or something like that, it's just straight throughput. Let's say you're running a server, and you have tons of connections coming in and stuff, JSC is not going to do as good of a job as V8.

 

Jamon Holmgren:

When you think about it, what are the common use cases for an app? You're not sitting there handling a million connections per hour in a server constantly open, constantly running, that needs uptime measured in months, right? An app doesn't do that. What an app does is: you tap the icon, it pops up and needs to load fast, it needs to be up and running quickly, and then once you trigger something else off, it needs to immediately jump to that, it needs to have low memory footprint. Those types of things. Where like Node, let's say it's running on a server or something, it can use all of the memory it needs to to make it as fast, throughput-wise, as possible.

 

Jamon Holmgren:

And then it can also do things like a 'Just-in-Time' Engine. A 'Just-in-Time' engine would be where it... So it basically evaluates the code that's running and maybe tries different code optimizations until it finds one that works really well. So it'll like warm it up and then it knows, "okay, this is the fastest way to execute these instructions" because it's done ait a hundred times or a thousand times or a million times, and it will do it that way, and it really optimizes for that throughput in the end.

 

Jamon Holmgren:

It's sort of like maybe the difference between a race car that is optimized for top speed versus a race car that's optimized for like zero to sixty.

 

Robin Heinze:

Mm-hmm.

 

Jamon Holmgren:

And the very first taking off. Boom!

 

Robin Heinze:

Yeah.

 

Jamon Holmgren:

What you really needed was the zero to sixty side of it, and not so much the top speed for the JavaScript Engine. And that's why JSC worked okay to start, but it certainly wasn't optimized for the use case, it was optimized for a browser. Which again, is another... It's a whole different environment as well. Certainly, closer than V8 might be in Node or something like that. It was definitely optimized differently. So, I think that's why Facebook, internally, decided that they wanted to maybe build their own.

 

Robin Heinze:

And because they're Facebook, they can do that.

 

Jamon Holmgren:

They can do that. They can put a team on it and they have some very smart people working on that.

 

Robin Heinze:

Yeah. They have the developer power in order to build their own JavaScript engine.

 

Jamon Holmgren:

Yeah.

 

Robin Heinze:

Not all open-source libraries and frameworks have that behind them.

 

Jamon Holmgren:

It's very true. Usually, it's one developer in Nebraska somewhere who works on it in their spare time and if they quit, then the whole world comes down.

 

Robin Heinze:

Yeah. So yeah. So, Hermes, why is it exciting? Why do we care? You were talking about it decreases memory utilization, going to reduce download size. The most visible piece is that time to interaction or TTI will be a lot snappier.

 

Jamon Holmgren:

Yeah.

 

Harris Robin Kalash:

Also, it's nice to use the same engine across Android, iOS because you'll have less than inconsistencies there when you're installing libraries.

 

Robin Heinze:

Yeah. It's really exciting that it's cross-platform now.

 

Jamon Holmgren:

One of the early problems that we had was that on Apple's side, it was using the built-in JavaScript Core, which was actually internal, provided by iOS. And on Android, it would ship with its own version of JSC, so you would actually get the latest JSC on Android and you would have some old musty version-

 

Robin Heinze:

Lead to some really weird bugs.

 

Jamon Holmgren:

Yeah.

 

Robin Heinze:

Like things running differently or executing differently on Android.

 

Jamon Holmgren:

Yeah. I remember back in the iOS 9 days, it did not have proxy support, which, by the way, will be a common theme that we will talk about in a bit. But JSC did not have proxy support in iOS 9 and you couldn't upgrade it. Apple would not let you upgrade it, which is why this came out of left field. How did they allow a whole swap out of the whole thing, but not allow upgrading JSC?

 

Robin Heinze:

Facebook. Facebook is the answer.

 

Jamon Holmgren:

Yeah. That was kind of a big inconsistency. Now, they could have used on Android, they could have used V8, which was built into the operating system too but for the reasons that I mentioned, it just wasn't appropriate so they would actually ship, in your app, a JavaScript engine.

 

Jamon Holmgren:

So Facebook builds this custom engine, 'Hermes', and they release it for Android first because that's the easiest platform to get it approved and also, Android, despite having the latest version of JavaScript Core, was still having a lot of performance issues. First, TTI the... What is it? Time?

 

Robin Heinze:

Time To Interaction.

 

Jamon Holmgren:

That was really bad and needing to make the Android side perform better because Facebook's using this on a lot of their apps and if Facebook's laggy and slow on Android devices, Android users are going to go elsewhere. They released that and I think, Harris you've actually used it in a project, right?

 

Harris Robin Kalash:

Yeah, yeah. I've used Hermes on Android. Haven't yet on iOS but good to mention that I tried using it the first time and it just broke a couple of libraries because of the lack of proxy support. And, actually, now that I remember also the reflection API support. Which... The new release of Hermes also supports the reflection API, which is something I didn't know about until very recently.

 

Jamon Holmgren:

So let me ask you Harris, what's the reflection API?

 

Harris Robin Kalash:

I probably don't have a very good use case for it. From my understanding, it's very similar to the proxy API in the sense that it supports all the same methods, but all the methods on the reflection API are static. They can be used in the proxy API and the reflection API that it can be used together to work really well. I, personally, haven't really used it very well, but I actually do have a link to something that explains it really well that I could include in the show notes.

 

Jamon Holmgren:

Okay, cool. That's probably a good idea. We're going to try to keep this a pretty tight episode, but I also want to dig into that and see what that's all about. I know that it was... Yeah, proxy and reflection are both kind of really important for sort of meta programming level stuff.

 

Harris Robin Kalash:

Yeah. The big thing with proxy is that it allows you to intercept. For example, property accessories. So, if you're accessing the property of an object, you can actually intercept that access and make the object do some really cool things before the properties access, which is cool. Yeah.

 

Jamon Holmgren:

I know that Hermes originally broke 'MobX' and we used MobX and 'MobX State Tree' at Infinite Red. It also broke I think something with 'Firebase'? There were some Firebase libraries that were broken as well.

 

Harris Robin Kalash:

Yeah. Real-time database.

 

Robin Heinze:

That's probably a good lead into the next... One of the next features from this release, which is that: not only is Hermes available for iOS, Hermes as a whole, now supports proxies.

 

Harris Robin Kalash:

Proxy. Yes.

 

Robin Heinze:

So why is that a cool thing, Jamon?

 

Jamon Holmgren:

Yeah, no, that's great. And like Harris was saying proxy support was important for some very important third-party libraries. What proxy does is it allows you to kind of wrap an object. It looks like the original object, but it's not really. It's been wrapped and it's sort of like a man in the middle. And so when you, let's say, reach in there and access a property. Alright, let's say you have a user and you access their first name, okay?

 

Jamon Holmgren:

The proxy can intercept that and say, "Oh, they're accessing their first name" and then do something. And in the case of MobX, MobX React, for example, MobX State Tree, it can then trigger a re-render if it can track that and then know that it needs a trigger re-render if that property is modified in the future. It allows you to just observe what's happening to this object.

 

Jamon Holmgren:

You can wrap it. You can also modify the responses so that there's this man in the middle, like I said. It's passing these messages back and forth from the original object. That original object is still involved. It's still responding to these messages, these method calls whatnot, property access. But it also then can step in and modify things or just subscribe to stuff or do whatever you want.

 

Harris Robin Kalash:

Yeah.

 

Jamon Holmgren:

Originally, they didn't include it because it does introduce quite a bit of overhead. And I talked to Mark at React Native EU 2019, not long after Chain React when he had announced it, and it was kind of interesting, but we were sitting at lunch together and I was telling him: "We really need this for MobX." And he's like: "Yeah, yeah. I know. I've heard from everybody. We're figuring it out and I have some ideas."

 

Harris Robin Kalash:

Yeah. And to add to that, the reflect API can, basically, give the object back its original behavior, right? So often, it's used to do precisely that, so when you're wrapping an object in a proxy and you're intercepting, for example, 'Get', you can actually just return reflect, which has static methods like 'Get', which will give it exactly the original behavior that the object had.

 

Jamon Holmgren:

Nice.

 

Harris Robin Kalash:

There's a really good explanation of this on the MDM docs, which is what I read to explain this. I'll include that in the show notes as well.

 

Jamon Holmgren:

Perfect. So, proxy should fix a lot of the... Proxy support in Hermes should fix a lot of those issues with MobX and with Firebase libraries and any other libraries that were relying on that. Now MobX 4 was using something other than proxies, which was why, for a long time, we were using MobX 4 and then when MobX... So MobX 5 used proxies, and then MobX 6 came out and allowed you to switch between them, depending on whether it auto-detected, proxy support or not.

 

Jamon Holmgren:

So we've been using MobX 6 ever since, and it's been working fine. But this allows us to not have to make that trade-off and proxies. Mark and his team actually did find a performant way to integrate proxies that doesn't add a bunch of overhead like they originally thought that it would. So that's kudos to the internal Hermes team at Facebook. They did a fantastic job.

 

Harris Robin Kalash:

I wish I knew about that. This is just a side note but we should probably look into inviting Mark one day because-

 

Jamon Holmgren:

I have. I've reached out to him. He's he's not a perpetually online person.

 

Harris Robin Kalash:

Okay.

 

Jamon Holmgren:

Never on Twitter and barely on Discord, so-

 

Robin Heinze:

Graham would probably also want to talk about it too, right?

 

Jamon Holmgren:

Yeah. Yeah. He would be a good option as well. I think he might be working on a different team now, though. He would be an awesome option. So, version six- four also brings in inline requires. Robin, do you want to talk about what inline requires is?

 

Robin Heinze:

Well, it's an inline requires it's not actually new with this version. It's just turned on by default and it used to be opt-in but inline requires; it's a 'Babel' transform and it basically makes it so that all your imports at the top of your file are transformed into inline requires so that your modules are not loaded at startup, but they're loaded lazily when your app is executing, so it saves a lot of startup time.

 

Jamon Holmgren:

I guess in old 'C code', you could say a function was... I say "old", people still use this. You could use a keyword of inline and it would inline the function in wherever it was used and that would speed things up in some ways. I wonder if it's something like that. I haven't looked into this too deeply. And when I've tried to explain in the past, I've got it deeply wrong. So I won't try to do that again.

 

Robin Heinze:

We've used inline requires for a long time, for things like images. If you have an image, we'll define it as a "const." in the body of the function and say "const. image equals require the image file" so that it's not loading the image when the file is first loaded up, but it's actually loading it when you call the component or render the component. So we've used that for a long time, but this is actually doing it automatically-

 

Jamon Holmgren:

With code.

 

Robin Heinze:

With all of your module imports.

 

Harris Robin Kalash:

Which is great because one thing I love to do is have all my icons or images in one file like a manifest, and have all these keys get typed by TypeScript so I can use them without having to put require calls everywhere in my code and just this does it for me so it's the best of both worlds.

 

Jamon Holmgren:

Yeah, that's awesome. Again, improving that TTI, the time to interaction. The very first interaction is very important when you're hitting up because it's like: "I need to go do something really quick in this app" so you tap the button and then you're sitting there waiting, where this will... If you don't have to run some code, don't run it or don't load it.

 

Robin Heinze:

It sort of sets the... It's like the first impression. You want the user's first impression of your app to be-

 

Jamon Holmgren:

Yeah.

 

Robin Heinze:

Not a slow one.

 

Jamon Holmgren:

So in the interest of debugging Hermes better, they also sponsored a hack session, Facebook did, to bring Hermes traces to Chrome, which is very helpful. You can use Chrome debugging tools, 'Dev tools' to visualize the execution of your application when it's using Hermes. And this is a big thing if you're wanting to profile your performance and see how this has impacted performance as you implement Hermes.

 

Jamon Holmgren:

So that's a cool new thing. Obviously, this comes in when you are running into performance issues and you really want to improve overall. Figure out what bits of code are causing performance issues and how you might streamline those processes.

 

Robin Heinze:

Awesome.

 

Jamon Holmgren:

We also have React 17. React, 17 brings in nothing, if I remember?

 

Robin Heinze:

Not a whole... Yeah. There's not a whole lot of new developer facing features. The biggest change that you'll probably notice is that you no longer have to import React at the top of your JSX files.

 

Jamon Holmgren:

Mm-hmm. Yeah.

 

Robin Heinze:

That little dummy import that I was always like: "Why do I have to do this if I'm never actually referencing it?" So, you don't have to do that anymore.

 

Jamon Holmgren:

That's kind of nice.

 

Harris Robin Kalash:

Yeah, that is nice.

 

Robin Heinze:

A small thing.

 

Jamon Holmgren:

Yeah, totally. It deprecates some things too, right?

 

Robin Heinze:

Yeah, some Android APIs are deprecated. You now have to use 'Xcode 12'. If you're not already on Xcode 12, yeah. We'll have to get it for this version of React Native. Also, 'Node 12' is now required.

 

Jamon Holmgren:

Yeah.

 

Robin Heinze:

And they bumped the version of 'Flipper'. But that's, pretty much, a summary of React Native 0.64.

 

Jamon Holmgren:

So Android API levels... I think we've been telling clients that we support API level 21 and above anyway unless they ask... specifically require that we support below that level.

 

Robin Heinze:

Right. The versions that are being deprecated are pretty much versions that nobody's using anymore so shouldn't have too big of an impact.

 

Jamon Holmgren:

They mentioned in the blog post that the Facebook app consistently dropped support for Android versions with sufficiently low usage. And Facebook has about as good of representation of usage as you're going to find out there. Obviously, they have a huge, huge installed user base, across many many nations, many many socioeconomic groups, and whatnot.

 

Robin Heinze:

So, if Facebook thinks that it's not really being used then that's a pretty good indicator.

 

Jamon Holmgren:

Then probably this 'clubhouse for pets' startup is not going to need it.

 

Robin Heinze:

Unless you, specifically, are targeting users of really ancient Android device and not as your specific audience, then maybe don't upgrade.

 

Jamon Holmgren:

Maybe some developing countries, nations, there would be a higher percentage of people on older devices. And that's something you should, definitely, with your app, be measuring to see. But this 'six-four' will drop everything below 21. So you can use 21 and above Xcode 12, as Robin said, CocoaPods 1.1... Or no, 1.10 and Node support bumped up to Node 12. Yes. And the Flipper bump as well. So all-in-all this, mainly, was about Hermes on iOS. A little bit of that inline requires, proxy support is huge.

 

Robin Heinze:

A very performance-focused phase.

 

Jamon Holmgren:

Very much so. Yeah. That time to interaction.

 

Harris Robin Kalash:

That's good. I love that. Yeah.

 

Jamon Holmgren:

Yeah. Very cool. And Robin, were you the one who said, or maybe you tweeted or something? You're actually tweeting now, this is awesome. You said something about: "it's cool to see that the releases are no longer about adding essential functionality and more about fine tuning it."

 

Robin Heinze:

Yeah. I noted that's my metric for how mature a library is getting. When the major releases are sort of tweaking performance that was already good and just making it better rather than fixing a bunch of broken core functionality.

 

Jamon Holmgren:

Yes.

 

Robin Heinze:

"Hey, the text input wasn't working so we fixed that." We're kind of past that stage so I'm looking forward to when we finally jump to 1.0, if that's ever going to happen.

 

Jamon Holmgren:

Right? Well, they're obviously working on the new architecture internally at Facebook and that's been the big focus under the hood and once that is released, I think that they have a clear path for release in 1.0.

 

Robin Heinze:

We'll be sure to have a really special episode when they release 1.0.

 

Jamon Holmgren:

Yes. Huge. Yeah. Maybe a clubhouse live.

 

Robin Heinze:

There you go.

 

Jamon Holmgren:

Alright. Thanks everybody for joining us today. Thanks, of course, as always, to Robin and Harris for coming along and making me sound smarter than I actually am. Thanks to our producer and editor, Todd Werth, our transcript and release coordinator, Jed Bartauskyi, and our social media coordinator. Missy Warren. Thanks to our sponsor, Infinite Red, check us out. infinite.red/reactnative. Thank you to everybody listening today. If it was your first time listening, hopefully it went well and you'll be back next time. If not, email your complaints to harris@harris.dev.

 

Harris Robin Kalash:

Hello@harris.dev.

 

Jamon Holmgren:

Hello@... yeah. Harris will field all the complaints and make sure you subscribe. Send this episode to anybody who's curious about React Native 0.64. Reminder: We are hiring. Go to careers.infinite.red. We'll see you all next time.

 

Robin Heinze:

Bye.

 

Harris Robin Kalash:

Bye.