Why we build every site on the App Router
Server Components changed how we ship marketing sites. Here's our default playbook.
mrkd teamApril 10, 2026
The TL;DR
We ship every new marketing site on Next.js with the App Router and Server Components by default. Not because it's new — because it's faster, simpler, and produces sites that hold up after the launch.
Server-first is the right default
In a typical marketing site, 95% of the components are static. They render from data, they don't react to user input, and they don't need JavaScript on the client to be useful. Server Components turn that intuition into the framework default.
The result: smaller bundles, faster first paint, and zero client-side hydration cost for the bulk of the page.
When we reach for 'use client'
Three triggers:
- State or effects — accordions, dialogs, form fields. The Sheet menu in your header is a good example
- Browser APIs — IntersectionObserver, ResizeObserver, the scroll position
- Interactive primitives — anything that wraps a Radix or Base UI primitive needs to be a client boundary
Everything else stays on the server. We extract use client to the smallest leaf component possible — never a whole page.
Data fetching gets simpler
Server Components let us call our data layer like a function:
export default async function Page() {
const posts = await getAllBlogPosts();
return <PostList posts={posts} />;
}
No loaders. No getServerSideProps. No client-side fetch + loading states for content the user is going to see immediately. Whatever your data source — CMS, MDX files, database — await is enough.
What we'd say if you're starting today
- Start with the App Router. Pages Router is fine, but you'll get less benefit from new Next.js features over time
- Server Components by default. Make
'use client'the exception, not the rule - Push interactivity to leaves. A whole page being a client component is almost always a smell
- Measure bundle on every PR. Set a budget; treat regressions as bugs
What's next
Cache Components (the stabilized successor to PPR) is shipping interest into our defaults. Once we have a couple of production deploys under our belt, we'll write that up.
Let's build something
Need a partner like us?
Tell us about your project. We respond within one business day.