01 · Section
Server Components are the default — finally
After a year of running the App Router in production across SaaS dashboards, e-commerce storefronts and marketing sites, the verdict is clear: Server Components are the right default. Data-fetching co-located with the component, zero client JavaScript for static UI, and dramatically smaller bundle sizes.
The mental model shift is real, though. Teams used to "everything is a client component" need a few weeks to internalise the boundary. Once they do, productivity climbs — most pages need less code than the Pages Router equivalent.
02 · Section
Server Actions: great for forms, dangerous as an API
Server Actions removed the boilerplate of writing route handlers for every form submission. For 80% of internal CRUD UIs, they are the cleanest pattern we have used.
The trap is using them as a general-purpose API. They are HTTP under the hood, but they hide that fact — making auth, rate-limiting and observability easy to forget. For anything called from a third-party client or a mobile app, write a real route handler.
03 · Section
Partial Prerendering is the killer feature
PPR ships a static shell instantly and streams the dynamic parts in. A product page renders the header, hero and SEO content in under 200ms, while pricing and inventory stream in 400ms later. Users perceive it as instant.
On three e-commerce sites we measured LCP improvements of 35–60% compared to fully dynamic SSR — without losing personalisation.
Key takeaways
- Default to Server Components; reach for "use client" only when you need interactivity or browser APIs.
- Use Server Actions for internal forms, not as a public API surface.
- Adopt Partial Prerendering on any page where time-to-first-paint matters.
- Budget time to retrain the team — the App Router mental model is a real shift.
Tags
Written by
Aamir Khan
8 min read · Posted in Web Development