State-of-the-art React Server Components Developer Tooling

This ad is not shown to multipass and full ticket holders
React Summit US
React Summit US 2025
November 18 - 21, 2025
New York, US & Online
The biggest React conference in the US
Learn More
In partnership with Focus Reactive
Upcoming event
React Summit US 2025
React Summit US 2025
November 18 - 21, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

The talk will start with a quick introduction to React Server Components and then move on to show how they're visualized in one of the developer tools we've built for RedwoodJS. This will give everyone a better understanding of where the client/server boundaries are and how ""use client"" and component imports work together to decide what code gets executed by the RSC server and what code gets executed in the user's browser. This understanding is generally applicable to any RSC enabled framework (which mostly means NextJS right now).


Now, with the audience equipped with a better understanding of RSCs I'll dive into the RSC Payload (aka Flight) format explaining what it is and how it works. For this part of the talk I will use a tool we've built to record and visualize the RSC network traffic to aid me in explaining the RSC protocol. I will also show how it helps developers identify bottlenecks by showing payload sizes and request durations.


After attending my talk, the audience will have a much deeper understanding of how RSCs work, all the way down to the RSC protocol level. They will also be excited and eager to explore our state-of-the-art RSC app developer tooling.

This talk has been presented at React Advanced 2024, check out the latest edition of this React Conference.

FAQ

Redwood is a super-productive framework for building full-stack JavaScript and TypeScript web applications.

Redwood Studio is a companion app for Redwood apps, providing a collection of useful tools for developers, including performance graphs, OpenTelemetry monitoring, GraphQL tools, a database schema view, and a dev time email inbox.

React Server Components (RSC) are a way to execute React components on the server in a server context, sending the result to the client in a format known as the RSC payload.

Redwood aims to focus on server-side caching, allowing developers more control, especially around cache invalidation, and plans to make caching validation strategy configurable.

Redwood is ideal for small teams or individual developers as it provides a full-stack framework that simplifies starting a new project quickly, combining both backend and frontend development needs.

Redwood is compared to Laravel and Ruby on Rails because it aims to provide a full-stack framework with high productivity and ease of use, similar to these established frameworks.

Redwood is designed as a full-stack framework, which may be challenging to integrate with existing backends, as it includes both frontend and backend solutions.

Redwood plans to make React components the default for data fetching to simplify initial setup, offering GraphQL as an optional feature for more advanced use cases, like when a mobile client is needed.

Implementing server actions in Redwood involves parsing various ways developers can define server actions, handling multiple syntax options, and ensuring compatibility with the React Server Components architecture.

Alvar Lagerlöf is a notable contributor, having significantly improved the RSC payload part of Redwood Studio with his RSC partial library.

Tobbe Lundberg
Tobbe Lundberg
27 min
25 Oct, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Redwood Studio is a companion app for building full-stack JavaScript, TypeScript web applications. It offers features like OpenTelemetry monitoring, GraphQL tools, Prisma ORM integration, SSR preview, and React Server components (RSC) cache support. The Render Routes feature provides a graph of components visible on a page, helping users understand the rendering locations. The RSC payload and analysis feature allows for analyzing the timeline and responses received by the app. The payload and the rendered output can be mapped together to understand component size and structure. Redwood aims to be a full-stack framework that simplifies development and supports both current GraphQL users and beginners. It also emphasizes the flexibility and power of React Server components. Redwood aspires to be the Laravel or Ruby on Rails of JavaScript, offering quick project setup and high productivity.

1. Introduction to Redwood Studio

Short description:

Redwood Studio is a companion app with useful tools for building full-stack JavaScript, TypeScript web applications.

♪ Hello everyone. Thank you so much for deciding to spend this time with me here. As you heard, my name is Toby, or Toby, which apparently means bathtub in Dutch, I learned yesterday. Is this funny? Yeah, so Redwood, I don't think I actually saw any hands in there when you asked, so... Redwood is a super-productive framework for building full-stack JavaScript, TypeScript web applications. This is Redwood Studio. It's a companion app that you have access to with every Redwood app that you build. It's a collection of useful tools that you as a developer can use.

