Skip to main content

over 4 years ago Syntax Podcast

Hasty Treat - Next.js 12

Wes Bos

Wes Bos Host

Scott Tolinski

Scott Tolinski Host

Topic 0 05:27

Next.js 12 adds middleware support to intercept requests like Express

Wes Bos

Maybe I

Wes Bos

you might not want to to use this. So this Also, if if I'm correct, this also will replace Schemas, all of your data. You can get your relationships, all of your input fields. You can relate those things to each other, and then the whole editing experience on top of those schemas is excellent. A. You can have your editors follow processes. You can, send things for approval. You can additionally put fields in there. It's an awesome I'm gonna say it's a CMS.

Wes Bos

if they're logged in or not. I specifically use a middleware to make Sure. Somebody is logged in before they hit any of the API endpoints.

Wes Bos

different JavaScript frameworks like Express or Fastify or does Fastify have middleware? Yeah. Fastify has its own. Yep. There you go. So with the idea with middleware is that when you have a request going into your node server,

Wes Bos

this type of thing happening in Next. Js, And here we are. The next big thing, and I'm really, really excited about this, is that they've introduced a concept of middleware.

Wes Bos

So If you've never used middleware before, it's very popular in

Scott Tolinski

Yeah. So this isn't touching your CSS, your You need that stuff. It's not handling your fast reloads. It's not handling that stuff. It's simply just all of that. Compiling the JavaScript. Yeah. Okay. Makes sense. And then the the fast refresh is still done via webpack. That's awesome. So really, really excited about that. I remember we talked about

Wes Bos

my platform from right now, it's just a, express Single process.

Wes Bos

They have other examples here, logging, AB testing, server side analytics, a content platform, check out Sanity. I urge you. Sanity dot I o forward slash Syntax.

Wes Bos

you're able to sort of intercept that request, being able to import things that are not in your node modules directory, but just Import them from a URL, which is part of the ESM spec, meaning that you can import whatever from h t d p colon /, and there are lots of different Websites that host ES modules. Skypack is probably the biggest one. JSPM, And now Next. Js has rolled that out, and that's really exciting to see. Yeah. So who can actually consume

Wes Bos

Express world. Most Other frameworks have a concept of middleware as well. And in fact, most frameworks use this thing called connect middleware Mhmm. Meaning that you can just share middleware which does your video, which is Awesome. So check it out. If you are building a website or an app and you need

Wes Bos

It does most of what Babble does, but if you still have, like, some, Like weird stage 0 or stage 1 babble plug ins, could pretty easily update everything, and you'll be, JavaScript world, in

Wes Bos

That's another good one is if somebody were to visit one of the URLs for my videos directly and continued to eat it.

Wes Bos

Do a little bit of work and then carry on that request down the line, and you can do things like make sure somebody is logged in. You can do things like make sure somebody has a role or permission this is, like, the first step to announced Or in our case, it j s x that needs to be converted to JavaScript. It would do that. SWC also does that, and that video is private Unless you're logged in, then I'll just redirect them to the the login page. So my course platform runs

Wes Bos

And when I saw this, I was like, And wait for those things to fully render before they get sent out. So that's another good use case for, like, this whole, like, JavaScript and

Wes Bos

so I would assume it does not replace Webpack. Oh, yeah. Yeah. It says, we've made numerous improvements The web pack including optimizing fast refresh

Wes Bos

a Webpack, or is this used with Webpack? I think we've talked about this before. I just forget. This is just for JavaScript,

Topic 1 00:00

Transcript

Scott Tolinski

If one of your users AVIF? It looks like Firefox has a version 93,

Scott Tolinski

Wes, do you wanna talk about Sanity, and I'll talk about LogRocket? How about that? Sanity

Wes Bos

It's gonna get you double the free usage tier. Thank you, Sanity, for sponsoring.

Announcer

Open wide dev fans. Get ready to stuff your face with JavaScript, CSS, node modules, barbecue tips, get workflows, breakdancing,

Wes Bos

It's not just a CMS.

Wes Bos

Hey, everybody. Hey, Wes. How's it going? Good. Excited to talk about Next. Js 12. It's got not like a Not a tasty amount of updates, but a hasty amount of updates and some really good updates I'm excited about. Yeah. The amount of updates, We'll say is tasty,

