React Native Radio

RNR 203 - React Native Express with Devin Abbott

Episode Summary

The React Native Radio team interviews Devin Abbott about his website, React Native Express, which is a great (and free) way to get started learning React Native!

Episode Notes

The React Native Radio team interviews Devin Abbott about his website, React Native Express, which is a great (and free) way to get started learning React Native!

 

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. React Native Express - we're sponsoring it!
  2. Lona
  3. SourceNote
  4. Deco
  5. RNR 178 with Rachel Nabors

Connect With Us!

  1. React Native Radio: @ReactNativeRdio
  2. Devin - @dvnabbott
  3. Jamon - @jamonholmgren
  4. Jon Major - @jonmajorc
  5. Robin - @robin_heinze

Episode Transcription

Todd Werth:
Welcome back to React Native Radio Podcast. Brought to you by GitHub Copilot. What new career are you thinking about? Episode 203: React Native Express with Devin Abbott.

Jamon Holmgren:
Hey React Native Radio friends. Welcome back. This is the React Native Radio Podcast. And I'm Jamon Holmgren, your host. I'm joined by my monumental co-hosts, Robin. Robin, do you feel monumental this morning?

Robin Heinze:
I don't know if feel monumental. Being a monument is kind of a big deal. Kind of a lot to live up to.

Jamon Holmgren:
Statuesque. Don't really move much. Made out of stone.

Robin Heinze:
That's probably more accurate.

Jamon Holmgren:
Okay. Got you. Also Jon Major, who is joining us. See, he was on a previous episode as well. And he's joining us today as another guest host appearance. How you doing, Jon Major?

Jon Major Condon:
I'm doing pretty good. I feel somewhat monumental as I'm standing here very still.

Jamon Holmgren:
Yes. Well, very cool that you can join us again today. So as people know, Robin is a senior software engineer located near Portland, Oregon. Southwest, right? Southwest.

Robin Heinze:
West.

Jamon Holmgren:
West? Just west? Beaverton.

Robin Heinze:
Beaverton.

Jamon Holmgren:
Between this area, Beaverton. And she works at Infinite Red with me and she does React Native pretty much all day. And Jon Major is the same. But he does not live in Beaverton. Jon Major, where do you live again?

Jon Major Condon:
Janesville, Wisconsin. Wisconsin.

Jamon Holmgren:
Janesville, Wisconsin. There we go.

Robin Heinze:
Emphasis on the ‘sconsin.

Jamon Holmgren:
It's not correct if you don't emphasize that.

Jon Major Condon:
No. It's not.

Jamon Holmgren:
And today, it's not just us, but we also have a very special guest who was also monumental, Devin Abbott.

Devin Abbott:
Hi everyone.

Jamon Holmgren:
Devin, welcome to the program.

Devin Abbott:
I'm happy to be here. Great to meet everyone.

Jamon Holmgren:
Yeah. It's great to have you on, and you and I have interacted in the past. We actually did a Zoom call a while back talking about something that I'll touch on during this episode. But Devin is a designer, developer working on tools and React. He created Lona and SourceNote. He previously worked at Airbnb. He founded Deco, which I remember back in the day. It was a tool, we'll talk a little bit about it, which was acquired by Airbnb. And also worked at Yahoo, which is kind of fun. So we'll talk a little bit more. Devin, where are you located by the way?

Devin Abbott:
So I am in San Francisco.

Jamon Holmgren:
Yeah, very cool. But before we get into our topic for today, I want to mention that this episode is sponsored by Infinite Red. Infinite Red is a premier React Native design and development agency located fully remotely in the USA and Canada. We have years of React Native experience since it was released. And we have deep roots in the React Native community. We are the hosts of Chain React. We also publish the React Native Newsletter and we do a bunch of other React Native things. So hit us up. If you need work on your next React Native app, hello@infinite.red, or email me directly, jamon@infinite.red. You can learn more on our website infinite.red/ReactNative.

