Reference
Metadata API
Metadata controls <head> output and selected response headers for pages and metadata routes. Prefer structured metadata fields before falling back to arbitrary head descriptors.
When to use this page
Use this page when adding document titles, descriptions, canonical links, Open Graph previews, icons, robots policy, CSP, or security headers.
Static metadata
import type { RouteMetadata } from "@reckona/mreact-router";
export const metadata: RouteMetadata = {
title: "Pricing",
description: "Plans for Mreact applications.",
alternates: {
canonical: "https://example.com/pricing",
},
openGraph: {
title: "Pricing",
image: "https://example.com/og/pricing.png",
},
};Dynamic metadata
generateMetadata() receives params, request, and loader data.
import type { GenerateMetadataContext, RouteMetadata } from "@reckona/mreact-router";
export function generateMetadata(
context: GenerateMetadataContext<{ title: string }, { id: string }>,
): RouteMetadata {
return {
title: context.data.title,
csp: {
directives: {
"default-src": ["'self'"],
"script-src": ["'self'"],
},
},
security: {
contentTypeOptions: "nosniff",
frameOptions: "DENY",
referrerPolicy: "strict-origin-when-cross-origin",
},
};
}Head descriptors
Use head only when the structured fields do not cover the tag you need. RouteHeadDescriptor supports base, link, meta, script, and style.
export const metadata = {
head: [
{
tag: "link",
attrs: {
rel: "preconnect",
href: "https://www.googletagmanager.com",
},
},
],
};Related pages
API reference: RouteMetadata, GenerateMetadataContext, RouteHeadDescriptor, RouteSecurityHeaders, and RouteStrictTransportSecurity.