2. Overview of Redwood Studio Features

Short description:

Redwood Studio provides various features like OpenTelemetry monitoring, GraphQL tools, database schema visualization, Prisma ORM, mailer integration, SSR preview, and React Server components (RSC) cache support.

Right here, we see the main dashboard with some performance graphs. If we look at the navigation menu, you can see what else is available. We have OpenTelemetry monitoring. There's a section for some GraphQL tools. We have the database section where you can see your database schema in a graph, so like an ER diagram, and we use Prisma as our ORM. By going here, you can see the actual SQL statements being sent to your database.

Next up, we have the mailer integration. So, when you run Studio, you have your own dev time email inbox, so when you work on any features of Redwood where you send emails, you never run the risk of sending test emails out to actual customers, because they will all end up here in Studio. And you can also preview your email templates.

Then we have the RSC section, which is what we're going to talk about today. But finally, I just want to mention SSR, where you get a preview of what your different pages will look like when you share them on social media. And finally, there's just some Studio information at the bottom there.

Before I jump into the RSC section, I just want to make sure that we're all on the same, like, kind of baseline level of knowledge about React Server components. I mean, this is React Advanced, and you have all decided to listen to a talk on React Server component dev tools, so I guess you have some sort of idea about what React Server components are. But just quickly, React Server components is a way to execute React components on the server in a server context. Like, we've been doing React components on the server for a while with SSG and SSR, but that has always been in a client or a browser context. And all those components are then also sent to the browser and executed in the browser as well. With server components, they're only ever run on the server in a server context. And then the result of running those components is sent to the client with this new format known internally as Flight, but more commonly known as the RSC payload. It's a new-aligned, delimited, JSON-ish kind of format.

So now that you know that, if we go into the first item there in our RSC, part of the menu, we have the cache. And right off the bat here, you can see this RSC payload format as the cache values. The cache key, I don't know, it's too small for you to see, but the cache key is the URL on the page that you're visiting, and the value is, as I said, the RSC payload. Caching is difficult. Caching on the server is difficult. Caching on the client is a little bit more difficult. Cache invalidation on the client is super difficult from a framework perspective. So I knew that as soon as I started implementing caching support on the client, I needed to build, or I wanted to build some dev tooling around that. So that's why I added this. Honestly though, we hope that we can ship without RSC client-side caching.

3. Caching and Client-Side Rendering

Short description:

As a developer, caching on the server provides more control, especially for validation. Full-page client-side caching is also possible, but there are ideas for more focused caching and data fetching. Current Redwood uses Apollo Client cache, which may have concepts applicable to Rack Server Components.

We think that as a developer, you have much more control if you can do the caching on the server, especially around caching validation. Maybe we make it opt-in for routes where you know that it would really make a difference. But if we do, we're definitely also going to make the caching validation strategy configurable for you as a developer. But yeah, hopefully we can ship with just server-side caching and then just do normal, state-wide validating logic on the client. And hopefully that will give a good enough user experience.

This is client-side caching, and more specifically, full-page client-side caching. So the cache entry is actually much, much longer than what you can see here. It's the entire page payload that is cached. I have some other ideas around more focused caching, like more granular just for data fetching. In current Redwood, we use GraphQL, and we have the Apollo Client cache. It's super powerful. And it would be interesting to see if there are any concepts from how the Apollo cache works that we can apply to data fetching with Rack Server Components. Maybe there's something in the back of my head here around RcIslands, but now I'm just mostly dreaming. So take it down a notch and keep going with what's actually possible and available right now.

4. Render Routes and Component Graph

Short description:

Render routes is a feature that provides a graph of components visible on a page, distinguishing between server and client components. It helps educate users and team members about the components on a page and their rendering locations. The graph reveals if components originally thought to be server-rendered are now being rendered on the client. Moving imports can ensure components are only rendered on the server if desired.

