Headline: RSC is a serious win for bundle size and TTFB, but only if your team commits to the new mental model. Half-adoption is worse than not adopting at all.
What Actually Changed
RSC moves rendering of components that don't need interactivity to the server. The browser receives a serialized tree, not a JavaScript bundle. The result on a real e-commerce surface we migrated at Devya Solutions:
- −42% client JS on the product listing page
- −180ms TTFB after enabling streaming
- +0.08 INP regression on a poorly-split page (we'll come back to this)
The Three Component Types You Actually Use
- Server Components — fetch, render, never ship JS. Default for everything.
-
Client Components (
"use client") — for interactivity, hooks, browser APIs. - Shared Components — pure presentation, work in both. Sweet spot for design systems.
The pitfall: every "use client" directive is a bundle entry point. One careless chart-library import pulls 80KB into every page.
Data Fetching Patterns That Survived
async function ProductList({ category }) {
const products = await db.products.findMany({ where: { category } });
return products.map(p => <ProductCard product={p} />);
}
We deleted ~3,000 lines of React Query setup.
Server Actions for Mutations
'use server';
export async function addToCart(formData: FormData) {
const productId = formData.get('productId');
await db.cart.add({ productId });
revalidatePath('/cart');
}
What Still Hurts
- Error boundaries — server-thrown errors surface as opaque digests in production
-
Third-party clients — anything that touches
windowneeds a Client Component wrapper - Caching mental model — Next.js 15 made caching explicit, but the layers still confuse new hires
The INP Regression — And the Fix
Smaller JS doesn't automatically mean snappier interaction. Our regression: a deeply nested Client Component tree hydrated late. Fix: hoist the interactive island higher, pass server data as a prop.
Should You Adopt RSC?
Yes for new Next.js apps. For existing Pages Router apps, migrate route-by-route, not big-bang.
I write more production React patterns on eng-ahmed.com and ship them through Devya Solutions.
Top comments (0)