Announcer

Tolinski.

Announcer

Monday. Monday. Monday.

Scott Tolinski

Welcome to Syntax. In this feature. So the headline feature, I think, for for a lot of this stuff is the new Rust compiler.

Scott Tolinski

off. Get to see it with his own eyes, and LogRocket is a service where you can see with your own eyes all of the bugs that are happening in your Is is really one of the the key components of this thing. Now we we've been seeing a little crop of some of these new tools come up, and SWC has Been being worked on for a while now, so it's really, really, really interesting to see that Next. Js is shipping with SWC for 3 times faster, Sign up today and get 14 days for free. Seriously, watch their video. Watch their marketing stuff. This is one of those services. See, you gotta see it to believe it. I'm definitely a big, big fan of visibility in tracking down my bugs, so check it out log rocket.comforward/syntax.

Wes Bos

Okay. Back to Sanity. Sanity, it's not just a CMS. It's a entire content platform that enables better editing of your digital experiences. What does that mean? Well, you can set up Sanity with your or AVIF or any of these modern formats are not supported. Yep. Formats, man. They've just been a world of unsupported JavaScript It will do all of your images for you. You can integrate it with another one of our sponsors, Mux,

Scott Tolinski

is the Wes Bos.

Scott Tolinski

as they happen, it records a session replay, which allows you to check out the network request, the error logs, and so much more While a user has committed some atrocity on your site, and now you can actually figure out how they did it, users said they come to you and they say, oh, this the site turned blue. What'd you do? Why is the site turning blue? And you say, oh,

Wes Bos

is your structured content editing experience.

Wes Bos

Scott just dropped his snack and brushed it off move over I could move that over to Next. Js and, like, I that wouldn't change any of the code that I I have written because it's It's still JavaScript running on Node at the end of the day, but it would all be in one nice little package. So pretty excited about that. Very excited about that. Yeah. Same. Next up is React 18 support. We did an episode on React 18. If you've been paying attention, React 18 is It exists. It's in some sort of, you know, a prerelease

Scott Tolinski

but the quality of the updates is definitely tasty. Now what's definitely also tasty is 2 of our sponsors today, and I'm talking about Sanity and LogRocket.

Announcer

soft skill, web development, the hastiest, the craziest, the tastiest TS, web development treats coming in hot. Here is Wes, Barracuda,

Scott Tolinski

next episode of Syntax, this hasty treat, we're gonna be talking about Next. JS version 12 and all of the hot new goodness that came along with Next. Js version 12. My name is Scott Talinsky, I'm a developer from Denver, Colorado. And with me, as always,

Scott Tolinski

Next, let's get into Next JS and I bet you'll all be able to guess that Safari, of course, does not support it Along with IE, surprisingly, Edge doesn't support it. I don't know if the hell that makes any sense, but it doesn't. Yeah. What the heck? Yeah. It's weird because, I mean, Edge is Chromium based, so you you feel like if all the other Chromium based browsers have it, then why doesn't Edge have it? But that's interesting. And, Of course, if you know anything about how browsers work on Ios, since Safari doesn't have it, they all don't have it because all the browsers on Ios are Safari.

Wes Bos

It's a packages between

Scott Tolinski

and all of the hot new updates.

Announcer

Boss, and Scott, El Toroloco,

Topic 2 04:17

Next.js 12 uses new Rust compiler SWC for faster refresh and builds

Wes Bos

And it is sort of a Babble alternative.

Scott Tolinski

And, basically, So Alright.

Scott Tolinski

Fast refresh and 5 times faster builds, Metaphorically drop their snack on the ground, brush it off before eating it, then you'll probably wanna make sure that you can find whatever that metaphorical bug is in your site and with the service called LogRocket. Now LogRocket will do exactly what Wes just saw and got to see me brush that Snack

Scott Tolinski

and TypeScript Yeah. Alright. Next 1 is going to be native ES module support.

Wes Bos

and convert it into

Wes Bos

other JavaScript. So if you had things like experimental features

Scott Tolinski

Now era, prerelease phase.