Jamon Holmgren:
Don't forget to mention that you heard about us through the React Native Radio Podcast. Also, we are hiring senior React Native engineers who are senior level React Native engineer located in the US or Canada. Go to careers.infinite.red, fill out the form. All right, let's get to our topic for today. Today we're talking about React Native Express and I'm pretty excited about this, but we are... Well, let's build up to that. Let's get a little context here. Devin, let's talk about your background first. It says you worked at Yahoo. I'm pretty sure you're the first Yahoo developer I've ever talked to.

Devin Abbott:
Really?

Jamon Holmgren:
Or at least that admitted it, I guess. What did you do at Yahoo?

Devin Abbott:
First, Yahoo was a lot of fun. I joined right when Marissa Mayer became the CEO. So it's kind of fun being part of this potential underdog story. That didn't end up panning out, but it was still a lot of fun being part of it.

Robin Heinze:
I'm sure.

Devin Abbott:
So I joined right out of school to work on Node.js applications, but then about two weeks before I joined, I got a call and they asked, "Do you want to be a product manager instead of an engineer?" And I said, "What's a product manager?" And they sent me an article that didn't really explain it very well. But the key aspect was I would make $20,000 a year more. So I said, "Yeah, I'll do it." So instead of becoming a programmer, I became a product manager at Yahoo for two years.

Robin Heinze:
Wow. Learn and talk about on the job training, going from not knowing what it is to doing it everyday.

Devin Abbott:
It was this thing called the APM program, which is at a bunch of companies now for engineers who want to transition into product management.

Robin Heinze:
Oh, interesting.

Jamon Holmgren:
That's very interesting. I'd imagine that's actually helped you in your path as an engineer, kind of knowing that side of thing.

Devin Abbott:
I think so. It definitely made me realize that I like wearing multiple hats more than being just a product manager or just an engineer.

Jamon Holmgren:
Yeah.

Jon Major Condon:
And you said that you are a designer also, or Jamon said that you were a designer.

Devin Abbott:
Jamon said that I was a designer.

Robin Heinze:
Was he wrong?

Jamon Holmgren:
Was it wrong? I saw your Twitter bio. What can I say?

Devin Abbott:
I work on design tools and I would say I never really thought of myself as a designer, but since I started using Sketch maybe in 2014, I feel like I can make reasonable looking designs.

Jon Major Condon:
Nice.

Devin Abbott:
Before that, when I was in Photoshop, there was no chance, but in Sketch and now of course, Figma also, it's really not too bad.

Jamon Holmgren:
Yeah. No. And a lot of... I guess you can't just limit design to the graphics because there's a lot of design that goes into building tools.

Jon Major Condon:
For sure.

Robin Heinze:
Aren't we all designers on some level?

Jon Major Condon:
True.

Jamon Holmgren:
Yeah. That's true. Justin will be listening to us, our lead designer and just shaking his head.

Jon Major Condon:
Yeah. He doesn't know what he's talking about.

Robin Heinze:
Hey, Justin, I could do your job easy.

Jamon Holmgren:
I'm just going to go download Sketch. But no, I agree with you, Devin. There's a lot better tools. And also, yeah, the definition of design definitely has expanded over the years. You created an IDE for React Native a long time ago. So actually first, how'd you get into React Native in the first place?

Devin Abbott:
So It was 2015, I'm a PM at Yahoo and we're building mobile apps and it would just take so long to build a mobile app. You'd have Marissa, the CEO, come up with this genius mobile app idea, and then nine to 15 months later, you'd have a proof of concept on iOS and Android, and that's just a really, really long time. By that point, a competitor had already released the same app. And at that point, we probably canceled the project. So I thought, "Well, there has to be a better way." And I guess Facebook was thinking the same thing at the time. So when I left Yahoo in 2015, I started Deco. It originally wasn't specific to React Native. We just wanted a better way to design and develop mobile apps. And when we started digging into React Native, it seemed like the obvious choice at the time because the cross platform options were pretty much limited to either WebViews or React Native.

Robin Heinze:
That's really cool.

