Epic Web Conf '24 Speakers

Ryan Florence

Co-creator of Remix

Watch Talk

Talk

  • Thursday, 1:40 PM1:45 PM
    Surprise!

Bio

Obsessed with UX since using an Intellivision

Share

share on twitter

Interview

Hey Kent. Hey what? You jumped in front of me. That's hilarious. Maybe we should make this my episode because I'm also speaking. Oh yeah. No, no, no. Ryan, I'm excited that you're going to be speaking at EpicWebConf in April.

I wanted people to want to come and meet the speakers. I think that for me myself, I have had job opportunities from relationships that I've built at conferences and being in person. I'm glad that we're going to be live streaming the conference and the videos will

go up and everything. I think the knowledge should go to everybody, but the experience is something that you can only get in person. So I want you to give people as much FOMO as possible by introducing yourself. Actually, I want to say something about that. Earlier in my career, I remember going to a conference and there were some people that I wanted to talk to

who were some of the speakers and online personalities that I knew. They were not very personable and they were hard to approach. I kind of thought, wow, they're kind of jerks. That's why I was going to the conference mostly,

was to meet them and talk to them about stuff. Then I was at a conference myself. I think it was EmberConf a long time ago. There were some people that I wanted to talk to and I could never talk to them because I was constantly being followed. A bunch of people were approaching me and trying to talk to me. Then it clicked. I'm like,

oh my gosh, I'm one of those people to this person. This person came to the conference and they were like, I want to go talk to Ryan about whatever weird Ember thing I was doing at the time. It clicked. I was like, oh, they want to talk to me. My whole mindset at conferences

completely shifted once I realized that people wanted to meet me. I'm going to be meetable. I think you had that shirt that says you can sit with us or something like that. Yeah. Ever since that conference, I've always tried to be really mindful of people might want to talk to me because I do some stuff that they've used or heard of.

I'm going to try to be meetable. Come to the conference, come say hi to me. If I don't want to talk, I will be in my room or in my car just sitting there trying to recharge my social batteries. If I'm out in public and I'm around, absolutely approach me and I will try to approach you. Super. Yeah. I love that invitation.

You've already kind of turned the conversation the opposite direction starting by being the one to start the conversation. That's actually a question that I ask later on in the interview. It's like, what do you want to talk with people about? I'm going to save that until after we get to know you a little bit. Ryan, what are you into? What are you working on?

I'm working on getting this office better because I want to make more videos. I'm sticking sound stuff on all the ceilings. I've got piles of sound things everywhere. I've been having a blast making the latest Remix singles. I did the one on Trellix to show off how

Remix can be used to build apps. Except for Figma and Canvas or charts, drag and drop Trello boards are pretty close to the limit of what web apps do in complexity of user experience, right? Yeah, for sure.

So anyway, that was that one. I did all the crazy data loading and client-side caching with our new client loaders and stuff in Remix. I made those videos. Yeah, I'm having a blast making demos that teach a pretty advanced user experience. I mean, the apps aren't complete,

but what parts of the apps I have implemented are pretty advanced. So I'm just having a blast showing off how well Remix handles that stuff. Mm-hmm. And just to be clear, because there are some people who may not know, but you're the co-founder and co-creator of Remix. I am.

So people know, and that's why you're doing all this work on making Remix awesome and teaching people why it's so great. See that empty space right there? Yeah, yeah. That's where my glowing Remix sign is going to go. Oh, nice. Yeah. I joked with Zeno, one of the other conference speakers,

that the entire reason I'm doing the conference is so I can get an epic web. Oh, that'd be cool. So yeah, I'm one of the co-creators of Remix and React Router. Michael and I have been partnering on both businesses and open source for about a decade now. Wow. Yeah, that's a long and solid relationship.

We've actually been pairing. As you know, we've been trying to do this interview, you and I, and every time I'm like, nope, sorry, I'm writing code with Michael. And we're working on the next pretty major iteration of Remix with some of the features that React has been shipping,

like server components and server actions and form actions. A lot of stuff that smells a lot like Remix. But fundamentally, they kind of change what we can do with Remix, both as just developers and as a framework. And so, yeah, we've been having a blast writing some code.