This is the third... Sorry, this is the last page. We had cache, then we have RcPayloads. We're going to skip that for now, because that's the juicy part, and do render routes. This is the feature that we have the most work left to do on. But the idea is that you have a list of all your routes. When you click on one of the routes, you get a graph of all of the components that are visible on that page. And then we can highlight what components are rendered as server components and what components are rendered client components. We think that this can be super helpful, especially from an educational standpoint, because we, as a framework, we feel that we need to educate our users, but also for app developers and team members on your team to quickly see what components you have on your page and where they render.

This actually started out as a simple Excalidraw graph like this. I drew this graph a long time ago when we first started exploring Rackstar components within Redwood. So at the top, you have the page components, example page. And then that is a server component. And everything below in orange is also server components. And then I can probably guess the blue parts are client components. The aha moment here, or what you can see, is that as soon as we switch over to client components, everything below that is client components. But there's one important thing here. This means that the blue components are imported from other client components. It's the import. It's where a component is imported that is important. Having a graph like this makes it easy to see if you have components that you thought were only ever rendered on the server that are now being rendered on the client. Like, if we look at number.txt here, for example, that component is rendered on the server under data display. But it also renders a client component at the bottom. I mean, there's nothing wrong with this. This might be exactly what you wanted. But if you thought that it was only rendered on the server, having a graph like this can be really eye-opening for you. So if you wanted it to be a server component only, only ever rendered on the server, you can definitely do that. What you would have to do is move the import, because right now it's imported from td.tsx, but if you move that import up to where the graph is orange, so, for example, in table data cell, you would have a graph that looked like this instead. So now it's a server component that is passed down as props to td and then rendered to the screen. So this is the kind of graph that I want to have in the middle here.

5. RSC Payload and Analysis

Short description:

There's still a lot for us to figure out to make that possible, but that's the goal here. The RSC payload part of Studio depends on the awesome work of Alvar Lagerlöf and other open-source maintainers. The RSC payload page displays a timeline and list of responses received by the app. The fourth response, for the root page, is analyzed using raw payload, circle diagram, and statistics such as render duration and payload size.

There's still a lot for us to figure out to make that possible, but that's the goal here.

And now the final part of our RSC tooling, the RSC payload. Before I dive into this section, I want to pause a little bit and say that as a framework, we write a lot of code, of course, a lot of glue code between different libraries that we integrate. But we also depend on a lot of code that other people have written, so I want to take this opportunity to give a special shout-out to Alvar Lagerlöf, who is here in the audience today. The RSC payload part of Studio would be nowhere near as good as it is if it wasn't for the awesome work that Alvar has done on his RSC partial library. So thank you, Alvar. And actually, yeah, why don't we give a huge round of applause? A huge round of applause. Not just to Alvar, but to all of the open-source maintainers whose work benefits us all daily. Thank you. Thank you, everyone.

So back to the RSC payloads page. Up top, you see a timeline of all of the RSC responses that the app has received. And then below, there's a list of all those same responses as well. I'm going to focus on the fourth one from top. The key is the slash, so this is for the root page or the home page. So if I click on that in our dev tools here, I'm taken to this page. Starting in the top right corner, we have the raw RSC payload. There are ten lines of this new line delimiter JSON-ish kind of format there, each line representing one chunk of the home page. On the other side, you have a circle diagram. And in that circle diagram, you have all those same ten chunks. And we can immediately see that there's one chunk, the green one. That's like half of the payload size. So that might be a chunk that we want to dive into a little bit deeper. Below, below the circle diagram, those same chunks are also available. And you can get a name for them. So the green one, you can probably not see, but the green one is called model zero. Going back to the other side again, below the raw RSC payload, we have some statistics. So this is useful if you compare different payloads. What we see there or what is available there is the render duration. So you can see, okay, how long did it take for the server to render this server component? And you also get the payload size.

6. Analyzing RSC Payload

Short description:

The payload size can provide insights into the component's size. The green model zero chunk is analyzed using a 3D printed version. It contains a key of __rwjs__routes and a big div element with nested elements. The payload displays the class name and navigation layout.

Like how big is this payload in total? And that might give you some insight into, okay, wow, this is really big. Why is this component so big? Maybe there's some data there that we don't need to include in the initial RSC payload. Maybe we can lazy load it on the client later for some speedups.

All right, so let's dive into the big one, the green model zero one. If I click on that one, I'm taken further down the same page to this view. What we have up top there is just that single chunk line from the raw payload. It's super wide and very difficult to read. So right below it, we have a 3D printed version of it, the same payload. It's also still kind of hard to read because instead of being super wide, now it's just super long instead. But what's neat about the 3D printed version is that it's interactive. You can click here.

So what I can do is I can collapse the top div element, the first div element there, and see that we have this. So now, just a fair warning here, you're going deep. This is on a technical framework React internals level, but what we have here is in the 3D printed version we have an object with a key of __rwjs__routes. That's just me making sure that I'm not overwriting anything. This is unique to Redwood. And then we have the entire chunk. You can see that this big chunk was just one big div element with a bunch of nested elements inside.

So in the payload, we can see... Here we go. So in the payload we can see in green, in the preprinted version, you see class name and then navigation layout.

7. Mapping Payload with Rendered Output

Short description:

The payload and the rendered output are mapped together. The payload is a more compact version of the raw JSX. The navigation layout and HTML nav element correspond in both the payload and source code. There's one payload that stands out, labeled RSA action 0.mjs with an identifier on send. It is similar to the homepage in structure.

And remember that I clicked on the fourth item from the top with just a slash with a root URL, and that maps to the homepage. And that's what you possibly, at least if you're in the front row, can see in this route file at the top there. You have a route definition for the slash path, and then that maps to the homepage. You can also see in the route file that up top there's a navigation layout that wraps all of the pages. So what the router will actually render here is the navigation layout and then the single page that mapped to the URL we're currently on. And what we can start doing now is mapping what we have in the payload with what is actually rendered. So in the payload, we can see... Here we go. So in the payload we can see in green, in the preprinted version, you see class name and then navigation layout. And if you look closely in the raw output, you can see that also in the middle. So that corresponds to each other. And if we look at the actual implementation of the navigation layout, the source code, we can see that it has the same class name right there. And below it, there's a standard HTML nav element. That's also available in the payload. That's like at the end of what we can see in the raw output. And then also in the preprinted version. So now you can start getting a sense of how the payload works. It's basically just a more compact version of your raw JSX. And then there are some blue nodes there. I will get into them in a second. But first I want to show you one more thing. And to do that, I need to go back to this view. So all of the payloads are mapped to something that looks like a URL. But there's one that stands out. In the middle, right below the one with the tick, there's one that's different. If you can't read it, it says RSA action 0.mjs and then a hash and then an identifier which is on send in this case. So because it's different, of course, we need to look into that. Why is that different? What is that? So I click on it and I come here. And it looks pretty much exactly the same as for the home page that we just looked at. There's still this big green one for model 0.

8. Support for XServer Actions

Short description:

If you collapse the elements inside the div, a new thing called RSA data appears. It is used to implement support for XServer actions, allowing the return value and the updated page to be received when executing a server action.

So I'm going to keep going into model 0. It's still the same. But now if I collapse all of the elements inside the div, we get here. And now we can see there's actually one more. There's a new thing here. So let me zoom in. If you look at the preprinted version here, you see the key is still for routes and the div with all of the nested elements. But below it, you have something called RSA data, hello world, et cetera. So this is how I have chosen to implement support for XServer actions. When you execute the server action, you get the result of that action execution. The return value of your action or your function, you get that returned.

9. Exploring RcPayload and Contributing

Short description:

When executing a server action, you receive the updated value and the entire rendered page. React can then update the value without an additional server round trip. The RcPayload includes LazyNode for loading client components. By clicking on the server reference, you can navigate to that part of the payload. These tools have been useful for understanding React server components. Redwood is open source and welcomes contributors.