Jon Major Condon:
Before React Native. Did you ever check out Ionic or Titanium, other cross-platform mobile applications?

Devin Abbott:
Yeah. I don't remember when Ionic started getting big, but at least at the time, I think it was still all WebViews. And I don't know if it still is or not. Titanium is very interesting. And in some ways, I'm surprised that Titanium didn't take off more, although I guess it's integrated into the whole Microsoft ecosystem. So maybe it is actually still living on in some form, but Titanium seemed like a pretty reasonable solution. It just didn't have that React layer in it.

Jamon Holmgren:
Yeah.

Robin Heinze:
And I'm assuming PhoneGap, AKA Cordova was off the table.

Devin Abbott:
Since that was WebView based, we decided that we didn't want to go that route, especially back in 2015, WebView just couldn't even compare really.

Jamon Holmgren:
Yeah. They've gotten a bit better, but even then, I somehow ended up partially in charge of the React Native WebView itself and it's just a monster and I don't know. Yeah, it's just the wrong tool for the job mostly. And the only reason people are using it is to... Well, for reasons that React Native resolved essentially, but yeah, then you created Deco and did you code it yourself? How big was your team?

Devin Abbott:
So we were a team of four.

Jamon Holmgren:
Okay.

Devin Abbott:
And I did code a lot of it myself. There were two to three of us focused on coding most of the time. Deco was I think still a really interesting and in some ways, needed product. The idea was what if there was this all-in-one development environment that you could download for React Native, sort of like downloading Xcode or Android Studio, but just for React Native? There were a bunch of challenges at the time. One of the big ones was... Well, actually still needed Xcode and Android studio and all of the native setup, because there really was no create React Native app. Expo is just getting off the ground. So as much as we tried to be this all-in-one solution, the underlying tools weren't quite there yet.

Jamon Holmgren:
Yeah. That makes sense. And then Airbnb came around and said, "Hey, we want at least your team." Were they interested in your tool at all? Or was it mainly the team?

Devin Abbott:
Yeah, so we had actually worked pretty closely with Airbnb. Even before we started talking about an acquisition, they brought us in to integrate Deco into their product and workflow, sort of as a demo really, but just to sort of sell the React Native vision, I guess, to Airbnb engineering as a whole. Here's what it would look like if you have this amazing tooling and this cross-platform development environment and so on. So we already knew everyone there really well. And then at some point, we realized we would either have to raise more money or get acquired or just shut down, but that didn't sound very fun. And when we thought about it, it seemed like we just weren't going to be able to make the tool that we wanted and getting acquired by Airbnb and being part of essentially the most advanced React Native system and team at the time, that seemed more exciting to us.

Jamon Holmgren:
Yeah. Airbnb was doing a lot of open source. They had a lot of kind of prominence in the community. And of course, that all kind of famously, I'm sure people listening to this who have been around since back in those days, came to a bit of a crashing halt later and we actually talked about it in the panel Chain React 2018, I think, where there's a blog post posted by Airbnb saying, "We're not going to use React Native anymore." And I knew some people over there at Airbnb, Leland Richardson being one of them and he was sort of an internal champion, I think, for React Native. But even like what you just said, there were Deco. They were sort of trying to sell the vision of React Native internally. So it sounded like maybe it wasn't the easiest sell at the time.

Devin Abbott:
Yeah. I would say I didn't experience the beginnings of React Native and Airbnb so I came in sort of in the middle. And there was a large iOS and Android team at the time. And then the React Native team was in comparison, extremely small. So it was like 40 Native iOS developers, 40 Native Android developers, and maybe 10 React Native, but probably even less than that full time like people should have borrowed and so on. And so the goal was not really to switch everyone to React Native because all of the Native developers, of course, were resistant to that.

Jamon Holmgren:
Yeah.

Devin Abbott:
And that meant that this small team was essentially doing the work of these other two much larger teams to reach parity in terms of the infrastructure. So all the same design system components, all the same libraries and networking and converting to GraphQL and all that stuff was sort of understaffed. And also, there wasn't this motivation in the company at large to transition fully. So instead of realizing the React Native dream of having just one platform, we now had three platforms. So it was actually worse in most ways.