It's going to be, I don't want to hype it too much, but when we ship it, I don't think that I'll ever be more proud of code than what we're working on right now. Wow. It's so good. It's like React is so good now. React has so many cool capabilities. We learned a ton with Remix.

And then with a 10-year-old relationship of working and building together, it's kind of like magic right now. It's super fun. I don't think I've ever had this much fun in my career. Well, that is awesome to hear. I know that when you were working with Michael on Remix originally,

you spent a ton of time pairing. And I think you may have told me this, but I could just tell that you were having a blast. That's the most creative time is when you and Michael are pairing on something new. Yeah, that was a little bit under duress, though. We got to make money. Yeah, so there were some corners cut, and we didn't get on the same page with everything.

And yeah, we didn't take enough time to really get the primitives as well as we could have. But also now, two, three years out of building Remix, we know a whole lot better of what we need. Well, and Shopify, too, has reduced a lot of the stress around,

like, how are we going to make money and stuff? They've been really good stewards of the project since the acquisition. Yeah, working at Shopify is absolutely fantastic. Normally, when you ship a new tool or framework or something, your user base and their requirements and their scale grow with you, right?

So Remix has some rough edges, but the apps are not very big yet that people are building. The apps need more, Remix gets better. And they kind of grow together. You get dropped into Shopify, and it's like, hey, we've got a five million line React app with React Router. How do we get this on Remix?

And it's like five million, like literally five million lines of React. Let's get it on Remix. And so it's just sort of like, yeah. Or like, here's 20 merchants that have shipped with Hydrogen One, which had probably the first production deployment of React server components.

It's like, okay, now Hydrogen Two is on Remix. Let's bring all these merchants over. And it's like, well, they've all got, they're talking to three CMSs, they're talking to Shopify. They've got like, anyway, like promotions and all this stuff. And how are we going to do I18N? And so it's just sort of like Remix was growing, and then we got it to Shopify.

And now it's just like use cases are through the roof. And we've had to try to keep up with them, which has been really good. It's helped me to like know what to focus on better than just like a Twitter poll or something, right? Yeah, that's very cool. I'm excited about the stuff that you and Michael and the rest of the team are working on.

And I know that there's lots to be excited about. So what are you planning on talking about at Epic Web Conf? I keep forgetting what month Epic Web Conf is because I'm so busy right now. Well, we're three months and a week and a couple of days out now. So April 11th is the date. That's an eternity. I have no idea. As long as it's in your calendar and blocked out,

then I expect that you'll be there. Hang on, let me see. For those listening, Ryan is literally checking his phone right now to make sure that it's blocked out on his calendar. Yep, I got it in there. Oh, phew. So Ryan will be there, confirmed. I will be there. I have no clue what I'm going to talk about. Depends on what we've shipped. I like talking about...

You always want to talk about the thing you're trying to ship, right? That's the thing you're most excited about, right? Yeah. And then by the time you're done, you're all like bruised. And you know what trade-offs that you had to make and you wish you didn't have to make those trade-offs. And then you're just like, yeah, I built a pretty cool thing. I can tell you about it, I guess, if you want.

But you're not like as hyped anymore, right? So I'm trying to ship to that. And that's, like I said at the beginning of this, like the remix singles, building Trellix and building the movie app. Trying to get back into like hyping the stuff that we shipped a long time ago. And it's actually been a lot of fun. So let's see, things that we've recently shipped is... We're calling it...

Well, the feature is SSR faults, but we're calling it spa mode. So a big requirement for embedded apps at Shopify. So when you log into your Shopify admin, because you run a store, you can install a bunch of third-party apps where there has to do with like some sort of like labeling

or shipping tracking or whatever, right? And we actually built first-party apps too. So we build a lot of extensions to the Shopify admin the same way that third parties would extend it as well. So we call these embedded apps and they have to run in an iframe.

And iframes enable annoying people to track you across the internet and build a profile through all the ad networks that are served over iframes. So Safari and now Chrome have said, you know what, we're not going to let iframes set cookies inside of themselves. Because that's how you get tracked.

So you can't set a cookie even on your own. Like you're a remix app, you're sitting inside of an iframe and you're just like talking to your own action and you're trying to set your own cookie. You can't do it. And so it makes it kind of hard to do authentication and stuff inside those iframes. So this was a big... There's a lot of other reasons that we did this,

