A Server Component may be async, so the data layer in the App Router is the language itself: await a fetch, await a Mongoose 243,355 query, return JSX. There is no getServerSideProps, no useEffect that runs after paint, and no loading flag threaded through props. What is left to decide is when the work runs: Next.js 16 10,514 renders dynamically by default, and caching is opt-in through the Cache Components of Caching and Revalidation.
Every listing, timing and log below came from a Next.js 16.3.5 project on Node.js 25.8.0 2,131 , fetching from a local stand-in of the Bookshelf API of The Bookshelf API. Each of its endpoints sleeps 300 ms before answering, which makes the cost of a badly ordered page visible in milliseconds.