WEB / DOCUMENT HEAD

Metadata follows the active route

Layouts define shared SEO defaults. Pages override only the names they need. Dowe emits the effective head during SSR and keeps it synchronized during browser navigation.

Start with the layout for values shared by many routes. Add meta to a page only when that route needs a different value.
Layer
Owns
How to use it

No data

There are no records to display

1 / AUTHOR THE DEFAULTS

Declare metadata in the layout

meta is a direct child of layout or page. It is not a visual component and does not count toward the layout root. Both props are required quoted strings.

views/layouts/site-layout.dowe

dowe
layout SiteLayout
  meta name:"title" content:"Acme"
  meta name:"description" content:"Tools for focused teams."
  meta name:"og:image" content:"https://acme.dev/og.png"
  meta name:"twitter:card" content:"summary_large_image"
  Scaffold
    main
      children

2 / OVERRIDE ONE ROUTE

Replace only what this page needs

The page inherits every layout value it does not declare. This keeps shared defaults in one place while allowing a route to provide its own title, description, or canonical URL.

views/pages/pricing-page.dowe

dowe
page PricingPage
  meta name:"title" content:"Pricing — Acme"
  meta name:"description" content:"Plans for every team."
  meta name:"canonical" content:"https://acme.dev/pricing"
  meta name:"og:title" content:"Pricing — Acme"
  Section
    Title
      "Simple pricing"

RESOLUTION

Nearest declaration wins by name

Dowe starts with the active layout and applies the page last. Ordering is deterministic, and only a declaration with the same name replaces an inherited value.

Order
Source
Result

No data

There are no records to display

The first HTTP response already contains the effective values. Internal links, back and forward navigation, layout changes, and development hot updates replace stale Dowe-authored metadata without reloading the page.

SUPPORTED NAMES

A bounded SEO contract

Dowe rejects unknown, duplicated, empty, dynamic, nested, or child-bearing metadata before generation.

Group
Supported names and behavior

No data

There are no records to display

TARGET SUPPORT

Browser documents only

Web emits metadata in SSR HTML and updates it in the SPA router. Desktop accepts the syntax but emits no document metadata. Android and iOS accept the syntax but generate no native metadata.

Use platform-specific app configuration for future window, activity, view, or store-listing metadata. The meta declaration currently owns only the web document head.