Robin Heinze:
Yeah. That makes a lot of sense that if you're not all in on React Native, that it's just a third platform to manage and with a team that's comparatively much smaller, I can see why it wasn't really destined to succeed there. While you were at Airbnb, did you get to work sort of on the brownfield side and integrating React into their native application?

Devin Abbott:
By the time I started, Leland and Gabe Peal had pretty much already done all of that. And I think there are some other people involved in the beginning, but at the time, those two people were the ones integrating with the native side.

Robin Heinze:
What was your role at Airbnb specifically?

Devin Abbott:
My role was very confusing.

Robin Heinze:
As roles often are.

Jamon Holmgren:
Yes.

Devin Abbott:
I was sort of between two teams and I actually ended up switching from one to the other. I started in the React Native infrastructure team. So my role was to maintain the design system components, but then I switched to the design infrastructure org, and I became a design technologist on the design tools team. So I switched more from the engineering side of things to the design tool side of things.

Robin Heinze:
Got you. Got you.

Jon Major Condon:
There's that design word again.

Robin Heinze:
I know.

Jamon Holmgren:
Exactly.

Devin Abbott:
It's in my title so I must be a designer, I guess.

Jamon Holmgren:
You did leave Airbnb then. I think you said when we were chatting earlier, that was prior to Airbnb stopping the whole React Native thing experiment.

Robin Heinze:
So you were gone before the infamous blog post, right?

Jamon Holmgren:
Were you actually responsible for them? I'm joking.

Robin Heinze:
Well, Devin's gone so we might as well…

Jamon Holmgren:
Yeah, we're done. Yeah.

Devin Abbott:
I like to think I was. No, I'm just kidding.

Jon Major Condon:
Planted the seed and ran.

Devin Abbott:
So that change had been on the horizon for a long time. It honestly had almost even started by the time I joined in some ways or like the writing was on the wall perhaps. So I knew about the blog post when I was there, but then it didn't officially come out, I think, until after I left. But even three to six months before the blog post, we React Native engineers all knew about it anyway, so it didn't come as a surprise to us.

Robin Heinze:
Yeah. I'm sure It was not a last minute kind of thing. I'm sure been in the works for a while.

Devin Abbott:
Yeah. There've been approval for the blog post. It wasn't some engineer going rogue.

Robin Heinze:
Yeah. Just take that rogue up for me. Well, that's really cool. You have a really varied background in the React Native space and it seems like you've been a part of the React Native community for a really long time since it was in its infancy. So then how did React Native Express come to be? Let's move toward our topic for the day. How did that come about after you had left Airbnb?

Devin Abbott:
This actually goes back to Deco times. When we started Deco, most people hadn't even heard of React Native and if they had, they definitely didn't know anything about it and didn't know what React Native code looked like. So the success of our product and our company really depended on the success of React Native and of just providing a smooth developer experience in general. Even if we made it easier for people to download and set up React Native, they still had to learn how to write React Native code.

Robin Heinze:
Yeah.

Devin Abbott:
And at the time, I'm sure everyone here knows this, but the React Native docs left a lot to be desired.

Jamon Holmgren:
Yeah.

Robin Heinze:
They're getting better. They're getting better. But yes, at the beginning they were definitely... They looked like what docs usually look like in the beginning.

Devin Abbott:
Yeah, exactly.

Robin Heinze:
And we had Rachel Nabors. Yeah. Go ahead.

Jamon Holmgren:
On episode 178 to talk about the effort of improving those documentation. But yeah, you're right. It was pretty sparse.

Robin Heinze:
So actually, can we get a really quick TLDR? What is React Native Express for people who don't know?

