generateMetadata

Each route can export metadata (static) or generateMetadata() (dynamic). The result is injected into <head> as <title>, <meta>, and OpenGraph tags.

Tip
generateMetadata runs on the server before the page renders — you can make network calls or read a database inside it. Prefer the static metadata export when the content is known ahead of time: bext can cache those tags without triggering a dynamic render.

Inspect the head

Open devtools → Elements → <head>. You should see <title>Hello world — bext demos</title> and the matching meta description.

Try ?name=alice or ?name=bob to watch the title regenerate.

src/app/examples/metadata/page.tsxTSX
// Static form — known at build time
export const metadata = {
  title: "About bext",
  description: "Static-mode metadata sample",
};

// Dynamic form — receives the same args as the loader
export async function generateMetadata({ searchParams }) {
  const name = searchParams?.name ?? "world";
  return {
    title: `Hello ${name} — bext demos`,
    description: `Personalized metadata for ${name}`,
    openGraph: { title: `Hello ${name}` },
  };
}