v151 · performance · http header
Header anatomy
Compose a real Performance-Observer header from the explainer's four directives, send it from this server, and read the actual negotiated response headers back — with the entry-types list seeded from what this browser's performance timeline really supports.
Pre-incubation proposal: the header this server sends is real and syntactically valid, but no shipping Chrome acts on it yet. There is no
chrome://flags entry, Blink runtime feature, or origin trial to enable — when one exists, this page's round-trip becomes a live end-to-end test.Build the header
Header preview (built locally):
No request sent yet. The response's real
Performance-Observer and Reporting-Endpoints headers will appear here.The proposal activates at navigation time, not on a subresource fetch — so you can also open a real document navigation that carries this exact header pair on its response:
Open a navigation response carrying this header ↗code path
// server response (real, sent by this site's Deno server)
Performance-Observer: report-to="telemetry",
entry-types=("navigation" "mark" "visibility-state"),
include-user-timing=("hero-image-loaded" "next-link-clicked"),
capture-early-failures=?1
Reporting-Endpoints: telemetry="<origin>/v151/declarative-performance-observer/report"
// client: read the negotiated headers off the same-origin response
const res = await fetch('../header-echo?entry=navigation,mark&mark=hero-image-loaded&early=1');
res.headers.get('performance-observer');