page.js exports, as its default export, the component rendered for the route. It is a Server Component unless the file starts with 'use client', so it may be async and may await data directly — no getServerSideProps, no data-fetching hook. Two props arrive, and both are promises in Next.js 16 10,514 : params with the dynamic segments of the route, and searchParams with the parsed query string.
export default function About() {
return <h1>About us</h1>
}A page is a leaf: anything shared with deeper routes belongs in a layout.js. A segment may hold either a page.js or a route.js, never both, because the two would claim the same URL.
In the demo application /about lives at app/(marketing)/about/page.js and is wrapped by two layouts; the HTML the server sends is the composition of all three:
<nav><a href="/">Home</a> | <a href="/photo/7">Photo 7</a></nav> <main><div class="marketing"><h1>About us</h1></div></main>