but this is the use case that kind of kicked my butt. Like stick it to the top of our roadmap was we still want to use remix, right? Like you still want to be in that flow with loaders and actions and fetchers and all the pending states and the forms and requests and response.

Like I just I still want to like think the server client paradigm because I like it. And it's flexible, right? Like you could write it that way for a single page app and then maybe someday you can move it over to server stuff. So we built spa mode that allows you to run remix without a server,

which 90% of remix is already React router and already runs without a server. Like it's already a single page app. It can just server render. So spa mode is really just saying, all right, we're just going to make a single entry HTML file out of your root route. Sort of like an SSG thing.

And then from there, it's just like remix normally where we send all the assets to the browser. And so now if you visit the page, you get the static HTML thing that we built at build time when you do remix build. And then from there, it's all getting client bundles. And it's just there's no server rendering. There's no server. It's talking to client loaders.

But you're in that remix flow and it's super fun. So yeah, might talk about that. I took, you already know this, but I took your Epic React app that you build, the bookshelf app. And I just barely five minutes before this call converted it completely over to remix spa mode.

Going to make some videos about how to do that. So that'll be cool. What else have we shipped? Vite. We got Vite now. That's mostly for us to just like shed responsibility. No, share responsibility. Yeah, that's true. That's true, actually. Because you're contributing back to Vite as well. And I think that's a, you know, totally. It's a good, good thing. Speaking of which, a really dumb little feature,

something that I really liked about remix is when you import an asset, like it just gave you an href to like include however you want, like CSS, right? When you import CSS into remix, it doesn't just do some magical who knows what to get CSS on the page. You actually got an href and you put it into a link yourself.

And Vite couldn't quite do that the way that remix could, but now it can. And I know that our team helped contribute some of that stuff. So, yeah, you're right. It is two way, but I'm trying to get away from bundlers personally, completely. So I probably will never be very involved in that.

So I probably will never be very involved with RV stuff. Yeah. But this is the real world and lots of people want and use bundlers. So I appreciate that that is a priority for the remix team. Yeah, absolutely. Yeah. Thank you for clarifying that. We will always support bundling because there are performance improvements

that you only get with bundling. So, yeah. But I think that having a focus on how do we do this without any magical tools actually leads to a simpler API and implementation as well. So I think both goals are important. Yeah.

Then the bundlers can just target the real thing instead of like that. That's a big regret I have of remix is that the first thing that happens is a bundler looks at a config and some magic files and then remix goes. You know, there is no real... I mean, your server file is an entry point, but you import your build at the top of that thing, right?

And it's like just this something else made this. I don't even know what it is kind of thing. And that stuff always bugs me. So that's actually kind of what I'm saying, where we probably didn't spend enough time on our primitives, even though we had the knowledge and the skills and could have had the foresight if we took a little more time, but we were in a hurry. Yeah.

Well, Ryan, it's been awesome to chat with you. I do want to ask you though, specifically, is there anything that you're particularly excited to talk with people about or that you hope people come and talk with you about when we're at the conference? User experience. I just want really good web apps. I'm tired of jank.

I wanted to just be snappy and tight and intentional, right? When you're using the web and you're clicking it, you're buying a flight or you're putting some money into an ETF or whatever you're doing, or you're just trying to pay your dang electric bill. You're just like never... I don't know.

I don't trust most websites that I have to use. I'm always afraid. Like I've been charged. I think it was my wife was trying to buy something online and we got charged $700, 14 times. Whoa. Yeah. She clicked the button and like a spinner came up and then the button just showed up again.

And she was like, what the heck? Why didn't it work? So she clicked it again and she ended up doing this like 14 times or whatever. And then credit card company calls me and I check the thing and it's like, what are we doing? Oh my gosh. Yeah. So it's just, we should... Let's build better UX. Come and tell me what you're building and what part of the UX you don't like

and let's think about a better way to do it. Love that. Awesome. Well, Ryan, thanks for giving us some of your time. I'm really looking forward to seeing you with a crowd of people asking you questions about UX and just the way that you do it, being totally there for people to chat with them and make them feel welcome.

So I appreciate your presence at the conference. I think you're going to make it a special place and I hope to see other people there. Thanks, man. I'm glad you're throwing it. It's going to be a good time. Thanks, everybody. We'll see you at the conference in April. Bye.