Devin Abbott:
React Native Express is a one-stop, all-in-one guide to learning React Native. And it doesn't try to duplicate what the official documentation has so it will refer to that, but it also covers things beyond the official documentation. So newer JavaScript or TypeScript features, libraries that are important in the React Native community, patterns that companies use, like how to structure a large React Native app, where your files should go and that sort of thing. All these are somewhat outside the scope of React Native core, but super important as a React Native developer.

Jamon Holmgren:
Yeah. I get the question quite often, "Jamon, what's the best way to get started with React Native?" And for quite a while, I would just send them to the docs. And I would often think to myself, "Man, I wish we had a course that I could send them to." We have Infinite Red academy. It seems like a very natural fit for us to have a getting started with React Native thing. We may still eventually do that, but I found React Native Express. And I think originally, it was fairly sparse, but I went back there, I don't know, a year ago or six months ago or something and I was like, "Wow, they've continued to evolve this. It's like a whole thing now." And I started sending people to that.

Jon Major Condon:
Including me.

Robin Heinze:
Including...

Jamon Holmgren:
Yeah. Jon Major, that's right because... Jon Major, you want to talk really quickly about how you kind of came from the website?

Jon Major Condon:
Sure. Yeah. So I came from the website of React and now in Native and Jamon had sent me the React Native Express to check out and yeah, it was definitely very well-defined I'd say. I was able to go through just about it all. And also coming from React, it was pretty simple to kind of get the concepts. Basically, the concepts were the same, where it was very helpful was to see how a React Native application is structured and what are some packages that I would use in the React Native side, such as AsyncStorage instead of local storage.

Jamon Holmgren:
Yeah. So it's one of the line items that I send our new developers who are coming on board, who maybe they're coming from the React background. We actually just hired a junior developer, Kate, and I gave her React Native Express. So it's given me just a go-to source for that. And actually, this is where I met Devin because I reached out and I said, "Hey, this is something that's really cool. It's something that I've been referring people to. Have you considered maybe taking on a sponsor?" And so we talked on Zoom and Infinite Red ended up being a sponsor. And so you'll see our name and link on the website as well as some other community resources that we are involved in our Infinite Red Slack community, the newsletter, podcast, things like that. I think the conference, maybe.

Jamon Holmgren:
So that was kind of how we got connected, but I love that there's a free website out there that is just focused on how do I start and what information do I need to know? There's always docs and they're getting better all the time, but docs are usually fairly narrowly focused. They're not going to go out there and say, "You should use this or you should look at these third-party libraries and things like that," where I think an outside third party like yourself can approach it more from that angle.

Robin Heinze:
Right. Docs don't necessarily tell you how to use the tool. They tell you what the tool does and they explain what the functions that are available, doesn't necessarily give an opinion needed like, "Hey, this is how people are actually using this in the real world. And this is how to build an app from scratch." So this is a really, really nice companion tool. So is React Native Express a side project for you? Or is it your full-time gig?

Devin Abbott:
React Native Express has always been just for fun for me. I really enjoy education in general and teaching programming stuff, but I don't know if I'd really want to do it full-time just because I love building software so much.

Robin Heinze:
That makes sense. How hard is it to keep it updated? Because React Native is releasing a new version every couple of weeks. How hard is it to keep React Native Express up to date?

Devin Abbott:
It used to be much harder when the version changes, change every thing.

Robin Heinze:
They're like entirely new components every time.

Devin Abbott:
Yeah. Now we have buttons. Well, I guess now we have pressable also. But lately, I feel like, at least in terms of backwards compatibility, things rarely break. Sometimes there will be new things and that may take me a little while to get on the website, but nothing ever really goes away or stops working. So it hasn't been too bad.

Jamon Holmgren:
One thing that I think is super cool about it is that you have an interactive playground on most pages. So you can actually see a little iPhone off to the right hand side, and then you can mess up the code and see how it changes on the right. I just realized that's powered by something else you made, JavaScript Playgrounds.

