12 min read
ā¢Question 29 of 47hardNext.js App Router Architecture Deep Dive
Understanding the internal architecture of App Router.
App Router Architecture
The App Router represents a fundamental shift in how Next.js handles routing, rendering, and data fetching.
React Server Components Foundation
code.txtTSX
// Server Component (default)
async function ServerComponent() {
// Runs only on server - can use:
// - Direct database access
// - File system operations
// - Secrets/environment variables
const data = await db.query('SELECT * FROM users');
return <UserList users={data} />;
}
// Client Component
'use client';
function ClientComponent() {
const [state, setState] = useState();
// Runs on client - can use:
// - Hooks (useState, useEffect)
// - Browser APIs
// - Event handlers
}Component Tree Architecture
code.txtTSX
// Layout hierarchy
app/
āāā layout.tsx // Root layout (wraps all)
āāā page.tsx // Home page
āāā dashboard/
ā āāā layout.tsx // Dashboard layout (nested)
ā āāā page.tsx // /dashboard
ā āāā settings/
ā āāā page.tsx // /dashboard/settingsRequest Lifecycle
- URL Parsing: Match route segments
- Layout Resolution: Build layout hierarchy
- Data Fetching: Parallel fetch at segment level
- Rendering: Server ā Client hydration
- Streaming: Progressive UI delivery
Advanced Patterns
code.txtTSX
// Nested layouts with parallel data fetching
export default async function DashboardLayout({
children,
}: {
children: React.ReactNode;
}) {
// This fetch runs in parallel with page fetches
const user = await getUser();
return (
<div>
<Sidebar user={user} />
<main>{children}</main>
</div>
);
}