Topic 3 08:25

Next.js 12 supports React 18 APIs and features

Wes Bos

Next one is AVIF, a v I f support in their image component. So I think It goes Next 11, they announced an image component, which was one of the killer features of using Gatsby. Mhmm. Which is sick. Awesome. Groundbreaking. It's my little story here, I I got my new MacBook, and I tried to just time machine restore from it. And because I had, Okay. Cool. Next is going to be the bot aware ISR fallback. Wes, do you know anything about this? Because I don't know anything about this. Yes. It stands for incremental static regen in. That's what ISR is. And the sort of the idea is that when you're visiting a page for the first time, server components and server side streaming. Yep. And

Wes Bos

I remember Next. Js showed a demo of it, and we're almost a year later now. We just Starting to see the peeking head of being able to to try this kind of stuff. So previously, you had to install, like, a custom version of Next. Js, I believe. So that's it's good. This React stuff, I've learned to just, like, sit on my hands and wait for it to actually come. Yeah. Because with suspense and server components, They announced it, and then 2 years later, it's we still don't have it. So they're working in public. It might not have ever be a thing, I've learned. So I just sit on your hands and wait for it to come out and then start using it. Yep. Totally. Totally. Totally. Totally. Totally.

Scott Tolinski

So, for instance, if you'd like to enable server side streaming,

Scott Tolinski

I haven't used React server components or anything like that yet. As intense as I am about trying new stuff, I I still kinda just wanna wait until these things are all Yeah. Complete before going ham on them. But the support Word is starting to come in now, so that's pretty neat. It's almost a year now that React

Scott Tolinski

you can enable Concurrent features. There's React server components, which you can enable or disable.

Scott Tolinski

underneath the flag, SWC is a TypeScript and a JavaScript compiler that consumes JavaScript And it looks like Chrome has a version 95, silly. It shouldn't have done that. You must have done that. And then you can watch in horror as it turns out that Their valid bug is actually a valid bug and something that you had done wrong because now you can see all that with confirmation video and more. It is so super cool, so check at logrocket.comforward/syntax.

Scott Tolinski

independently.

Scott Tolinski

So next step is that It supports React 18.

Scott Tolinski

you can use React 18 APIs. Now React 18 isn't stable yet, but if you want to give these things a try, you can. And it seems like you can enable various React Eighteen features we'll just spit out JavaScript for the browser to read. Now it's very fast is the place you're probably gonna want it the most, unless, of course, you're on Android

Topic 4 13:11

Next.js 12 has native ESM module support

Scott Tolinski

everything getting native ES module support is that The more things that have it, the less issues we're gonna have because the more people using it, the more bugs are gonna pop up and the more Weird packages are just gonna stop working and stuff like that. So, yeah, shout out to ES modules. Happy to have the support here for that, and let's just hope that That transition gets smoother and smoother as I'm sure it will. We need to do a website of, like, where are ES modules in the node location because My name is Scott.

Wes Bos

because moving 1 file over at a time, even if they're small files, takes a lot of work. So what I had to do is, like, scrap the whole thing, and then I deleted something like 30 or 40 gigs of node modules on my computer. And then I moved it over in a couple hours. It's much faster, so there's that pain of having to and then also needing to MPM install the correct thing. Yeah. It will be nice to just Import the thing. But I also wonder, like, how do pure dependencies work with that? You know? I don't know. You know what Matt Matt Perry from Framer Motion, Redirects.

Scott Tolinski

That and the GraphQL more than 1 version being loaded errors are, like, the bane of my existence, and I will just decry anytime either of those pops up. Next one is URL imports. So,

Wes Bos

time. You just simply just import it from a URL, and it will go off and grab it when it needs it. Yeah. I wonder how this will end up working in practice. You know, I think it could be really, really neat to have these this functionality here. I I wonder In which cases is it gonna be really super usable? I'm curious about that as well because, like, a lot of people hate the Huge node modules directory and and the problems that come along with that. And, specifically, and making on demand very heavily on middleware.

Wes Bos

like, millions and millions of node modules files on my computer, it was telling me Sixty hours to move this thing over

Scott Tolinski

