You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Observability Kit 5 is an agent-less rebuild of Vaadin's Observability Kit on top of Micrometer (metrics) and Micrometer Observation/Tracing, replacing the OpenTelemetry Java-agent architecture of 4.x. It ships as a plain library — a Spring Boot version and a non-Spring version — so a Vaadin application becomes observable by adding a dependency, with no -javaagent and no separate collector required to get started.
Motivation
Background
Observability Kit 4.x is built around an OpenTelemetry Java agent (-javaagent:…) plus an OTel-JS browser bundle that round-trips frontend spans through a Vaadin request handler back into the agent. The agent is load-bearing: the starters emit nothing without it. This works, but the agent is the single biggest source of friction in adoption and deployment.
Problem
For developers: 4.x's -javaagent is hard to deploy on Kubernetes, managed runtimes, and GraalVM native image — adoption drops at the deployment step, exactly where the kit should start paying off.
For Spring Boot teams: 4.x integration is shallow — no Micrometer Observation, no Actuator surface, no AOT/native story — so the kit doesn't behave like a first-class Spring Boot citizen.
For evaluators: the kit requires a lot of setup of various tools, plus running the application with the right parameters, just to see what it is about. It should be doable in a few minutes.
For anyone diagnosing a live application: locating a problem takes more Vaadin-specific metrics and the ability to trace the full request chain — from an event in the browser to the server and back. It also takes visibility into memory consumption, so the source of large memory usage can be pinpointed.
Solution
A library-only, Micrometer-native kit with a Spring (Boot) version and a non-Spring version. Alongside it, a publicly deployed reference setup — a (fake) production application wired to the kit, a live dashboard over its telemetry, and an AI workflow that watches that telemetry and files issues automatically — demonstrates the three core scenarios the kit is meant to solve:
1. Pinpoint the source of client and/or server slowness when opening a view or performing another UI operation. Typical problems:
a. Network delays
b. Dropped packets needing re-sending
c. Too many components in the view, or components involving slow JS operations
d. Server-side slowness from calling external services, fetching the full database, etc.
e. Vaadin bugs causing slowness in request handling
2. Pinpoint the source of exceptions, client or server side — including which UI event or interaction triggered them, not just a server-side stack trace. Typical problems:
a. Empty data not handled properly on the server → NPE
b. Other server-side exceptions that end up in the Vaadin error handler
c. Client-side error caused by a bug in a component
d. Client-side error caused by a bug in Vaadin
3. Pinpoint the source of excessive memory usage on the server. Typical problems:
a. Not lazy-loading data for a grid
b. Accidentally fetching the full database and storing a reference in a field
c. Memory leaks — keeping old views or other objects in memory after they are no longer needed
Requirements
A Vaadin application becomes observable by adding a single dependency — no JVM agent, no -javaagent flag.
Out-of-the-box Vaadin-aware metrics: active sessions and UIs, navigation/route timing, request and error counts and timings, session-lock contention, and client/RPC interaction timing.
Distributed tracing of the request chain, including across UI.access(...) asynchronous thread boundaries, so a single operation can be followed end to end on the server.
Exceptions and interactions are attributed to the UI event that triggered them — which component and which event (a button click, a value change, a navigation) — so a failure can be traced back to what the user did, not just a server-side stack trace.
Collection of client-side (browser) timings, delivered to the server without developer-written JavaScript and rate-limited per session.
First-class Spring Boot integration: auto-configuration and properties under vaadin.observability.*, instrumented by adding one dependency.
Support for plain Spring applications (opt-in configuration) and standalone servlet deployments.
A documented public API for custom instrumentation, available at each integration layer (annotation-based, fluent helpers, and raw beans).
Works on GraalVM native image / Spring AOT, verified end to end.
Runtime license check
Documentation, including a 4.x → 5.x migration guide that replaces the -javaagent setup and OTel spans with the Micrometer-based approach.
Per-UI state-size / component-tree-size metric for capacity planning.
A demonstrated AI workflow that continuously tracks the live observability data from the reference application, detects issues in real time, formulates them into written problem reports, and files them as GitHub issues. (The reference application lives in vaadin/use-cases/observability, and issues are filed against the vaadin/use-cases repository for now.)
Tested reference dashboards: Prometheus + Grafana, plus Datadog / New Relic / Dynatrace.
Nice-to-haves
A Vaadin-owned frontend client (@vaadin/observability-kit) capturing browser long tasks and optional web-vitals, replacing the OTel-JS bundle.
A Vaadin Copilot observability panel showing live per-route render time, server round-trip, data-provider call counts, errors, and long tasks — usable in dev mode with no external backend.
A single correlated browser → server → backend trace via a per-interaction correlation id / W3C traceparent.
Push/WebSocket client instrumentation and a connection-state metric.
Release plan
Release as part of Vaadin 25.3
Risks, limitations and breaking changes
Risks
Building blocks vs. evaluator-visible value. Risk of spending the budget on internal refactoring and extension points and never reaching the things an evaluator actually sees — the DevTools tab, reference dashboards, and a fast time-to-first-trace.
AI insights may mislead. AI-driven performance analysis can drift into wrong suggestions, so insights must be opt-in, grounded in real meters, and clearly framed as advisory. The auto-filed-issue workflow raises the stakes: it must avoid flooding the tracker with false, noisy, or duplicate reports.
Limitations
Agent-less instrumentation cannot auto-instrument arbitrary existing code the way the 4.x agent could; coverage is bounded by what Vaadin exposes.
Spring Boot is the first-class target; standalone servlet and plain-Spring deployments are supported but with a thinner surface (no Actuator, no auto-config).
Breaking changes
No backward compatibility with the 4.x agent-based architecture. Observability Kit 5 is a clean-room replacement: the -javaagent extension and the OTel-JS browser bundle are removed, and OpenTelemetry becomes an optional Micrometer bridge. 4.x remains supported for the lifetime of Vaadin 25.x, and a migration guide covers the move.
New major version (5.0), new package (com.vaadin.observability.*) and configuration namespace (vaadin.observability.*).
Out of scope
Reimplementing an APM dashboard — visualization is delegated to the customer's backend (or a future add-on).
Acting as a generic observability library — the kit stays Vaadin-aware (routes, UIs, sessions, components, data providers).
A Vaadin-hosted observability backend as a managed service
Metrics
Success criteria:
The kit can be evaluated in ~5 minutes against the developer's own application, with no JVM agent.
Time-to-first-trace on a fresh Vaadin project drops from "after Prometheus/Jaeger/Datadog are in place" to seconds (dependency).
Ratio of evaluators who find that the kit provides useful and actionable information to those who do not
Pre-implementation checklist
Product Manager sign-off
Engineering Manager sign-off
Pre-release checklist
Verified with pilot customer
Documented (migration guide + custom-instrumentation API + reference dashboards)
UX/DX tests conducted and blockers addressed
Approved for release by Product Manager
Security review
Required. The kit collects telemetry (request/route/session/UI metrics and client-side timings) into the application's MeterRegistry and exposes it through Micrometer registries, optional Vaadin Actuator endpoints, and opt-in AI insights.
PRD: Observability Kit 5
Tier: Commercial
License: Commercial
Description
Observability Kit 5 is an agent-less rebuild of Vaadin's Observability Kit on top of Micrometer (metrics) and Micrometer Observation/Tracing, replacing the OpenTelemetry Java-agent architecture of 4.x. It ships as a plain library — a Spring Boot version and a non-Spring version — so a Vaadin application becomes observable by adding a dependency, with no
-javaagentand no separate collector required to get started.Motivation
Background
Observability Kit 4.x is built around an OpenTelemetry Java agent (
-javaagent:…) plus an OTel-JS browser bundle that round-trips frontend spans through a Vaadin request handler back into the agent. The agent is load-bearing: the starters emit nothing without it. This works, but the agent is the single biggest source of friction in adoption and deployment.Problem
For developers: 4.x's
-javaagentis hard to deploy on Kubernetes, managed runtimes, and GraalVM native image — adoption drops at the deployment step, exactly where the kit should start paying off.For Spring Boot teams: 4.x integration is shallow — no Micrometer Observation, no Actuator surface, no AOT/native story — so the kit doesn't behave like a first-class Spring Boot citizen.
For evaluators: the kit requires a lot of setup of various tools, plus running the application with the right parameters, just to see what it is about. It should be doable in a few minutes.
For anyone diagnosing a live application: locating a problem takes more Vaadin-specific metrics and the ability to trace the full request chain — from an event in the browser to the server and back. It also takes visibility into memory consumption, so the source of large memory usage can be pinpointed.
Solution
A library-only, Micrometer-native kit with a Spring (Boot) version and a non-Spring version. Alongside it, a publicly deployed reference setup — a (fake) production application wired to the kit, a live dashboard over its telemetry, and an AI workflow that watches that telemetry and files issues automatically — demonstrates the three core scenarios the kit is meant to solve:
1. Pinpoint the source of client and/or server slowness when opening a view or performing another UI operation. Typical problems:
2. Pinpoint the source of exceptions, client or server side — including which UI event or interaction triggered them, not just a server-side stack trace. Typical problems:
3. Pinpoint the source of excessive memory usage on the server. Typical problems:
Requirements
-javaagentflag.UI.access(...)asynchronous thread boundaries, so a single operation can be followed end to end on the server.vaadin.observability.*, instrumented by adding one dependency.-javaagentsetup and OTel spans with the Micrometer-based approach.vaadin/use-cases/observability, and issues are filed against thevaadin/use-casesrepository for now.)Nice-to-haves
@vaadin/observability-kit) capturing browser long tasks and optional web-vitals, replacing the OTel-JS bundle.traceparent.Release plan
Release as part of Vaadin 25.3
Risks, limitations and breaking changes
Risks
Limitations
Breaking changes
-javaagentextension and the OTel-JS browser bundle are removed, and OpenTelemetry becomes an optional Micrometer bridge. 4.x remains supported for the lifetime of Vaadin 25.x, and a migration guide covers the move.5.0), new package (com.vaadin.observability.*) and configuration namespace (vaadin.observability.*).Out of scope
Metrics
Success criteria:
Pre-implementation checklist
Pre-release checklist
Security review
Required. The kit collects telemetry (request/route/session/UI metrics and client-side timings) into the application's
MeterRegistryand exposes it through Micrometer registries, optional Vaadin Actuator endpoints, and opt-in AI insights.