A page can be static and streamed, server-rendered and partially hydrated, or built from Server Components while still producing cached HTML. Start with these four questions.
The server sends a small shell; JavaScript fetches data and constructs the meaningful DOM. Rich post-load transitions are natural, but initial content competes with download, parse, execution, and data round trips.
SSR produces HTML. Hydration attaches a client runtime to existing HTML. A server-rendered page can remain progressively enhanced with little or no hydration.
SSR can improve when content becomes visible without improving when custom interactions become available. A user may see a convincing button before its component code is downloaded and managed by the client runtime.
Traditional whole-root hydration makes unrelated code part of one startup dependency. In React’s streaming architecture, Suspense boundaries can become hydration units: ready regions progress independently, and interaction raises a boundary’s priority.
This simulation uses a 60-second fresh lifetime plus an allowed stale window. Notice that regeneration is usually triggered by traffic, and that the request crossing the boundary may still receive the old representation.
Run in the framework’s server environment at build time or request time. They may await data and use server-only dependencies, but cannot hold browser state or event handlers.
'use client' marks a module entry point and its transitive dependencies for client evaluation. It is not a label that affects only the component function in that file.
Good boundaries create useful intermediate states. They keep stable layout visible, reserve final geometry, and isolate optional latency without fragmenting the page into loading noise.
An island can have HTML now while its code waits. Choose the trigger from interaction urgency and failure cost, not from a generic preference for laziness.
After HTML crosses from server to browser, an interactive runtime needs listener locations, application state, and a reactive/component graph. Architectures differ in when and how they recover them.
A resumable system emits references that let a small loader locate an event handler chunk, restores supported state values, and retains dependency metadata so the browser need not eagerly execute the rendered tree merely to rediscover it.
Design product pages and checkout entry for a catalog with millions of URLs. Product copy changes weekly; price and inventory change by market within seconds; recommendations may be slow; the cart is private; image galleries and add-to-cart are interactive. Search visibility, mobile performance, resilience, and operational cost matter.
It simplifies freshness but couples stable content to origin capacity and loses public cache reuse. Reserve request work for volatile or private regions.
Predict the approximate runtime and output order. Then rewrite main so the calls overlap while results remain in input order. Finally, explain how your design should behave if fetch(2) raises.
Context lets a component read a value from a distant parent without threading props through every intermediate component. Context itself does not define reducers, caching, persistence, or business rules.
A form value is often not authoritative server data yet. Treat it as a client draft, validate it locally, submit a mutation, and decide how conflicts or server validation errors are represented.
An optimistic update changes the UI before the server confirms success. It can make interactions feel fast, but it requires a rollback or reconciliation plan.
How easy was it to remember?
Nothing is due right now. Open a lesson to practice something new.