Bio
Obsessed with UX since using an Intellivision.
Share
Interview
Hey everybody, I'm actually happy that I jumped in before Ryan said, hey Kent, like last time. It's a, yeah, good day to chat with Ryan. Ryan Florence spoke at last year's Epic Web Conf and will be speaking at this year's. Maybe you ruffled a couple feathers last year
with the let versus const thing. But Ryan, why don't you give us an intro to yourself before we get too far into this year? Sure, I'm Ryan Florence, Ryan P. Florence. I should change my name in this little video thing that we're doing and include my middle initial too. More recent work, I was one of the co-creators
and co-founders of Remix, co-author of React Router. Been doing web stuff for way too long, like two decades. So it's kind of wild that there's kids now coming to these conferences and stuff where like, I was writing websites before they were born. So I'm trying to figure out how to sunset
my public presence and make more room for the young kids with broccoli hair to take over this space. So that's why. Well, you actually, you have kids of your own who are almost to that age as well. Yeah, my daughter's graduating high school this year.
Yeah, it's crazy. It's crazy how busy you get when your kids get older too. Yeah, I think that's part of maybe the motivation for sunsetting your presence as well is you just wanna hang out with the family. I know, so yeah, your kids get to this certain age and you realize like, I'm almost done, this is almost it.
Like, it's time to like make sure that I'm as present as I would like to be. And I have a lot of great memories with my parents, boating, hiking, soccer, like they were there for everything. And yeah, I wanna, yeah.
Oh, so that's one thing folks who are at the conference can talk with you about is why neither one of you want to be there and you'd rather be with your kids. I'm there because Kent and I are good friends and I'm supporting him. I don't wanna be there and my kid's playing a soccer game right now.
Well, yeah, I hope you don't miss anything too critical to come to the conference. But I am curious, I've been asking all of the speakers what it is that motivates them to go to conferences. And maybe, like you mentioned, you're kind of toward the end of that period of your life where you're really being active.
Like you're at a stage where if you needed a job, you can get one relatively easily because of your standing in the industry and also just like you've developed the relationships that you wanna develop at this point. But maybe talking specifically to the audience that will be coming to the conference
or are considering coming, what are some of the reasons why you think it's important for people to come to these things? Yeah, I mean, conferences really, to me, are the blood of any community. And I feel like we're still feeling the repercussions
of all the lockdowns and not having in-person events. And it's been really hard to like get that going again. But all the major relationships that I've made, I made at conferences. In fact, Michael Jackson, my career counterpart,
he and I met at Mountain West Ruby. That was the first time I ever met him. My coworker went to college with him and was like, hey, you should meet this guy. He's a JavaScript guy like you. And Michael and I met and that started our friendship. I remember another time I was sitting there, what conference was it?
TXJS in Austin, like 20, I don't even remember what year it was, 2011. It was a long time ago. And I remember we were standing in one of those circles or whatever, and I was brand new. I didn't have a real job as a web developer. I was just like goofing around and I had a contract
with a company and they were paying me to build stuff. Like, I didn't realize I actually knew what I was doing yet. I just knew that people were paying me to do it. And I remember in that little circle, people talking, one of the guys was like, can you believe that we get to write soft,
like we get to build websites for a living, we get to write JavaScript for a living and build these cool things and it's so much fun and we get paid as much as like dentists and doctors and lawyers. And I was like, I don't get paid as much as those jobs.
And so I started kind of like poking around a little bit and that's what inspired me to get my first full-time developer job, a solid salary. And yeah, it was because I went to that conference, which no employer wants to hear, right? You don't want to send people to conferences
so they switch jobs. On the other side, an employer hired that employee, right? So I guess you could send your employees to a conference and lose them to a better employer or you could just be an awesome employer and win a bunch of employees to your company. Yeah, you get those people.
So yeah, it's just a great place to connect and meet people that will possibly be part of your entire career, like for me and Michael. And actually me and you, you came to, I guess we met at a meetup first? Yeah, we met at a meetup, but yeah. Matt Zabriskie was always talking about you.
He came and worked with me. But yeah, my main memory of meeting you was that React week that Tyler McGinnis put on. And that's where we met. And we ended up co-founding Remix together and doing lots of other stuff together. So yeah, come to conferences. Yeah, absolutely. It's those in-person relationships
that AI can't replicate just yet. Yeah, very cool. So what is probably the biggest topic that I think people will be eager to talk with you about at the conference, especially people who've been using Remix, is like, what is happening with Remix? I think a lot of people are just,
they just don't know what the plan is there and are very curious. So yeah, what is happening with Remix? Is that gonna be kind of your, we talked about this before, so I'm like softballing you a question, but like, what is your talk about? Yeah, I'm not 100% sure what the talk is gonna be about,
but probably would be good to give people another talk about what the plan is with React, Router, and Remix. So that's where I'm leaning right now. It was super fun to troll lots of people with let versus const, and that provided a lot of good laughs and actually led to change.
I don't know if you noticed, but at several conferences afterward of the same kind of group of people, lots of slides had let up there, and I saw lots of tweets where people were like, I've always just wanted to use let, and now I finally can. Well, there you go. Yeah, your let evangelism is miss-working.
But anyway, I'll probably talk about React, Router, and Remix and what that all means and what the heck we did. Well, I mean, we even got a little bit of concern internally at Shopify, because they let us operate really independently,
and there were some people over in product who were like, what the heck are you doing with your brand? And I was like, just trust us. It'll be fine. But like we've said before, Remix isn't going anywhere. The brand's not going anywhere. We're about to launch. Oh, no, we just did.
We just announced Remix Jam at the end of the year. It's gonna be a lot like Tailwind Connect, so not like a full conference, but like a smaller, low-key one, and we're mostly handpicking the talks and stuff and what we want to talk about. So it's basically us wanting to tell everyone, hey, look at what we're doing, look at what you can do. We want to bring in some people
from the community, too, of course. But yeah, Remix is very much around, so what the heck are we doing? Remix launched at a really weird time for the internet, because we launched at the time that new JavaScript runtimes also started popping up.
Wobflare workers had been around for a while, but hadn't really gotten a whole lot of steam. Serverless was pretty much all running on Node, but they had some restrictions that were different than just running a raw Node server, so they're in some ways a little bit like their own runtime. And then we've seen this explosion of runtimes.
Deno and Bun and Fastly has their own thing. Amazon recently released this small JavaScript runtime. Kind of like the V8 isolate sort of idea. And what's been really fascinating, and Cloudflare led the charge on this, and this is something that we talk about all the time,
in Remix is that Remix launched looking at Cloudflare workers and looking at the web platform and saying, you know what? We got these request and response objects, these constructors, in the browser and in Cloudflare workers, and we followed Cloudflare's lead on this,
of like, I bet we can build a server on these APIs. We don't need to use Node's HTTP library. We can use the web's. And by the web's, I mean browsers. And we think it's been a really good bet. It's been a long bet. It's been difficult.
We've had to maintain our own polyfills for it before Undici, and even still, there's like some compatibility differences between things, but like, that's what JavaScript is. It's global, it's everywhere, and it's got its own personality everywhere.
But there are some abstractions that you can build on top of those web APIs and make it work out. So, sorry, I'm long-winded. We set off a little bit quicker on this one. It's interesting. So Remix launched at a funny time for the web, first of all, because of all these new runtimes that are popping up.
And we made the same bet that Cloudflare did. Let's do this on top of web APIs, like request, response, fetch. There's a bunch of other ones. There's Crypto. If you go in your browser, open up the console, you can just type crypto.randomuuid, and it gives you this nice, random, universal, unique identifier that you can send
as a client ID to your database, and then track Optimistic UI and lots of other stuff with that ID. And we use those technologies inside of Remix. So that's number one. The second weird thing about the timing of launching Remix
is at our second Remix conf, we demoed some in-progress scaffolding. We were kind of like taking Rails, Ruby on, I almost said React on Rails, Ruby on Rails lead there, and we're like, oh, scaffolding is super useful.
But we never shipped it because the next month, Chad GPT shows up and Copilot actually started to get good. It's like, we don't need scaffolding. The AI, like, and now it's using Cursor. Well enough. Yeah, like compare Rails Scaffolding to what Cursor can do for the people
that are like really trying to use it to build things. Or even people in Repl.it and what's his name, Austin? He's doing some crazy stuff with his AI gauntlet or something, he's got people building apps in two days. So it's sort of like the activists. It has their Bolt.new stuff too.
Yeah, yeah, and Bolt.new, which is a Remix app. You've got all of these things now that like make scaffolding just seem hilarious. And so those two major things were happening. And then a third wild thing for us, maybe this isn't unique, but this is just technology, but these three things feel like huge to me
and totally unexpected. The third big thing was RSC showed up in React, React Server Components. And then on top of that, actions, like form actions and stuff, right? Yeah. And even smaller feature, so those are things that we had in Remix.
It looked different, but like same use cases. Yeah. But even smaller features like our links export on a route module to like hoist the links up to the top of the page, React just does that now on its own. And so you got these three things happening
where React has like taken a lot of our feature set and put it straight into React. And then you've got AI that shows up. It can write tons of code for you. And so like, what is scaffolding? What is like, I don't know. It just makes you question everything about what you're doing. And then you've got all these run times that we kind of made this bet on.
So considering all three of those things, you look at like, well, what's the future of Remix? Do we keep on trying to build like framework features like scaffolding? Or do we look at what React is doing like, oh, we can still do that better or whatever and like extend React. If you keep extending React,
how much of that makes it back into React? And then you're left again with this weird like thing of like, okay, there's the Remix way and there's the React way. What should I do? And so with all that stuff, we did a lot of research and experimenting and building. We built so many versions of Remix before announcing the big thing that I guess we haven't even gotten to so far in this conversation
that we decided let's move everything that's in Remix that's not already in React Router over to React Router. And just give all those abstractions and those ideas a home, a place to put it. Like this is reliable. This is a 12-year-old, 11-year-old project.
Most of Remix already existed in React Router anyway. So it was mostly just like bundling that we moved over and a few server concepts that we moved over. Everything else was already there. But it was like, let's put this over here, give it a home and a future where this is React Router, starts with v7.
We don't have it yet, but it's gonna have RSC in it. It's gonna have server actions. You can use all the React 19 features over here and rely on that, right? It's not like this. We've got a history with React Router. We have supported our old versions
with bug fixes for years, the whole time. Like v3, we supported that for, like you can go look at our releases and you'll see like v4 and you'll see like v5 releases and then you'll see a v3 release. Something changed in React that we needed to do. And then you'll see v6 releases
and then you'll see a v5 release right after one of those. So we maintain those even old major versions. So put everything we have been working on over in React Router and essentially make a promise, say we're gonna keep maintaining this and you can use all the future React APIs in it as well.
That gives us the room over here in Remix. We said in my talk at React Conf that we're putting Remix to sleep, giving it a nap. But it'll- Not putting it down like you do with a dog. It's just taking a nap. Remix is gonna take a nap. We're gonna move all this over to React Router
and then it'll come back. And so with those three major things, RSC, AI, and the web platform making it onto the server, that gives us room to like build Remix with those three things to us are the future.
Maybe not React in every single way. Like people are gonna be building apps with Solid and Preact and other things. And so our biggest thing over there is of course we'll have stuff for React over there. Excuse me.
But the main thing is we're betting on AI and AI is like the entry point to the web. Instead of Googling and getting a server entered page, instead you're talking to a thing and getting widgets in front of you. And for that SSR isn't as big of a deal,
but server components, that concept is pretty intriguing. But the biggest bet is on the web platform where if you're building stuff for the future, even the way we used to, but the way that we anticipate in the future, really nice for both us and the AI
to not have to think about two different abstractions of like, oh, I've got a Python server, but then I've got a web UI. How do I bridge that gap to present things to the user in a chat or to integrate with a chat or to integrate into my current product? Any of that kind of stuff.
We're really going all in on the web platform, particularly for servers, but anything you build for a server can run pretty much in the browser or in a service worker in the browser. So that's what Remix is in the future. And you can see we've been working on a repo right now. It's not in our organization.
It's under Michael's GitHub. So mjackson slash Remix the web with dashes. And you can see a bunch of really low level foundational pieces like form data parsers, file storage. We're gonna have our cookie and session abstractions and things like that there.
Type safe HTTP headers. So yeah, Remix, when it wakes up, is really just a huge bet on the web platform being the target that we want to build AI driven user interfaces. Whether that's a server that's just kicking out HTML
or a React server component server or something that wants to integrate with Preact or some JSON endpoints that an LLM wants to consume to then display something, you're gonna want some abstractions back there. And we think the web platform is that abstraction. Yeah, yeah, I've seen a lot of talk
from people who are very much into server performance and things saying that, oh, the web APIs, they can't be made fast or whatever. And I see Michael coming back and being like, well, I don't know, I did it and it's pretty fast. Which is very encouraging to me
because when I'm faced with using Node's HTTP module or just the web fetch API, I'm gonna choose the web fetch API every time because it's just so much, maybe it's just a familiarity thing, but I like it a lot better. Well, yeah, I mean, familiarity is important. At the end of the day, you're building on the web.
So like, why change context? If it's capable. So yeah, sorry, my throat just got really dry. Little cough. And so yeah, with all those, with the performance thing, we're never coming out of the gate on any of these things saying, this is the fastest form data parser. But what Michael has been finding, he's been writing pretty much all the code.
Is when he builds it on those APIs, without even thinking too much about it in the beginning, it's usually pretty close to on par with the Node ones. And then with a little bit of fine tuning on it, they're turning out to be faster,
especially on the runtimes that have those APIs natively already, right? So that's the other funny thing is like, you could take something like Busboy, which is a multi-part parser, streaming multi-part parser, and run it in Node, and then run it in Cloudflare Workers,
and wildly different performance profiles. Yeah. And so, yeah, it's kind of interesting. But our goal is not to go and beat everything that's out there. It's just, we wanna make a bet on the web platform, and we're making sure that out the gate,
it's fast enough already. Well, I'm really looking forward to the Remix Jam coming up later this year. I think that'll be really exciting to see all the cool stuff that you've been working on. And I'm looking forward to hearing what you have to share with us at Epic Web Conf coming up here really soon. So, yeah.
I'm looking forward to hanging out with everybody. Yeah, yeah. I was talking with Aaron Francis. He's very excited to meet you in person for the first time. Oh, Aaron's gonna be there? Yep, Aaron's gonna be there. So, yeah, very exciting, and super excited for people to come and just meet people, get out of our homes,
and get to know each other a little bit. So, thank you, Ryan, for being a part of that, and thanks for giving us some time to get to know you today. Yeah, man. Thanks for putting the conference on. Excited to be there. Yeah, me too. Bye, everybody.