Devin Abbott:
Yes. There's actually a funny story behind this. So back in, I guess 2016, when I launched React Native Express, part of the reason why I wanted to make the site was React Native Web had just come out. This is Nicholas's project at Twitter. The idea is what if we had a web implementation of all the core React Native components? And so when I saw it, I thought, "Well, this means that I could emulate the React Native development environment without anyone having to go install Xcode or any of the other native stuff. So I created this little playground using an iframe and stuck it in React Native Express and React Native Express was on top of our favorite orange website, Hacker News in 2016. And Christopher Chedeau, one of the people behind React Native sought and he messaged me on Facebook and asked, "Hey, can we use this as the official React Native docs?"

Jamon Holmgren:
That's pretty cool.

Devin Abbott:
Because the React Native docs just were so lacking back then that I guess seeing something come along and be a big improvement, it sort of sparked that conversation. So we decided ultimately not to just swap the official docs for mine, but Kevin Lacker, who was the head of Open Source at Facebook at the time.

Jamon Holmgren:
Right.

Devin Abbott:
He hired me for two weeks to integrate my interactive player into the docs and also just write some pages of the docs that weren't quite as good as what was on React Native Express.

Robin Heinze:
I thought I was like, "Some of this looks really familiar." And I was like, "Now that's really cool that it's actually in the React Native docs."

Jamon Holmgren:
So you're behind that then, the interactive, because I know they've had it on the docs. I thought they were using some other system, but they're actually using yours.

Jon Major Condon:
That's what I thought.

Robin Heinze:
Wow. That's really cool.

Devin Abbott:
Until 2018, I think, or maybe 2019, it was all using mine for activity, then Expo added the web...

Jamon Holmgren:
Snacks.

Devin Abbott:
Yep. The web simulator, two Snacks.

Jamon Holmgren:
Okay. Okay.

Devin Abbott:
I think until that point, it wasn't really Expo on the main docs just because Appetize, the simulator that powers those, the Expo Snacks, couldn't handle the traffic if I had to guess, but once they had the web simulator, then suddenly it doesn't really need a backend.

Jamon Holmgren:
It's all client. Yeah.

Devin Abbott:
Yep. Yep. So now I think in the React Native docs, you can actually use either, but it defaults to the Expo one so 99% of examples use the Expo one.

Jamon Holmgren:
This is very cool. And so just going through React Native Express for the... Everybody, you can go there, ReactNative.express and follow along if you're at a computer, but you start off with setting up your environment and you talk about Expo CLI, you're talking about React Native CLI and then you kind of get into let's go ahead and spin something up. You go sort of the Expo route initially, because that is the fastest way to get started with React Native. I really liked having beginners start with Expo. It can be a little confusing to people. They're like, "Wait, what's Expo and what's React Native?"

Devin Abbott:
Yeah.

Jamon Holmgren:
How does this interplay work? And I don't know if there's really an easy way to resolve that, but it is still the easiest way to get to know that. You go through JavaScript. You go through JSX. These are very important concepts. You talk about React. You talk about elements and how you can even just create them directly. It kind of gives a foundation for how this is all working under the hood. And then you get into components, events, conditional rendering, user input, listing keys, performance, hooks. So you're going through a lot of this stuff, a couple other sections, core components, and then just app development. You talked about project structure, navigation, data management. There's a lot here. There's a lot here. I'd imagine this took a lot of work.

Devin Abbott:
Well, it did sort of build up over, I guess, five years now.

Jamon Holmgren:
Okay.

Devin Abbott:
So I've just been adding a page here and there every time I see the same question over and over on Facebook groups or whatever.

Jamon Holmgren:
Yeah. Yeah. Totally. By the way, I need to get MobX-State-Tree added into your data management. Now that I'm the lead maintainer. You have MobX. You now have MobX-State-Tree. So I need to get that snuck in there somehow.

Devin Abbott:
Yeah. No, that sounds fine. I'm not really a MobX person myself.

Jamon Holmgren:
Yeah.

Devin Abbott:
So while I get the idea, I wouldn't really know the difference there, why the tree part's important.

Jamon Holmgren:
Yeah. Yeah. I need a MobX-State-Tree.express website, I think.