But also you get the whole page again that you're currently on. So if your server action updated a value that is part of some of your server components, you get that as part of the return value as well. And you don't get just the return value, but you also get the entire page rendered with this value already updated in the page.

So now we can just ask React to take the updated payload and do a virtual DOM diff to what it's currently rendering on the user's browser and just update the value that was updated by your action. This saves us from doing another round trip to the server just to get the updated value.

Okay. Now let's keep going again, expanding the div there. Now going more deeply into the nested objects, we see these blue nodes again that I promised I would get back to. We have two. That says LazyNode, and this is how React knows to lazily load one of your client components. So remember the RcPayload is all about the server components. And you need a way to tell React to load client components as well, and that's how that worked. There's a LazyNode thing in the payload. In the middle, we have a server reference. And these blue nodes are all clickable, so I can click on one of them. I click on the server reference, and it would take me to that part of the payload.

If you look at the preprint version here, you can see it's a long file name. And at the end of the file name, you see rcActions0, mgs, hash, and then the ID onSend. And now we actually come full circle, because that's exactly what I clicked on right here. So this is how you can navigate and explore your RcPayload inside Redwood Studio. And all of the tools that I've shown to you here today have been immensely useful internally on the team for us to get a better understanding on how React server components work. And they have been especially useful and especially educational for us who have been part of implementing this. That's mostly been me and another guy on the team named David Cyruson. Redwood is open source, and we're always looking for contributors. So if you also want to be a common Rc expert, I can really recommend that you help us flesh out the missing features here. And I will personally help you get a PR merch for Studio, if you're interested.

QnA

React Server Components and Redwood's Vision

Short description:

Redwood is a full stack framework that is ideal for small teams or single developers. While it may be challenging to adopt if you already have an existing backend, Redwood offers both a database and a frontend framework. Going forward, React components will be the default choice for data fetching and the backend. However, Redwood also aims to support current GraphQL users and plans to simplify the development experience for those starting out.

That's all I had to say. Thank you so much for listening. Thank you. We're going to jump into the audience questions.

First question is from Lazlo. Are these React server components tools available outside of Redwood JS Studio? Yes and no. So the library that I used that Alva wrote, that's available to anyone. It's actually available as a plugin that you can enable in Chrome. So you can inspect the payload for any page that uses server components. The rest is for Redwood Studio only. But who would use that outside of Redwood Studio? Exactly. And since Redwood, it's backed by Preston who was at GitHub, one of the founders, right? Yeah, he founded GitHub and sold it to Microsoft. And so it's been around for like four or five years now, but it's not gaining the traction that I would expect it to be with that backing. But what are some of the users that you know that you think, well, I can't imagine user x company x is using the product that I'm working on?

So what's the question again? Basically, advertise your users that you're proud of. So I think Redwood is definitely the best framework out there if you want to get started on a full application as a small team or even a single developer. I can see that it's difficult to adopt if you already have an existing backend because we are a proper full stack framework. We have a database, proper backend, currently a GraphQL. But also a frontend framework. It doesn't really make sense to just use the frontend part of Redwood. You need to kind of buy into at least the backend, but ideally that backend plus the frontend. And I noticed you now said we currently have GraphQL. And you also mentioned that while you were still speaking. Does that imply you're investigating something else or am I?

Yeah. So going forward, we want our React components to be the default for sure, for data fetching and for the backend. But personally, I also don't want to leave our current GraphQL users left behind. But the feedback that we've gotten is that GraphQL is too complicated, especially if you just want to quickly get started. So we're trying to focus more on, as I said, a single developer or a very, very small team or some just hackathon users or something that you work on on weekends and evenings. So we want to have something more simpler. And I think that with React components, we can definitely make something that is much, much more simple to get started with. Then we can offer GraphQL as something that you can enable later when you need it, if you need it.

Lowering Barriers and Implementing Server Actions

Short description:

To maintain power while lowering the barrier of entry, Redwood believes GraphQL is perfect for mobile client and app development. The biggest aha moment with React Server components was realizing the flexibility of the payload format. Server actions can include an entire object with separate keys for payload and return value. Implementing server actions posed a challenge due to the various ways they can be defined and the need to handle different function types. At least ten different ways exist to write server actions.

So you want to lower the barrier of entry, but not lose the power that you have. Exactly. So for example, if you need a mobile client, if you need an app, you probably need a proper API as well. And then we think, yeah, GraphQL is perfect for that.

Cool. Another question from Laslo. What was the biggest aha moment you learned about React Server components while implementing these tools? The payload format is actually very flexible. And this aha moment came when I needed to implement server actions. I didn't realize that I could just add another item to my ... Or actually, that I could send back an entire object and have one key for the payload and another key for the server return value or return value. I thought it could only be like the serialized components. But now, anything that can be serialized can be sent as the payload.

Yeah. It's quite powerful. Yes. Luckily. A question from Anonymous. Was it hard to figure out how to implement server actions? Yeah. So if you saw the talk earlier about Wacko, we definitely have the same challenge as he has. He showed five different ways that people can define server actions. But when you actually get into parsing the components to find them, there are at least twice as many. Because at least the way that we do it, or that I do it, is I parse the AST. And when you have a function, you can have either an error function or a normal old-school function. And they need to be handled. Because they're two different entities in the AST. So you need to handle both of them. So for everyone, there's always two different versions to write it. So yeah. At least ten, if you count different ways people can write it. Just ten.

Redwood's Vision and Productivity

Short description:

Redwood aspires to be the Laravel or Ruby on Rails of JavaScript. Its elevator pitch is quick project setup and productivity. Redwood has been showcased in Jason's YouTube videos, with team member Amy achieving great results. With Redwood, you can start a new project quickly and compete with other full stack frameworks in terms of productivity.

Yeah. There's multiple ways to roam, but that's a lot.

Next question is from Amir. Are you trying to be the Laravel of JavaScript? We are. Yes. Or Ruby on Rails, if you will. Cool. If there's any more questions, then keep them coming, please.

So if you have an elevator pitch, because we have one minute left, to use Redwood in someone's next project, what would it be? I think I've already mentioned it. But getting up and starting with a new project as quickly as possible. That's definitely where Redwood shines. I don't know if you all have watched any of Jason's YouTube videos where he had people come and build the same thing with different frameworks. We had one of the team members, Amy, was part of that show a little while ago. And yeah, I think she did very well on the show, thanks to using Redwood. We definitely do compete with Laravel and the other proper full stack frameworks in terms of productivity.

