On today’s episode, we’re airing a conversation recorded at the Next.JS conference. We chat with Lee Robinson, VP of Developer Experience at Vercel about the company’s vision for evolving from Webpack to Turbopack, helping customers who are cautious about migrating to a new tool, changes happening with React server components, and much more.
Webpack has been king for several years. Vercel wants folks to embrace Turbopack, but their claims about speed raised a lot of backlash after it was first announced. Lee explains why he thinks the Rust-based approach will ultimately be a big benefit to developers and how organizations who are deeply ingrained with existing tools can safely and incrementally migrate to what is, for now, a very Alpha and experimental release.
[intro music plays]
Ben Popper Amazon Web Services uses the world's most comprehensive cloud platform to solve difficult tech challenges. Learn how their expert team and inclusive culture make it happen at aws.com/careers/life-at-aws.
BP Hello, everybody. Welcome back to the Stack Overflow Podcast, a place to talk all things software and technology. I am Ben Popper, live from San Francisco at the SF Jazz Center, getting ready tomorrow to attend the Next.js conference. And we were lucky enough to get a little bit of news under embargo which we're going to chat about today. I'm here with my frequent colleagues and collaborators, Ryan Donovan and Matt Kiernander. How's it going, y'all?
Matt Kiernander Very good, hello.
Ryan Donovan Good, how are you doing?
BP Good. Good to see you. So today we have a great guest, Lee Robinson, who's the VP of Developer Experience at Vercel, and we are going to be chatting about some of the changes that they are announcing, some of the new stuff they're announcing today, and how that will be impacting developers around the world. Lee, welcome to the program.
Lee Robinson Thanks for having me. Happy to be here.
BP So Lee, for folks who don't know, tell us a little bit just about how you got into the world of technology, web development, and how you landed at your current role.
LR Yeah, I have been coding for over 10 years now. For the majority of my career, I was doing kind of product development work, and then I found this fun thing called DevRel, which has been a great career change for me because it's a great intersection of all the things that I love, whether it's programming or design or writing or going to conferences and speaking and just trying to help educate and grow a community I think is super powerful and a super fun thing to be doing. So I've really enjoyed this latter part of my career. Now I'm the VP of Developer Experience at Vercel, really just trying to make the absolute best products for developers and make it as easy as possible for them to have a quick and fast development cycle and go from code on their machine to URL in the browser as quickly as possible.
BP So I think the big news that we want to get into first, and Matt, maybe you can help us lead off, was the stuff around Webpack and Turbopack. We had discussed this as a group at Stack Overflow and somebody said something to the effect of, “Webpack has been the king for seven or eight years, but clearly is technology that needed to move forward.” Matt talked about the pleasures of going to make a coffee or take a walk around the house while it was compiling, but it doesn't necessarily keep him in his flow state. So Matt, why don't you tee us off to ask a little bit about this, and then Lee, maybe you could talk about some of the technology behind it.
MK Yeah. So I've been having a look through some of the developer experience documentation of Vercel and the philosophies behind how you approach developer experience, and I'm very curious how they're kind of translated into how you built Turbopack and the process and the integrations that you went through to build out some of those features and make sure that developers were maintained in their flow state. So if you could speak to that and how Turbopack came to exist, that would be incredible.
LR Yeah. The move to Rust is mostly transparent for application developers. So if I'm an application developer upgrading to the latest version of Next.js, or I'm a framework author trying to integrate with Turbopack, I'm able to just not worry about the underlying architecture that Next.js uses, because from my point of view, I just write my React code and it's really fast both on my local machine and when I build for production. Now, for the actual framework team behind it building it, I think it does pose opportunities to evolve the ecosystem, obviously Webpack being a very, very large tool with a very large community. There's thousands of plugins out there that people use to kind of extend Webpack and add additional functionality. We want to make sure that the Webpack community evolves with Turbopack and make that a seamless incrementally adoptable transition, because people like to extend their compilation tools or their unification tools or their bundling tools, and we think that there's a way that we can both allow extensibility and keep the performance metrics that we want to make it fast by default.
RD When we do our survey, Rust comes out on top on most-loved languages all the time. What was all your experience working with Rust for this?
LR The Turbopack team at Vercel and the larger Turbo team which includes Turborepo, really, really likes Rust. They find it to be a very productive tool for them that enables them to really get the last mile of performance. And I think when you look at the larger picture of Next.js, we're moving towards this world where you might be able just to install Next.js as a binary and you don't even have to use NPM for n number of dependencies. It's just one kind of pre-compiled dependency. We've already started to move towards this direction because one, it allows us to vendor packages and prevent an issue where somebody hijacked a package on NPM and then it became compromised, and also it helps improve the installation time. So as we move forward towards that world I think it will take over more pieces of the experience and build it into the framework itself and probably use native tooling like Rust.
MK One of the things that we chatted about last week was that people are very married to their workflows. Webpack has been a titan of web development for a very long time. People are used to how it works. They're used to the plugins and the ecosystems, and they've got their custom built configs and all that kind of stuff. And one of the hurdles that we potentially identified was being able to take an existing project that is in Webpack and then transition that over to something like Turbopack, for instance. So can you speak to how that transition might look? Is it going to be just that if you're starting a new project you need to start with Turbopack? If you're on an existing Webpack project, can you transition that over to something with Turbopack?
LR Yeah, so for this first release, we're releasing Turbopack in Alpha, and there's a lot of stuff that's not done yet. We wanted to open source this, get it out to the community, get it in public, and have people start giving us feedback on what works and where they'd like to see the direction go. The long term vision here as we move forward in stability is to give developers the tools that they need to incrementally move over from Webpack, as well as the extensibility of a plugin system that they can use to maybe rebuild a very common Webpack plugin that they use for their custom internal setup. That's going to be kind of a major requirement if they were going to be moving off of Webpack. And we believe there's a way to do that and provide an extensible bundling platform while still having it be extremely fast. So it's something we're thinking a lot about, still pretty early, but I definitely want to make sure that the experience for developers both with their own kind of custom Webpack setups, as they try to move forward and incrementally move to this new architecture, that they can do that in a seamless way. But I also think there's a larger shift here, which is that a lot of people who were previously rolling their own Webpack configurations are now saying, “You know what? Rather than this hand rolled artisanal Webpack React application, I'm actually going to move over to Next.js, or I'm going to move over to these Meta frameworks. They're going to just manage that for me.” And that's the incremental migration I think that we're seeing a lot more often, because then not only do you do that incremental adoption and migration one time, but then in the future when Next.js 14 comes out or 15 comes out and we continue refining the underlying tools to make it the best possible developer experience, you're abstracted away from that and you don't have to go through that process.
RD I wonder how much of those kind of custom scripts were working around limitations. You're saying this is 700 times faster. Are a lot of those scripts now moot? If you have these plugins that are trying to speed up your Webpack process, are they going to even be needed anymore?
LR That's a good question. I think that, yeah, if there was a plugin that was trying to speed up your build process by caching something strategically or trying to add incrementalism into a tool that fundamentally wasn't designed for that from the start, a lot of that will be null and void or obsolete, because the architecture of Turbopack is quite a bit different actually than what Webpack started with, just because of 10 years of experience not only with Webpack itself and how it's evolved over time, but also the team at Vercel taking the expertise of Webpack as well as the expertise of Turborepo and other related tools and kind of building that together into a shared incremental engine.
RD It sounds like with the router you’re offering a more sort of incremental upgrade experience where you can pick and choose features. I remember seeing years ago people on versions of Java that were like three or four points old because they didn't want to upgrade. The upgrade process would be too painful. How much of that is a concern in when you ship these new versions?
MK Has there ever been a feature that as a team, as a company, you’ve thought that sometimes it's wanting to have that balance of that we want to make sure this is interoperable and people don't need to upgrade, but on the other hand, there might be another thought train being like, “This is for your own good. We are going to make this mandatory to make sure that it offers you the best experience. We know best and we'll make sure that you are following best practices.” I'm assuming that's not the way that Vercel does things.
MK And that brings us back to the end of the show. Thank you so much for listening. As always, we give a lifeboat shout out. This is an answer score of 20 or more to a question score of -3 or less that goes on to receive a score of +3 or more. Today's contributor is Rolf who answered the question, “What is @apply in CSS?” Thank you very much, Rolf, for being part of the community. I have been Matt Kiernander. I'm a Developer Advocate here at Stack Overflow. You can find me online @MattKander on YouTube and Twitter.
RD I'm Ryan Donovan. I edit the blog here at Stack Overflow; stackoverflow.blog. And if you want to find me on Twitter, I'm @RThorDonovan.
LR And I'm Lee Robinson. I'm the VP of Developer Experience at Vercel. You can find me online at leerob.io or on Twitter at @Leeerob.
BP I am Ben Popper. Find me on Twitter @BenPopper. Email us with questions or suggestions, email@example.com. And if you enjoyed the show, leave us a rating and a review. It really helps. Thanks for listening everybody, and we will talk to you soon.
[outro music plays]