Robin Heinze:
Yeah. It needs its whole own site.

Jamon Holmgren:
Really. We should work on the docs is what should happen but...

Devin Abbott:
Exactly.

Jamon Holmgren:
You also talked about things like animation, which is, of course, a whole another story within React Native and gestures, component libraries, native modules, which I think is a very critical component in the tool box of a React Native developer. So I really liked that you go through all of this. You also have some exercises and you're also promoting a book. Now I understand this book, which is Fullstack React Native: The Complete Guide to React Native. You're actually in the process of rewriting it right now to be more modern React.

Devin Abbott:
Yeah. I guess before maybe 2020, it felt like the React community still hadn't totally decided Hooks, classes, which is really the one we should be writing. It seemed like Hooks were probably going to be the way they go and then pandemic hits so sort of everything slowed down. We had been updating the book every two months to keep it up to date, keep up to date with new APIs and stuff. We haven't had a big overhaul to switch everything to Hooks and we really need to do that.

Robin Heinze:
It's a huge undertaking.

Devin Abbott:
Yeah. It is.

Robin Heinze:
They have people full-time doing it just for the React Native docs.

Jamon Holmgren:
Right.

Devin Abbott:
Yeah.

Robin Heinze:
Like having to do it as a side project possibly a lot.

Jamon Holmgren:
I think even the React docs, right?

Robin Heinze:
Yeah.

Jamon Holmgren:
The React docs still have a lot of classes in them.

Devin Abbott:
Yeah.

Robin Heinze:
Yeah. They're slowly updating them, but yeah, it's a huge undertaking.

Devin Abbott:
And then even if you do only teach Hooks, eventually someone asked about this air boundary thing and suddenly you're back to explaining classes and you're like, "Wait, let's rewind at chapter three."

Jamon Holmgren:
Right.

Jon Major Condon:
Yeah.

Robin Heinze:
Yeah.

Jon Major Condon:
Well, then there's also the concept of supporting old Hooks or old class components from legacy apps.

Jamon Holmgren:
Yeah. I can imagine a new developer coming in, "Yeah. I know React. I just did a whole bunch of stuff," and then is confronted with a class component. They're like "This isn't React."

Robin Heinze:
Yeah. If you look at them, you wouldn't know they were the same framework.

Jamon Holmgren:
Right.

Devin Abbott:
And one of the funny things is I feel like native iOS and Android developers gravitate much more toward the class-based components.

Jamon Holmgren:
Yeah.

Robin Heinze:
Right.

Devin Abbott:
Now maybe that'll change as SwiftUI and Jetpack Compose get more popular.

Jamon Holmgren:
True.

Devin Abbott:
But at least historically, native developers see classes and they're like, "Oh, I know how this works." And then they see Hooks and they're like, "Wait, this is so magical. I don't understand."

Robin Heinze:
What is this?

Devin Abbott:
"How does it know?"

Jon Major Condon:
And JavaScript classes are also magical.

Jamon Holmgren:
Right. Yeah. Yeah. And what you see isn't necessarily what's happening a little bit.

Robin Heinze:
You think you know how classes work, try a JavaScript class. It won't be what you think.

Jamon Holmgren:
It's very true. It's very true. Do you think that React Native Express is more or less complete or do you have plans to continue to add to it?

Devin Abbott:
I think in terms of the content right now, it's about complete, but I would really like to have a video portion or maybe go through some of the sections in a video where I actually demonstrate in my VS Code on my computer how to do things because I know a lot of developers just learn better through video.

Jamon Holmgren:
Yeah. That makes sense to me. It can be hard to keep that up to date though too, because reshooting video is a whole different level than just editing some texts.

Devin Abbott:
Yeah. That's absolutely true. I'm trying to figure out if there's a way I can automate it in some way and I have some ideas, but...

Jamon Holmgren:
That would be very on-brand for you.

Jon Major Condon:
Design a tool.

Jamon Holmgren:
You'll come up with some tool and then it'll get acquired by Facebook or something. 

