You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -175,3 +173,25 @@ Fill this in after deploy to `main` and re-run Lighthouse on the same production
175
173
- Clear removal of markdown parsing and syntax highlighting from the client bundle
176
174
- Not a universal bundle win across all landing pages yet
177
175
- Best pages to watch post-deploy: blog and docs
176
+
177
+
## Post-Deploy Read
178
+
179
+
- Blog got the clearest real-world benefit.
180
+
- Lighthouse score improved from `52` to `74`
181
+
- TBT dropped from `1,200ms` to `260ms`
182
+
- transfer size dropped from `1,101 KiB` to `785 KiB`
183
+
- Docs improved, but less dramatically.
184
+
- Lighthouse score improved from `78` to `81`
185
+
- TBT dropped from `280ms` to `200ms`
186
+
- transfer size dropped from `917 KiB` to `777 KiB`
187
+
- Query landing did not show a Lighthouse win on this run.
188
+
- Score went from `80` to `77`
189
+
- LCP worsened slightly from `3.4s` to `3.8s`
190
+
- TBT improved slightly from `300ms` to `250ms`
191
+
192
+
Interpretation:
193
+
194
+
- The bundle-side story predicted this fairly well.
195
+
- The strongest wins landed on markdown-heavy pages where we removed the client markdown/highlighting pipeline.
196
+
- The landing-page story remains mixed because those pages were not dominated by markdown and some of the server-rendered example-shell work traded complexity reduction for slightly more initial shell work.
197
+
- If we want broader Lighthouse wins on library landings, the next work is probably not more RSC conversion. It is targeted landing-page performance work.
Copy file name to clipboardExpand all lines: src/blog/react-server-components.md
+34Lines changed: 34 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -449,6 +449,40 @@ You choose patterns **per-route, per-component, per-use-case**. The architecture
449
449
450
450
---
451
451
452
+
## What We Saw On TanStack.com
453
+
454
+
We did not want to make the case with vibes, so we migrated the content-heavy parts of tanstack.com and measured it.
455
+
456
+
The result was exactly what we hoped for, and also more limited than the hype would suggest.
457
+
458
+
The best pages got meaningfully smaller:
459
+
460
+
-**Blog post pages** dropped about **153 KB gzipped** from the client JS graph.
461
+
-**Docs pages** dropped about **153 KB gzipped**.
462
+
-**Docs example pages** dropped about **40 KB gzipped**.
463
+
464
+
And the real-world numbers moved with them:
465
+
466
+
-**`/blog/react-server-components`** went from **52 -> 74** in Lighthouse.
467
+
- Total Blocking Time dropped from **1,200ms -> 260ms**.
468
+
- Transfer size dropped from **1,101 KiB -> 785 KiB**.
469
+
-**`/router/latest/docs/overview`** went from **78 -> 81**.
470
+
- Total Blocking Time dropped from **280ms -> 200ms**.
471
+
- Transfer size dropped from **917 KiB -> 777 KiB**.
472
+
473
+
That is the point. **Heavy client work stopped shipping to the client.** Markdown parsing went away. Syntax highlighting went away. The browser got less JavaScript and did less work. As a side effect, we also got to delete the old client markdown and highlighting path instead of carrying two versions of the same rendering logic around.
474
+
475
+
But RSCs are not a universal coupon code for performance. Some landing pages were basically flat, and a few were slightly worse. Pages that are already dominated by interactive UI shell do not automatically get faster just because you used a server component somewhere in the tree.
476
+
477
+
That is the tradeoff:
478
+
479
+
-**RSCs are great when the page is content-heavy, dependency-heavy, or both.** Docs, blogs, markdown pipelines, syntax highlighting, slow-changing content, SEO-heavy pages. That is the sweet spot.
480
+
-**RSCs are less obviously useful when the page is already mostly client state and interaction.** Dashboards, builders, long-lived app sessions, and some landing pages can be flat or mixed unless you are removing real client-side work.
481
+
482
+
That is why we think they matter. Not because every route should become a server component. Because when you use them where they fit, the payoff is measurable and not subtle.
483
+
484
+
---
485
+
452
486
## Current Status: Experimental
453
487
454
488
RSC support is experimental in TanStack Start RC and will remain experimental into early v1.
0 commit comments