For one site and one developer, the recording half is a solved problem: rrweb captures DOM changes in a script tag, a small server stores them, and a player replays the session next to console and network logs. An agent builds that in an afternoon. The weekend goes on what makes replay safe and useful: masking passwords and personal data before they leave the browser, storage that doesn't balloon, source-mapped error traces, search by user or error, and consent. Mobile SDKs, Redux state capture, funnels and AI summaries are separate projects.
Before you buildTry LogRocket's free level first: the pricing calculator lists 1,000 sessions a month at $0 (checked 2026-10-19), which covers a small site.
Build me a session replay tool for my own site to replace LogRocket. Requirements: - Node.js 22 + TypeScript: a `collector` (Fastify) and a `recorder`, a browser script bundled with esbuild into one file served at /recorder.js. `npm start` runs the collector and the viewer on http://localhost:4950, with the viewer at /app. - Recorder: `rrweb` with maskAllInputs on, blockClass "no-record", console capture through rrweb's console plugin, plus window.onerror, unhandledrejection and a patched fetch and XMLHttpRequest that log URL, method, status and duration, never bodies or headers. Expose `window.replay.identify(userId, traits)` for my own user ids. - Transport: batch events every 5 seconds and send the rest on pagehide with `navigator.sendBeacon`; keep the session id in sessionStorage and end a session after 30 minutes idle. - Storage: better-sqlite3 in ./data/replay.db for sessions (id, user id, first URL, user agent, start, duration, error count) and gzip-compressed event chunks in ./data/chunks/<session>/. An hourly job deletes sessions older than RETENTION_DAYS from .env (default 30). - Collector: accept events only from origins listed in ALLOWED_ORIGINS in .env, cap a batch at 1 MB, rate-limit per session id and honour SAMPLE_RATE from .env (default 1.0). - Viewer: one password in .env (signed cookie); a session list filtered by user id, URL, "has error" and date; the player (`rrweb-player`) with a side panel of console lines, failed requests and errors at their timestamps, each one a jump link. - Error groups: group JavaScript errors by message plus first stack frame with a count and the latest session for each; apply source maps from ./sourcemaps/ when they exist. - Single site, single admin. No accounts, no telemetry, no third-party requests. - Out of scope: mobile SDKs, Redux state, funnels, heatmaps, AI summaries, several projects. - README: the script tag to paste, how to mask or block elements, a warning that recording visitors may need consent under GDPR, and the disk space 1,000 test sessions took.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own LogRocket.
Add error alerts to the session replay tool in this folder. Requirements: - When a new error group appears, or an existing group passes 20 occurrences in an hour, send a message to a Discord or Slack webhook URL from .env with the message, count, page URL and a link to the latest session. - Never alert twice for the same group within 6 hours; store alert state in SQLite. - A "snooze" link in the message that mutes the group for 24 hours. - Update the README.
Add frustration signals to the session replay tool in this folder. Requirements: - In the recorder, flag a rage click (3 clicks within 700 ms in a 30 px radius) and a dead click (click on an element with no DOM change, navigation or network call within 1 second). - Store each signal with a timestamp and element selector, show a count per session and a filter in the session list, and mark the signals on the player timeline. - Never record the text of the clicked element, only the selector and tag. - Update the README.
Add a feedback widget to the session replay tool in this folder. Requirements: - A small button the recorder injects (off by default, enabled by a data attribute on the script tag) that opens a textarea and an optional email field. - Submitting stores the note with the current session id and shows it in the viewer with a link to the moment it was sent. - Rate-limit submissions per session and escape everything that is rendered. - Update the README.
A ticket that says 'it broke' turns into a replay with the console, the failed requests and the user's steps attached. Teams pay so engineers, support and product share one tool, with masking, retention and permissions handled for them and replays tied to the same error and analytics data.
Estimate · Runs on a $5 VPS or a spare machine; the cost that grows is disk for stored sessions, so keep retention short. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0/workspace | $0/workspace | 1,000 sessions a month, web and mobile combined. |
| Core, 10,000 sessions | — | $83/workspace | Session replay with unlimited analytics, error and log events, unlimited projects, clickmaps and heatmaps, funnels, frontend performance monitoring, alerting, SSO, surveys and MCP/API access. Offered below 100K sessions a month. |
| Pro, 25,000 sessions | — | $176/workspace | Everything in Core plus Galileo AI session and issue summaries, AI funnel and heatmap insights, feedback analysis, RBAC and audit logging, 500 free API/MCP credits a month. |
| Enterprise | custom | — | Everything in Pro plus unlimited seats, Streaming Data Export, enterprise support, a self-hosted option and 2,000 free API/MCP credits a month. |
The pricing calculator shows $0 free forever at 1,000 sessions a month; every paid plan has a 14-day trial without a card.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: Mobile SDKs for iOS, Android and React Native, State capture such as Redux next to each replay.
About $83 a month on the Core, 10,000 sessions a month plan, $996 a year (checked 2026-10-19).
Mobile SDKs for iOS, Android and React Native; State capture such as Redux next to each replay; Galileo AI summaries, issue detection and funnel insights; Product analytics across all users: funnels, heatmaps and path analysis; Connectors to support and feedback tools such as Zendesk and Intercom. If any of those matter to you, keep paying.
Yes: OpenReplay (open source), PostHog (open source), Highlight (open source).