Devin Abbott:
I have not.

Robin Heinze:
You're a super experienced React Native developer, having been with it from the beginning, but how do you sort of put yourself in the shoes of a beginner and write really beginner friendly content?

Devin Abbott:
One of the things that I think helps content in general is to sort of assume that everyone's a beginner to some degree. So there's a lot of content where you're reading it and they assume a ton of knowledge or they'll use words like "We'll skip over the trivial portion."

Robin Heinze:
You're like "Oh, I feel so good about myself now."

Jon Major Condon:
I need the trivial portion.

Devin Abbott:
Yeah. And even someone with a ton of experience, they might not have done some specific tasks for six months or a year or whatever. So I feel like, to some extent, just by writing content that tries to be as accessible as possible to everyone, that also makes it hopefully more accessible to beginners though I don't really know for sure if my content is good for beginners or not.

Robin Heinze:
You need some guinea pigs, some test results.

Jamon Holmgren:
Well, I'll let you know what Kate thinks because she's going to be going through it pretty soon. But from what I've seen, it sure looks good to me. Of course, I've been doing this a while too, so maybe I'm assuming too much knowledge too.

Robin Heinze:
We'll make sure to post on Twitter about everything we think it can be improved.

Devin Abbott:
Okay. Sounds good.

Jamon Holmgren:
Public feedback.

Robin Heinze:
Because public feedback is everybody's favorite.

Devin Abbott:
Well, maybe post to get a best shift.

Jamon Holmgren:
Very cool. Well, unfortunately we're running out of time here, but it's been a great discussion. And by the way, I do want to mention, it's not just React Native Express. There's also React.express which I think you maintain. Right?

Devin Abbott:
Yeah. So I also have React.express. I have JavaScript.express, TypeScript.express, and then a fledgling Webdev.express.

Robin Heinze:
Wow.

Jamon Holmgren:
Wow. For someone who doesn't want to do this full-time, you're taking on a lot. But yeah, this rabbit hole goes pretty deep. That's pretty awesome. Very cool.

Robin Heinze:
I really want to check. I'm going to check out the TypeScript Express right now. I use TypeScript every day, but I still don't feel like I really know everything that it does.

Jamon Holmgren:
Yeah. That's great.

Robin Heinze:
That's awesome.

Devin Abbott:
There's some pages missing, but overall, I think it's pretty nice.

Jamon Holmgren:
That's awesome. Very cool. Well, where can people find you online, Devin, to follow you?

Devin Abbott:
Best place is Twitter, dvnabbott. You can also follow me on GitHub, dabbott. Probably it.

Jamon Holmgren:
Perfect. And Jon Major, where do people find you online?

Jon Major Condon:
Twitter @jonmajorc and @jonmajorc everywhere.

Jamon Holmgren:
Very cool. And Robin, where are you?

Robin Heinze:
I am @robin_heinze on Twitter.

Jamon Holmgren:
And I'm @jamonholmgren and you can also follow React Native Radio, @ReactNativeRdio. Thanks so much to our guest Devin Abbott here. This was a great conversation. There's so much more we could have gone into here, but it gives people a little bit of a taste. Hopefully, they'll get a chance to go check out ReactNative.express and learn some things. As always, thanks to our producer and editor, Todd Werth, our transcript and release coordinator, Jed Bartausky, and our social media coordinator, Missy Warren. Thanks to our sponsor, Infinite Red. Check us out, infinite.red/ReactNative. Of course, thank you to all of you listening today. If you think that someone could benefit from checking out React Native Express, send them this episode. They'll have a little more context going into it and also know who to complain to on Twitter if there's something wrong.

Jon Major Condon:
Thanks Devin.

Jamon Holmgren:
Yes. Thanks so much. Also, reminder, Infinite Red is hiring React Native engineers. If you're a senior level React Native engineer located in the US or Canada, go to careers.infinite.red. See you all next time.

Robin Heinze:
Bye.

Jon Major Condon:
Bye.