- 23 min read
10 Best Web Application Monitoring Tools (2026): RUM, Synthetics and Tracing Compared
Choose web application monitoring by three things: what happened in the user's browser, whether important journeys still work, and where a request spent its time after it reached the backend. RUM, synthetic checks and distributed tracing cover those jobs, whether you buy them together or connect two tools.
Picture someone paying for an order. The payment service returns success, but a JavaScript exception stops the confirmation page from updating. The API check passes; the server trace looks unremarkable. Meanwhile, the customer is deciding whether to click Pay again, which is not the sort of load test anyone wanted. The browser has the missing part of the story.
These 10 products range from full observability suites to error trackers and browser-test runners. They're not interchangeable, and this isn't a benchmark ranking. Dash0 publishes the article and is among the products compared. The feature descriptions reflect vendor documentation reviewed for the November 2026 draft, not hands-on testing.
Quick picks by fit:
- Datadog: broad RUM, replay, APM and synthetic coverage in one portfolio.
- New Relic: browser monitoring, APM and Selenium-based synthetic journeys.
- Dash0: OpenTelemetry-based website and backend monitoring; API checks, but no browser synthetics.
- Grafana Cloud: Faro browser telemetry alongside the Grafana stack and k6 checks.
- Splunk Observability Cloud: OpenTelemetry browser monitoring with an interesting approach to initial page-load tracing.
- Elastic Observability: Playwright browser monitors and self-managed deployment options.
- Sentry: errors first, with replay and tracing for context.
- Honeycomb: investigating high-cardinality browser and backend traces.
- Checkly: running Playwright suites against production on a schedule.
- Raygun: crash reporting and RUM, especially with its supported APM runtimes.
What web application monitoring actually covers
A web app has more ways to fail than a URL has ways to return 200 OK. The monitoring layers answer different questions; deciding which ones you need is more useful than counting the number of product logos on a proposal.
RUM measures what happens in real browsers; session replay helps reconstruct the interaction. Synthetic API checks test endpoints, while synthetic browser checks walk through journeys such as login or checkout. APM and distributed tracing show what happened in backend services; error tracking and logs fill in the failure details. You need the layers that answer your actual incident questions, not necessarily every layer a vendor sells.
For browser performance, check whether the tool measures Google's Core Web Vitals in the field. The good thresholds are LCP at 2.5 seconds or less, INP at 200 milliseconds or less, and CLS at 0.1 or less, assessed at the 75th percentile separately for mobile and desktop. INP replaced FID in March 2024. If a vendor still foregrounds FID, ask for its INP reporting; the two aren't equivalent. For more background, see frontend monitoring. If you use session replay, test input masking and recording scope as carefully as playback; a faithful recording of a payment form is not automatically something you want to retain.
Why RUM and synthetics belong together
Use synthetics to check flows you can't afford to break, and RUM to see what happens outside the script. Synthetic monitoring can run a login or checkout regularly, including at night or in staging when nobody is using the site. It will be very good at repeating exactly what you told it to do. That is both its strength and its rather obvious blind spot.
Real user monitoring observes actual devices, networks, interactions and field INP. It also needs actual traffic before there's anything to report. A synthetic check may catch a broken login before the first customer arrives; RUM may show that the login works but is painfully slow on older phones. Both findings are worth having.
The browser-to-backend handoff is the real test
The most valuable feature in this comparison is often a small link: open the backend trace for this browser request. If a click took four seconds, that link can take you to the database call or external dependency responsible. Without it, you get to correlate two timelines by hand, which is a fairly elaborate use of software sold to save investigation time.
For fetch and XMLHttpRequest calls, browser instrumentation can attach a W3C traceparent header. A compatible backend continues the same trace. There are four ways this can go wrong:
- The wrong headers. Some browser SDKs send W3C context by default; others need a setting or use vendor-specific headers. Both sides have to agree.
- The wrong origins. Cross-origin APIs need to be included in the SDK's propagation configuration, and their CORS policies must allow the headers. If the SDK doesn't send them, correlation disappears. If it does send them but CORS rejects them, the browser may block the actual request. You've managed to turn instrumentation into an application outage.
- The initial HTML request. It happens before the JavaScript SDK loads, so the SDK cannot add a request header retroactively. Splunk can return context in
Server-Timing; Elastic can inject it into the page from the server. - Sampling. A browser event may reference a backend trace that was discarded. A valid trace ID is not a guarantee that the trace was retained.
Configure the API's CORS response before enabling cross-origin propagation in the browser. Allow the actual set of headers your SDK emits, which may include tracestate, newrelic, x-datadog-*, sentry-trace or baggage, as well as traceparent. Use narrow URL patterns. Sending trace headers to an unrelated third-party API is at best unnecessary and may break the request.
These headers generally trigger a CORS preflight (OPTIONS) request, unless covered by a cached preflight response. A suitable Access-Control-Max-Age can reduce that overhead. Otherwise the tracing configuration can alter the latency you're trying to study. The browser also exposes its own SDK configuration: use ingest-only credentials, check Content Security Policy, and make sure synthetic browser runs aren't accidentally counted as real sessions.
OpenTelemetry in the browser: useful, not finished
OpenTelemetry is a sensible foundation for tracing browser requests into instrumented services. It is not yet a drop-in replacement for every proprietary RUM feature. The project's browser guide still describes client instrumentation as experimental, and the browser.web_vital conventions are in Development. Work continues on details such as INP attribution.
This has practical consequences. Elastic's OpenTelemetry browser offering is still a technical preview. Accepting OTLP on the backend doesn't tell you what the browser product can do.
Dash0, Splunk and Honeycomb use OpenTelemetry-based browser SDKs. Grafana Faro uses OpenTelemetry for tracing, though the Faro core SDK is not itself OpenTelemetry. Elastic has both a classic proprietary RUM agent and an experimental OpenTelemetry-based option. Datadog, New Relic, Sentry and Raygun use proprietary browser SDKs. That distinction matters for portability, but working trace propagation matters more than the label on the SDK. Test one real cross-origin request before declaring victory.
How these 10 tools were selected
This is a comparison of tools that cover at least one browser-side layer (RUM or browser synthetics) and either monitor the backend or can link an operation to it using trace context. That includes full observability platforms, specialist error tools and Checkly's synthetic-first model. It excludes simple uptime checkers, discussed later. The order is editorial, not a quantitative performance ranking; Dash0 appears third among the general platforms.
1. Datadog
Datadog covers RUM, Session Replay, dedicated error tracking, APM, logs, and synthetic API and browser tests. Its browser tests can be recorded without writing code, which is useful when the team maintaining them isn't also maintaining a Playwright suite.
The browser SDK is proprietary even when the backend receives OpenTelemetry. To link RUM requests to APM, configure the API URLs in allowedTracingUrls. The SDK can send both Datadog and W3C headers, but it can't trace the initial HTML request before it has loaded. Datadog also warns that enabling browser-to-APM tracing increases APM data volume. That's worth planning for even if you're not comparing bills in this article.
Datadog is worth shortlisting for broad coverage and recorded browser checks. In a trial, check that the right products are enabled and that your cross-origin requests produce the expected traces. Its Playwright integration is intended for CI testing, not synthetic browser monitors.
2. New Relic
New Relic puts browser monitoring, session replay, synthetics and backend APM into the same observability platform. Its scripted browser monitors use Selenium, while its RUM agent records Core Web Vitals and can link browser requests to server-side traces.
The setup detail that deserves attention is cross-origin propagation. Browser distributed tracing needs the appropriate Browser Pro agent. Same-origin AJAX requests are supported by default; cross-origin calls need an approved-origin configuration and a server response permitting newrelic, traceparent and tracestate. New Relic explicitly recommends testing that change outside production. A server that rejects the added headers can break the application request, not merely lose its trace.
It covers RUM, APM and scripted browser monitoring in one platform. The trial should spend real time on CORS behavior and on whether Selenium, rather than Playwright, fits the tests you already maintain.
3. Dash0
Dash0 is a fit for teams already using OpenTelemetry on the backend that want browser events, replay, traces, logs and metrics in the same investigation. Website Monitoring captures sessions, page views, HTTP requests, frontend errors and Core Web Vitals. Session replay, introduced in October 2026, is opt-in and masks inputs by default.
Its open-source Web SDK uses OpenTelemetry and OTLP. Same-origin fetch and XMLHttpRequest calls get W3C traceparent automatically; cross-origin APIs must be listed in the propagators configuration. You can move from a browser request to the backend trace, and session replay provides session context for the investigation. The SDK defaults to tracking every session, so set sampling deliberately on busy sites. Setup is covered in the website monitoring guide.
Dash0's synthetics are HTTP and API checks, including checks managed as code. It does not run browser journeys or Playwright tests, and its browser SDK does not document an initial-HTML-request tracing mechanism. If login or checkout must be exercised in a real browser, pair it with a browser-synthetics tool rather than expecting an API check to stand in for one.
4. Grafana Cloud
Grafana Cloud brings together Faro frontend telemetry, Application Observability and k6-based synthetic monitoring. For teams already using Grafana, this is an appealing extension of a familiar environment. Browser errors and Web Vitals sit alongside traces, while session replay is still in public preview in the researched version of the product.
Faro's tracing uses OpenTelemetry JavaScript and can send W3C trace context to the backend; the Faro core SDK isn't itself an OpenTelemetry SDK. Grafana's backends remain separate systems for metrics, logs and traces, so correlation depends on the expected data and configuration being present on both sides.
The synthetic browser checks use k6 browser, whose API resembles Playwright. Resemblance is not compatibility: existing Playwright tests need porting. Grafana is a strong candidate for teams that want control over observability building blocks and are happy to maintain their connections, rather than expecting every feature to appear automatically.
5. Splunk Observability Cloud
Splunk's browser-to-backend link takes an unusual route. Instead of relying only on the browser to send trace context, the backend can return it in a Server-Timing response header. The browser agent reads that header and associates the operation with the APM trace. That matters for the initial HTML document request, which a JavaScript SDK cannot travel back in time to instrument.
The @splunk/otel-web agent is OpenTelemetry-based. To enable the response-header mechanism, the backend needs SPLUNK_TRACE_RESPONSE_HEADER_ENABLED; cross-origin responses must expose Server-Timing through Access-Control-Expose-Headers. Splunk's documentation describes the arrangement.
Splunk also offers RUM, replay, APM, API checks and browser synthetics built with UI steps or imported Chrome Recorder recordings. The response-header method is clever, but it requires backend cooperation. Check that the services handling your document and API requests actually return the header before assuming the browser view can link them.
6. Elastic Observability
Elastic supports RUM, APM and Playwright-based synthetic browser journeys, with self-managed deployment as an option. But start with the deployment choice: RUM is supported on Elastic Cloud Hosted and self-managed deployments, not Elastic Cloud Serverless in the documented offering. You can build a perfectly respectable Serverless observability setup that still lacks the browser feature you came here for.
Elastic recommends its classic proprietary RUM agent for production. Its OpenTelemetry-based EDOT Browser option remains a technical preview. The classic agent propagates traceparent on supported same-origin requests; for cross-origin calls, configure distributedTracingOrigins and the corresponding CORS allowance. The server can also inject trace and span IDs for the initial page load.
Elastic's synthetic browser monitors use a Playwright-based agent and can run from private locations. That makes it particularly interesting if scripted journeys matter and you want control over deployment. Session replay is not documented in the researched offering.
7. Sentry
Sentry starts where many teams actually start debugging a web app: the exception. Its dedicated error tracking extends into browser tracing, replay, logs and HTTP uptime checks. It also captures Web Vitals, but it isn't trying to replace full infrastructure monitoring or a browser-synthetics system.
The Sentry JavaScript SDK uses its own sentry-trace and baggage headers. To propagate W3C traceparent into an OpenTelemetry-instrumented backend, enable propagateTraceparent; it isn't on by default in the documented SDK. The API's CORS policy must allow all the headers the browser actually sends. Two sides can both support tracing and still never meet because one switch wasn't set.
Sentry makes sense when identifying, grouping and fixing application errors is the priority, with sessions and traces available to explain them. It doesn't provide scripted browser monitoring, and its OTLP support for traces and logs was still in open beta in the researched draft.
8. Honeycomb
Honeycomb is interesting when the problem isn't a clean, reproducible error but a strange pattern in particular browsers, users or requests. Its OpenTelemetry-based browser SDK sends Web Vitals and traces into the same trace-oriented investigation model used for backend services. You can ask questions about high-cardinality attributes rather than waiting for someone to build a dashboard for the exact combination that failed.
Trace context can travel from browser to backend. The dedicated Web Launchpad frontend performance view is an Enterprise add-on, though the browser SDK itself isn't restricted to that tier.
There is no session replay or synthetic monitoring here. That's an intentional boundary to understand when shortlisting it: Honeycomb is a strong fit for trace exploration, not a substitute for reconstructing a user session or running scripted checkout tests.
9. Checkly
Checkly does not try to observe what happens on your users' devices. It takes browser and API tests and runs them as production monitors, which is extremely useful when a release can break login without taking a single server offline. If your engineers already write Playwright tests, this is the most direct route to reusing that work.
Playwright Check Suites can run existing configuration across Chromium, WebKit and Firefox; Checkly also offers individual Chromium browser checks, multistep HTTP/API checks and other network monitors. It can inject traceparent and tracestate: checkly=true, letting a compatible backend associate spans with a synthetic run. Trace integration is listed as an Enterprise add-on in the researched offering.
The caveat is the one you would expect: a scripted journey only tests the journey you wrote. Checkly pairs naturally with RUM and backend APM; it doesn't replace either. Real users will eventually find a path no test author considered. It's practically their job.
10. Raygun
Raygun combines browser RUM, crash reporting and APM for .NET, Ruby and Node.js. It is more focused than the broad suites, which can be useful if those runtimes cover your backend and the immediate goal is investigating crashes and slow user sessions.
The raygun4js browser SDK records session and performance information. Raygun doesn't document browser synthetics, session replay or OTLP ingestion in the researched material. More importantly, its RUM and APM documentation says the products work together but does not establish how browser trace context propagates to the backend. That's a test to request, not a feature to assume.
Its Web Vitals documentation also still mentions FID alongside INP. Ask which metric the product actually reports before comparing responsiveness across tools.
What about uptime-only tools?
Pingdom, UptimeRobot, StatusCake, Better Stack, Uptrends and Site24x7 can check a URL from multiple locations and alert on availability. They serve a useful purpose, but they don't meet this article's browser-to-backend scope. A green uptime check can't describe an interaction that never finished or a backend call that spent three seconds waiting on a dependency.
How to choose, without sitting through ten identical demos
Narrow the shortlist using the specific failure you need to see:
- Users complain, but the backend looks fine: start with RUM, error tracking and replay. Then verify the click or request can be followed into APM. Dash0, Datadog, New Relic, Grafana and Splunk are relevant starting points with different tradeoffs.
- Login or checkout breaks between releases: prioritize scripted browser checks. Checkly and Elastic support Playwright-based journeys; other suites may use recorders, Selenium or k6 instead.
- You already use OpenTelemetry: test browser-to-server propagation with Dash0, Splunk, Honeycomb or Grafana. Don't assume a shared telemetry standard supplies replay, RUM sessions or working CORS configuration.
- Application errors are the recurring problem: consider Sentry or Raygun before buying a wider platform solely to investigate exceptions.
- No single product covers your requirements: pair RUM/APM with browser synthetics. For example, Dash0 plus Checkly covers different jobs; Checkly's backend trace integration has plan restrictions, so verify that part of the combination.
During a trial, reproduce an issue from your own site. Check field INP, follow a browser request into its exact backend trace, try a cross-origin API, and deliberately break propagation to see what the product tells you. Then run a synthetic checkout and ask whether the failure can be investigated with the same telemetry. A vendor demo with everything already configured is a lovely place to start, but it doesn't test the configuration you're going to operate.
For a fuller evaluation framework, see evaluating observability platforms.
Final thoughts
The real question is whether your monitoring can follow a failure as it crosses the browser boundary. Pick a troublesome action in your own application, make it fail in a test environment, and see what the tool gives you: a user interaction, a trace, a useful error, or a collection of tabs you still have to reconcile yourself.
Don't force every job into one platform. API checks aren't browser journeys; replay isn't synthetic monitoring; and an OpenTelemetry SDK doesn't automatically make a full RUM product. If OpenTelemetry-based RUM, replay and backend traces fit your stack, the Dash0 website monitoring guide covers the setup. If you also need scripted browser journeys, pair Dash0 with a tool that actually runs them. Try Dash0 free for 14 days. No credit card required.
