Real User Monitoring (RUM)
Watchlog RUM measures what real users experience: LCP/INP/CLS/TTFB, JavaScript errors with stack traces, slow resources, and session activity — with filters for environment, browser, and device.
Synthetic is great; but RUM shows what real users actually experience—across devices, networks, and browsers.
Traffic, errors, vitals, and resources—in one place.
Jump from routes to error groups and sample sessions.
Slice by env, browser and device in seconds.
Control sampling and redact data via beforeSend.
Monitor LCP/INP/CLS/TTFB by path and time range.
Stable fingerprints, message, and last stack trace.
Session list + event details and custom data.
p95 duration, transfer sizes, and initiator types.
Change timeframes and filters instantly.
Public endpoints to power charts and reports.
Install the SDK, wrap your app with the Provider—that’s it. (Optional: install web-vitals
for more precise reporting)
React + @watchlog/rum-react
npm i @watchlog/rum-react web-vitals
// src/main.tsx
import React from 'react'
import ReactDOM from 'react-dom/client'
import { BrowserRouter, Route } from 'react-router-dom'
import { RumProvider, WatchlogRoutes } from '@watchlog/rum-react'
import App from './App'
import User from './UserPage'
ReactDOM.createRoot(document.getElementById('root')!).render(
<React.StrictMode>
<RumProvider
config={{
app: 'test-rum-react',
apiKey : "<API-Key>",
environment: 'dev',
endpoint: '<EndPoint>',
sampleRate: 0.3,
networkSampleRate: 0.3,
enableWebVitals: true,
autoTrackInitialView: true,
captureLongTasks: true,
captureFetch: true,
captureXHR: true,
beforeSend: (ev) => {
if (ev.type === 'web_vital') {
console.log('WEB_VITAL →', ev.data.name, ev.data.value, ev);
}
return ev;
},
}}
>
<BrowserRouter>
<WatchlogRoutes>
<Route path="/" element={<App />} />
<Route path="/user/:id" element={<User />} />
</WatchlogRoutes>
</BrowserRouter>
</RumProvider>
</React.StrictMode>
)
Track LCP/INP/CLS after each release.
Group messages, top paths, and error rates.
Compare prod/staging or versions with quick filters.
Optional, but recommended for precise INP/CLS/LCP values.
page_view, web_vital, resource, error and optional custom events.
Use sampling, filters, and the beforeSend hook to redact data.
Yes—React (Provider + WatchlogRoutes), Vue, and vanilla JS.
Need something specific? Contact us
Ready to see what your users really experience?