I Measured React Server Components’ Performance So You Don’t Have To

Bookmark
Rate this content

We keep hearing that React Server Components (RSC) are the future. And that they're supposed to be the best for performance. And just the best in general. But how valid is that claim? Let's measure and find out!

To do this, I went slightly crazy and implemented one app in three different ways: using Client-Side Rendering (CSR), Server-Side Rendering (SSR), and React Server Components (RSC). Then, measured the difference. And now ready to show it to you.

In this talk, we'll take a look at what initial load performance is, how to measure it, and what's the difference between rendering patterns: from the implementation perspective, differences in performance graphs, and in terms of actual performance numbers. 

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

FAQ

React server components are a feature in React that allow more work to be done on the server side, reducing the amount of JavaScript sent to the browser and potentially improving performance by fetching data earlier.

React server components improve performance by pushing more work to the server, shipping less JavaScript to the client, fetching data earlier, and enabling streaming by sending useful HTML early and keeping the connection open to stream in the rest of the data.

SSR involves rendering the page to HTML on the server and sending it to the client, while server components go further by reducing JavaScript bundle sizes and allowing streaming of asynchronous data fetching with suspense boundaries.

In mixed apps with both server and client-side components, server components may not significantly reduce bundle sizes. Significant reductions are seen in pages that are mostly static with little interactivity.

Suspense boundaries in React server components are used to determine streaming chunks. They allow React to send parts of the app as soon as they are ready, improving performance by not waiting for all data to be fetched before rendering.

Performance improvements can be measured using tools like Chrome DevTools to record and analyze metrics such as Largest Contentful Paint (LCP) and other load times, particularly under simulated slower network conditions.

React server components may not significantly impact performance in mixed apps with both server and client components. The benefits are most apparent in pages that can be fully rendered on the server without client-side interactivity.

Using server components can improve initial load times by reducing JavaScript bundle sizes and enabling streaming. This is beneficial for SEO and user experience, especially in pages with static content.

The main benefit of using SSR in React is the improved initial load performance by rendering HTML on the server, which allows the page to become visible without waiting for JavaScript execution.

In Next.js, server components can be implemented by removing 'use client' from the root of pages, using it only on components requiring interactivity, and ensuring components are wrapped in suspense for streaming data fetching.

Nadia Makarevich
Nadia Makarevich
22 min
01 Dec, 2025

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Nadia introduces React server components and performance, highlighting the benefits of server components in improving performance and the need for a clear understanding of their impact on rendering and data fetching in React applications. Exploring Server-Side Rendering Impact on Performance: Analysis of transitioning from client-side to server-side rendering, including implications on performance and data fetching. Transforming Empty Screen to Performance Improvement: Detailed process of browser work, React rendering, and data fetching impact. Making the Shift to Server-Side Rendering: Impact on interactivity and data fetching optimization. Understanding the Benefits of AppRouter Version in SSR with Reduced JavaScript Payload and Introduction of Server Components. Investigating Smarter Server-Side Rendering with Server Components and Streaming in Next.js. Refactoring for Server Components: Async Data Fetching, Server Component Identification, and Utilizing Suspense for React Streaming Chunks. Enhancing Performance with Server Components: Balancing Rendering Approaches, Importance of Server-Side Data Fetching, and Leveraging Suspense for Improved Streaming.

1. Exploring React Server Components

Short description:

Nadia introduces React server components and performance, highlighting the benefits of server components in improving performance and the need for a clear understanding of their impact on rendering and data fetching in React applications.

Hi, everyone. I'm Nadia, and today I want to talk about React server components and performance. A little bit about me. I've been a developer for a very long time now, and for the last few years, I've been focusing mostly on front-end performance and React. I love investigating how things work in this area so much that by now I ended up with a whole bunch of deep dives and investigations, and even two books on the topic of, you guessed it, React and performance.

And if you paid attention to the conversations about React in the last few years, you probably heard the words server components mentioned in the context of improving performance. Their main promise is simple. Push more work to the server, ship less JavaScript, fetch data earlier, and your initial load gets faster. But how exactly does this happen? And how much of a performance improvement can I expect? This is what I want to find out today.

Here's the kicker, though. I can't just simply turn on and off simple server components to measure what I want. To understand what exactly server components change, we need a clean mental model of how React normally renders and fetches data. Both on the client and on the server, by the way. Because here's the fun part. We already have the concept of server rendering. And have it for years. So what exactly is the difference?

2. Analyzing Server-Side Rendering Effects

Short description:

Exploring Server-Side Rendering Impact on Performance: Analysis of transitioning from client-side to server-side rendering, including implications on performance and data fetching. Evaluation of the impact of introducing server components to an existing SSR-based app, especially in the context of moving to Next.js App Router.

I built a single page app, your normal SPA, with multiple client-side routes and client-side data fetching as the baseline. I'm going to move this up to basic server-side rendering and explain what changes in the performance profile and why. Then to a more complicated SSR with data fetching on the server and again look into what changes and why. And finally, convert the app into the server components and show you the result. This way we will see what you can gain and what you pay when you're adding a server-side rendering to a previously client-rendered app. What can I expect if I already have SSR and my framework suddenly adds server component support? And as a bonus, what can I expect if I have an SSR-based app already and I decide to move to Next.js App Router, which is the most popular framework at the moment.