Very cool. All right. That's all we have. And that's all the time we have. So everyone, please give a warm round of applause for Toby. Thank you.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Simplifying Server Components
React Advanced 2023React Advanced 2023
27 min
Simplifying Server Components
Top Content
Watch video: Simplifying Server Components
React server components simplify server-side rendering and provide a mental model of components as pure functions. Using React as a library for server components allows for building a basic RSC server and connecting it to an SSR server. RSC responses are serialized virtual DOM that offload code from the client and handle interactivity. The client manifest maps serialized placeholders to real components on the client, enabling dynamic rendering. Server components combine the best of classic web development and progressive enhancement, offering the advantage of moving logic from the client to the server.
Exploring React Server Component Fundamentals
React Day Berlin 2023React Day Berlin 2023
21 min
Exploring React Server Component Fundamentals
Top Content
Watch video: Exploring React Server Component Fundamentals
This Talk introduces React Server Components (RSC) and explores their serialization process. It compares RSC to traditional server-side rendering (SSR) and explains how RSC handles promises and integrates client components. The Talk also discusses the RSC manifest and deserialization process. The speaker then introduces the Waku framework, which supports bundling, server, routing, and SSR. The future plans for Waku include integration with client state management libraries.
And Now You Understand React Server Components
React Summit 2024React Summit 2024
27 min
And Now You Understand React Server Components
Top Content
In this Talk, Kent C. Dodds introduces React Server Components (RSCs) and demonstrates how to build them from scratch. He explains the process of integrating RSCs with the UI, switching to RSC and streaming for improved performance, and the benefits of using RSCs with async components. Dodds also discusses enhancements with streaming and server context, client support and loaders, server component rendering and module resolution, handling UI updates and rendering, handling back buttons and caching, and concludes with further resources for diving deeper into the topic.
A Practical Guide for Migrating to Server Components
React Advanced 2023React Advanced 2023
28 min
A Practical Guide for Migrating to Server Components
Top Content
Watch video: A Practical Guide for Migrating to Server Components
React query version five is live and we'll be discussing the migration process to server components using Next.js and React Query. The process involves planning, preparing, and setting up server components, migrating pages, adding layouts, and moving components to the server. We'll also explore the benefits of server components such as reducing JavaScript shipping, enabling powerful caching, and leveraging the features of the app router. Additionally, we'll cover topics like handling authentication, rendering in server components, and the impact on server load and costs.
Server Components: The Epic Tale of Rendering UX
React Summit 2023React Summit 2023
26 min
Server Components: The Epic Tale of Rendering UX
Top Content
Watch video: Server Components: The Epic Tale of Rendering UX
This Talk introduces server components in React, which provide an intermediate format for rendering and offer advantages for both client-side and server-side rendering. Server components reduce bundle size on the client and improve search engine optimization. They abstract the rendering process, allowing for faster rendering and flexibility in choosing where to render components. While server components are still in the experimental stage, Next.js is a good starting point to try them out.
RSCs In Production: 1 Year Later
React Summit 2024React Summit 2024
24 min
RSCs In Production: 1 Year Later
This Talk explores the experience of shipping server components in production and highlights the benefits and challenges of using Server Components in Next.js apps. The Talk discusses the deployment of UploadThing and the use of AppRouter for safe production usage. It delves into the implementation of different layouts, data fetching, and code centralization for improved performance. The Talk also covers the use of server components for performance optimization and latency handling. Additionally, it explores the use of Edge and Lambda for partial pre-rendering and the challenges faced with webpack performance and hydration. Overall, the Talk emphasizes the benefits and challenges of working with Server Components in Next.js applications.

Workshops on related topic

Mastering React Server Components and Server Actions in React 19
React Summit US 2024React Summit US 2024
150 min
Mastering React Server Components and Server Actions in React 19
Featured Workshop
Maurice de Beijer
Maurice de Beijer
Calling all React developers! Join us for an immersive 4-hour workshop diving deep into React Server Components and Server Actions. Discover how these game-changing technologies are revolutionizing web development and learn how to harness their full potential to build lightning-fast, efficient applications.

Explore the world of React Server Components, seamlessly blending server-side rendering with client-side interactivity for unmatched performance and user experience. Dive into React Server Actions to see how they combine client-side interactivity with server-side logic, making it easier to develop interactive applications without traditional API constraints.

Get hands-on experience with practical exercises, real-world examples, and expert guidance on implementing these technologies into your projects. Learn essential topics such as the differences between Server and Client Components, optimizing data fetching, passing data effectively, and maximizing performance with new React hooks like useActionState, useFormStatus and useOptimistic.