ripping on Next. Js 12. Yeah. Yep. Ripping. Ripping. But, yeah, the we will see you on Wednesday Now Next JS for a full archive of all of our shows. And don't forget to subscribe in your podcast player or drop a review if you like this show.

Scott Tolinski

types of issues that you can encounter in the web, This is a new one for me in terms of being ultra frustrating. It's this, anything where, like, a common JS package won't load inside of an ES module situation.

Scott Tolinski

Yeah. Totally. In terms of, like, frustrating

Scott Tolinski

for a potluck episode of Syntax. Catch you then. Peace. Peace.

Wes Bos

Either using or moving over to ES modules.

Wes Bos

Fame, he he said that it's really exciting for them for, like, demos to being able to pass along a demo with, like, versions Yeah. That's a good point. Like, Just import whatever from you. But, like, you can I guess you can lock things other But if you're just, like, sharing a file or sharing a, Maybe it's better copying and pasting into REPLs and stuff? Yeah. Yeah. That's true. I'm just sending somebody a single file to test something. Yeah. Alright. That is Next. Js 12. Really, really exciting. As always, next updating Next. Js is very, very painless. If you keep up to date with The there's usually not too many breaking changes here or there. Updating is not a big problem. I've always been very happy updating my Next. Js applications. Not a huge big deal. So check it out. NPM SEO so very fast stuff coming out and utilizing Rust, which Feels like a very modern way of approaching the problem. Yeah. So what does this replace in Next. Js? I'm assuming that Babbel. This replaces both Babble, which Babble used to take your

Announcer

Head on over to Use syntax.fm

Wes Bos

There's a whole bunch of different ones out there, and that's kinda Citing as well that you have no npm install Don't really have to sweat these details. You just use the image component in Next or Gatsby or whatever framework you're using, and it'll be figured out. It will fall back to a JPEG. That's that's the beauty of using either a service Unpackage.

Scott Tolinski

So now everyone gets to get the joys of working in An e s m environment where suddenly things just complain at you for no reason, so that's great. As somebody who's been in the e s m for, like, a little while here, it's A little rocky. You will run into issues, but, you know, the best part about

Topic 5 03:58

Next.js 12 major version with optimization and performance features

Scott Tolinski

and optimization Let's just make a bunch of problems and then solve them. Yeah. Yeah. That's the web developers.

Scott Tolinski

has been cruising along, and they they come out with new stuff all the time. But this is Next. Js version 12. It's a major version of Next, and it includes some heavy hitting performance

Topic 6 09:56

Next.js Image component now supports AVIF images

Wes Bos

awesome. And Gatsby always had support for AVIF, which is very, very small versions of images.

Topic 7 10:17

Next.js 12 detects bots for better ISR fallback experience

Wes Bos

like Cloudinary Imajix

Scott Tolinski

Using Chrome for Android or Android browser or any of them except for Firefox for Android. Doesn't either. We should say that you, as a developer,

Wes Bos

continues to get easier. It's still not there yet, but that's another step in the right direction, I believe. Kinda feels like just, like, solving a bunch of problems that We created. You know? Yeah. Hey. Hey.

Wes Bos

or doing it generating them yourself with one of these frameworks is that they will always fall back to, at the end of the day, a JPEG or a PNG if WebP system right now because Oh, man. It's hard. Yeah. It's hard. And it's not like there's a lot of people that complain about it that don't understand the complexity of the ecosystem, so So maybe we should do 1 in terms of, like, we know it's hard, but this is where it's at, and this is how you can sort of approach your your projects

Wes Bos

That page will not be rendered yet if you're doing them render on demand. So if someone visits a website, a. Then they see a loading screen because that page hasn't been generated yet. And then the next person that comes and visits it, then it will have been generated. And that can be a bit of an issue with Google bots because, like, if Google visits your page and just sees loading

Wes Bos

then it will index that. So they will be able to detect web crawlers

Scott Tolinski

formats for the entirety of being a web developer. It's like, This is one thing that you will never get past is how can we just get the best format supported by all the browsers the fastest, please, Especially with media.

Scott Tolinski

So you don't get it on mobile, which, honestly,

Share

Empowering developers for over 286197156679 milliseconds!