Measure browser Web Vitals and sanitized request timing #12

Open
opened 2026-11-01 20:11:32 +00:00 by viacheslavshuka · 0 comments

Browser measurements can explain loading and interaction delays that laboratory reports miss. Collection must avoid private data and external export by default.

Scope

Add lightweight Web Vitals and sanitized request/error timing. Select bounded sampling and ingestion details consistent with configurable telemetry. Defer full browser OpenTelemetry auto-instrumentation.

Acceptance criteria

  • The application records supported loading, responsiveness, and layout measurements with the deployed frontend identity.
  • Request/error measurements use sanitized operation names and timing. They omit bodies, credentials, raw query strings, private meeting links, and free-text user content.
  • No telemetry destination means no external export. A configured ingestion path does not require secret exporter credentials inside the frontend bundle.
  • Trace propagation, if used, goes only to owned destinations. Browser requests cannot forward application trace headers to arbitrary meeting or external links.
  • Sampling, batching, and pending data have explicit bounds. Offline operation, blocked ingestion, and an unavailable receiver do not interrupt navigation or participation actions.
  • The implementation measures its own transfer and execution cost. It does not add an unapproved numeric performance gate or claim universal field performance.
  • No complete monitoring stack or third-party telemetry account becomes a prerequisite for ordinary application use.

Validation

Capture emitted telemetry in a controlled browser run and inspect it for sensitive test values. Exercise a failed collector, disconnected network, and navigation between routes. Confirm an unconfigured application sends no external telemetry.

Dependencies

Browser measurements can explain loading and interaction delays that laboratory reports miss. Collection must avoid private data and external export by default. ## Scope Add lightweight Web Vitals and sanitized request/error timing. Select bounded sampling and ingestion details consistent with configurable telemetry. Defer full browser OpenTelemetry auto-instrumentation. ## Acceptance criteria - The application records supported loading, responsiveness, and layout measurements with the deployed frontend identity. - Request/error measurements use sanitized operation names and timing. They omit bodies, credentials, raw query strings, private meeting links, and free-text user content. - No telemetry destination means no external export. A configured ingestion path does not require secret exporter credentials inside the frontend bundle. - Trace propagation, if used, goes only to owned destinations. Browser requests cannot forward application trace headers to arbitrary meeting or external links. - Sampling, batching, and pending data have explicit bounds. Offline operation, blocked ingestion, and an unavailable receiver do not interrupt navigation or participation actions. - The implementation measures its own transfer and execution cost. It does not add an unapproved numeric performance gate or claim universal field performance. - No complete monitoring stack or third-party telemetry account becomes a prerequisite for ordinary application use. ## Validation Capture emitted telemetry in a controlled browser run and inspect it for sensitive test values. Exercise a failed collector, disconnected network, and navigation between routes. Confirm an unconfigured application sends no external telemetry. ## Dependencies - [#7: Create the React application with locked frontend tooling](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/7). Browser measurements need the built frontend. ## Related work - [#11: Instrument backend requests with private optional telemetry](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/11) - [#9: Enforce frontend correctness and report runtime performance](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/9)
Sign in to join this conversation.
No description provided.