Whether you're new to React or a seasoned pro, this workshop will equip you with the knowledge and tools to elevate your web development skills. Stay ahead of the curve and master the cutting-edge technology of React 19. Don't miss out - sign up now and unleash the full power of React!
Next.js 13: Data Fetching Strategies
React Day Berlin 2022React Day Berlin 2022
53 min
Next.js 13: Data Fetching Strategies
Top Content
Workshop
Alice De Mauro
Alice De Mauro
- Introduction- Prerequisites for the workshop- Fetching strategies: fundamentals- Fetching strategies – hands-on: fetch API, cache (static VS dynamic), revalidate, suspense (parallel data fetching)- Test your build and serve it on Vercel- Future: Server components VS Client components- Workshop easter egg (unrelated to the topic, calling out accessibility)- Wrapping up
The Gateway to Backend: A Frontend Developer's Guide to Full-Stack Development
React Summit US 2023React Summit US 2023
160 min
The Gateway to Backend: A Frontend Developer's Guide to Full-Stack Development
Top Content
WorkshopFree
Amy Dutton
Amy Dutton
This workshop will guide you through the product development life cycle of creating a real-world web application. You will learn about React Server Components, building a design system within Storybook, and using frontend development to approach becoming a full-stack developer. The workshop will cover increasing confidence in your application with unit tests and implementing authentication and authorization. You'll have the opportunity to work through product features and examine a real-world RedwoodJS project, gaining valuable experience in real-world product development. RedwoodJS makes it simple to approach full-stack development, and this workshop will give you the skills you need to create your own real-world web applications.
Advanced Application Deployment Patterns with React Server Components (feat. a DIY RSC Framework)
React Summit US 2023React Summit US 2023
104 min
Advanced Application Deployment Patterns with React Server Components (feat. a DIY RSC Framework)
Top Content
Workshop
 Greg Brimble
Greg Brimble
The developer ecosystem is always moving fast and this year has proved no exception. React Server Components can offer a significant improvement to developer experience and to application performance. But I think it's fair to say that this new server-first paradigm can be tricky to wrap your head around!In the first half of this workshop, we'll explore React Server Components from the ground-up: building our own mini meta-framework to help us understand how RSCs work. We'll discover exactly what is produced by an RSC build and we'll connect those pieces together to form a full application.Next, we'll deploy it! Cloudflare have also had a busy year too — Smart Placement, in particular, is a new technology that we've developed which fits the RSC model perfectly. We'll explore why that makes sense for our workshop app, and we'll actually deploy it onto the Cloudflare Developer Platform.Finally, we'll build out our app a little further, using D1 (our serverless SQL database) to really show off the React Server Component's power when combined with Smart Placement.You should come away from this workshop with a greater understanding of how React Server Components work (both behind-the-scenes and also how you as a developer can use them day-to-day), as well as insight into some of the new deployment patterns that are now possible after recent innovations in the platform space.
Building Reusable Server Components in NextJS
React Summit US 2023React Summit US 2023
88 min
Building Reusable Server Components in NextJS
Top Content
Workshop
Will Bishop
Mettin Parzinski
2 authors
React continues to evolve their beta capability, React Server Components, and they're continuing to further develop them in partnership with frameworks like NextJS.In this workshop, attendees will learn what React Server Components are, how to effectively build and use them in NextJS, and focus on one of the major advantages of React/NextJS: reusability through components.We will also cover related beta technologies enabled by the `app` directory, such as nested layouts and server actions (alpha/experimental capability).Join us for this hands-on, 120 minute workshop!Technologies:
React, JavaScript/Typescript, NextJS, Miro
React Server Components Unleashed: A Deep Dive into Next-Gen Web Development
React Day Berlin 2023React Day Berlin 2023
149 min
React Server Components Unleashed: A Deep Dive into Next-Gen Web Development
Workshop
Maurice de Beijer
Maurice de Beijer
Get ready to supercharge your web development skills with React Server Components! In this immersive, 3-hour workshop, we'll unlock the full potential of this revolutionary technology and explore how it's transforming the way developers build lightning-fast, efficient web applications.
Join us as we delve into the exciting world of React Server Components, which seamlessly blend server-side rendering with client-side interactivity for unparalleled performance and user experience. You'll gain hands-on experience through practical exercises, real-world examples, and expert guidance on how to harness the power of Server Components in your own projects.
Throughout the workshop, we'll cover essential topics, including:- Understanding the differences between Server and Client Components- Implementing Server Components to optimize data fetching and reduce JavaScript bundle size- Integrating Server and Client Components for a seamless user experience- Strategies for effectively passing data between components and managing state- Tips and best practices for maximizing the performance benefits of React Server Components