So here's my guinea pig app. I have a few pages. It's very interactive already. And for the purpose of today's measurements, I'll be focusing exclusively on the inbox page. It's quite functional already. As you can see, it even has a rudimentary editor that appears when I click on a message and it actually kind of works. Items in the sidebar are fetched from a quite fast endpoint. It takes around 100 milliseconds to execute. A list of messages is fetched from a quite slow endpoint. It takes around like a second to execute. I'm going to use Chrome DevTools today to measure the initial load. If you've never done it, open the performance profile in the DevTools, click on reload, wait a little bit and then click finish. It will give you this recorded picture. I'm going to be looking at what is happening in the network panel mostly. And the metrics I am interested in today are when the page becomes visible, which happens to correspond to the metric in Chrome called LCP, Largest Contentful Page, Paint. When the sidebar items become visible, it's somewhere here. And then when the messages themselves become visible, somewhere here. And finally, I'm going to use those settings to imitate slower devices and slower internet and disable cache network to imitate the very first time the user opens the page when there is no cache on the browser side yet.

Okay, so that's enough of a setup. Let's finally investigate and measure stuff. First, let's start with the baseline, client-side rendering. What exactly is it? From an implementation point of view, it means that when your browser requests this inbox page, the server responds with HTML that looks like this. The horror. Completely empty screen.

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.
A Guide to React Rendering Behavior
React Advanced 2022React Advanced 2022
25 min
A Guide to React Rendering Behavior
Top Content
This transcription provides a brief guide to React rendering behavior. It explains the process of rendering, comparing new and old elements, and the importance of pure rendering without side effects. It also covers topics such as batching and double rendering, optimizing rendering and using context and Redux in React. Overall, it offers valuable insights for developers looking to understand and optimize React rendering.
Speeding Up Your React App With Less JavaScript
React Summit 2023React Summit 2023
32 min
Speeding Up Your React App With Less JavaScript
Top Content
Watch video: Speeding Up Your React App With Less JavaScript
Mishko, the creator of Angular and AngularJS, discusses the challenges of website performance and JavaScript hydration. He explains the differences between client-side and server-side rendering and introduces Quik as a solution for efficient component hydration. Mishko demonstrates examples of state management and intercommunication using Quik. He highlights the performance benefits of using Quik with React and emphasizes the importance of reducing JavaScript size for better performance. Finally, he mentions the use of QUIC in both MPA and SPA applications for improved startup performance.
React Concurrency, Explained
React Summit 2023React Summit 2023
23 min
React Concurrency, Explained
Top Content
Watch video: React Concurrency, Explained
React 18's concurrent rendering, specifically the useTransition hook, optimizes app performance by allowing non-urgent updates to be processed without freezing the UI. However, there are drawbacks such as longer processing time for non-urgent updates and increased CPU usage. The useTransition hook works similarly to throttling or bouncing, making it useful for addressing performance issues caused by multiple small components. Libraries like React Query may require the use of alternative APIs to handle urgent and non-urgent updates effectively.
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.
How React Compiler Performs on Real Code
React Advanced 2024React Advanced 2024
31 min
How React Compiler Performs on Real Code
Top Content
I'm Nadia, a developer experienced in performance, re-renders, and React. The React team released the React compiler, which eliminates the need for memoization. The compiler optimizes code by automatically memoizing components, props, and hook dependencies. It shows promise in managing changing references and improving performance. Real app testing and synthetic examples have been used to evaluate its effectiveness. The impact on initial load performance is minimal, but further investigation is needed for interactions performance. The React query library simplifies data fetching and caching. The compiler has limitations and may not catch every re-render, especially with external libraries. Enabling the compiler can improve performance but manual memorization is still necessary for optimal results. There are risks of overreliance and messy code, but the compiler can be used file by file or folder by folder with thorough testing. Practice makes incredible cats. Thank you, Nadia!

Workshops on related topic

React Performance Debugging Masterclass
React Summit 2023React Summit 2023
170 min
React Performance Debugging Masterclass
Top Content
Featured Workshop
Ivan Akulov
Ivan Akulov
Ivan’s first attempts at performance debugging were chaotic. He would see a slow interaction, try a random optimization, see that it didn't help, and keep trying other optimizations until he found the right one (or gave up).
Back then, Ivan didn’t know how to use performance devtools well. He would do a recording in Chrome DevTools or React Profiler, poke around it, try clicking random things, and then close it in frustration a few minutes later. Now, Ivan knows exactly where and what to look for. And in this workshop, Ivan will teach you that too.
Here’s how this is going to work. We’ll take a slow app → debug it (using tools like Chrome DevTools, React Profiler, and why-did-you-render) → pinpoint the bottleneck → and then repeat, several times more. We won’t talk about the solutions (in 90% of the cases, it’s just the ol’ regular useMemo() or memo()). But we’ll talk about everything that comes before – and learn how to analyze any React performance problem, step by step.
(Note: This workshop is best suited for engineers who are already familiar with how useMemo() and memo() work – but want to get better at using the performance tools around React. Also, we’ll be covering interaction performance, not load speed, so you won’t hear a word about Lighthouse 🤐)
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