🍿 Partial Pre-rendering Deep Dive

Hey friend,

A few weeks ago I hosted a workshop on Next.js and the workshop was a hit. Towards the end of the workshop, this is all I could hear,

" loved this "

" learned so much "

" increase the price "

" create one more "

" create a community so we can be your cheerleaders "

🥹🥹🥹

I also loved connecting with so many of you and teaching live. After a lot of us went remote, it felt like I'm creating content in the void but this workshop makes it very real.

More importantly, I had fun and you had fun.

Waitlist for Upcoming Next.js Course 🔥

I'm working on a self-paced Next.js course 🤫.

Now, If you sign up to the workshop, you get access to the course for free which is what I'd recommend 🎁.

I'll be selling the course in Early access which means you'll get access to the course modules as they become available and you will get hefty discounts until it's fully created.

I'd highly recommend you to sign up to the waitlist if you want to level up your Next.js skills.

>>>> Click here ↗ to add yourself to the waitlist.


🍿 Our Weekly Snack: Partial Pre-rendering

Up until now, we knew about Static and Dynamic Rendering. Just a quick refresher,

Static Rendering means your page is fully static for example, a blog.

Dynamic Rendering means you have dynamic parts to your page i.e. interactivity, for example, users can upvote your blog post, add comments etc.

So What is Partial Pre-rendering? (PPR)

PPR is a method of getting the best of both worlds - Static as well as Dynamic rendering. In static, we want to download all the blogging data in advance since all our content is static i.e. doesn't change.

In Dynamic, let's say that same site has ability to upvote the blog post as well as add comments which makes it dynamic.

However, majority of the apps require a mix of the two just like the blogging app we discussed.

⚠️ Most routes are not fully static or dynamic.

That's where PPR comes in play.

In PPR, the static parts of the page are cached already so will come from the CDN known as the shell leading to a faster page load.

Then, the dynamic parts will asynchronously get downloaded once the server is ready with the data.

🚨 Please note that PPR is truly an experimental technology that is not yet recommended for production use.

How does that work?

Well, PPR uses React suspense ↗️ to defer rendering dynamic parts of the app.

The shell leaves holes for dynamic content where we can add a Loading Suspense Boundary so user sees a skeleton loading state.

🤔 What is a Suspense Boundary? <Suspense> lets you display a fallback until its children have finished loading.

The async parts are streamed in parallel.

How to enable PPR?

🤫 Latest Frontend News

Bundlephobia helps you find the performance impact of npm packages, check it out here ↗.

ShadCN UI Library now has Charts 📈 - you can copy paste blocks of code directly in your apps. This is huge!

What!! A framework-agnostic tool that converts any layout into a drag-to-swap one with just a few lines of code? Here is the landing page ↗

Want Type safe Server Actions in your Next.js (App Router) project? next-safe-action ↗ handles your Next.js app mutations type safety, input validation, server errors and even more!

Is it time for Next.ts? There is now support for next.config.ts file in Next.js 15 RC. This file earlier was next.config.mjs. Check the tweet visual here ↗

💖 Weekly Youtube Videos

Check it out and subscribe to my channel ↗️ for more Frontend, Leadership and Career Development content.

Build and Deploy a Full Stack AI Todoist Clone: Next.js, Convex & TypeScript

video preview

How does React Compiler ACTUALLY work?

video preview

What do you think of today's Newsletter? Simply click on one of the links below.

🔥 😐 👎

A Frontend Newsletter that you'll love! 💖