Quiz: Client or Server?
Put Your Knowledge to the Test
You've learned the theory. Now let's see if it sticks.
These scenarios come from real production decisions. Each one tests a different aspect of the server rendering mental model — RSC boundaries, hydration behavior, streaming mechanics, and rendering strategy selection. Some are straightforward. Some are traps.
No skimming allowed. Think before you answer.
Round 1: Server or Client Component?
Round 2: Spot the Hydration Mismatch
Round 3: Streaming Behavior
Round 4: RSC Serialization Boundaries
Round 5: Rendering Strategy Selection
Round 6: Advanced Scenarios
How Did You Do?
If you got 12+ correct, you have a solid grasp of server rendering concepts. If you got 10-11, review the topics where you stumbled — the explanations point you to the right mental model. Below 10, re-read the module from the beginning. These concepts build on each other, and gaps in the foundation show up in production.
The real test is production. Next time you create a component, ask yourself: does this need 'use client'? Can this data be fetched on the server? What's the right Suspense boundary here? Make it a habit, and the decisions become automatic.
- 1Default to Server Components. Only add 'use client' when you need hooks, event handlers, or browser APIs.
- 2Server Components can safely use Date, Math.random(), and other non-deterministic APIs — they don't hydrate.
- 3The donut pattern: Client Component shell (state/events) with Server Component children (data/rendering).
- 4Hydration mismatches only occur in Client Components. Server Components run once on the server — no comparison.
- 5Streaming Suspense boundaries are independent — a slow boundary never blocks a fast sibling.
- 6Choose rendering strategy per route: SSG for static, ISR for semi-static, SSR for dynamic, PPR for mixed, CSR for interactive-only.