Now available on npm

Stop guessing.
Start reproducing.

Velyn captures frontend events and turns production chaos into reproducible bugs and executable Playwright tests — automatically.

View on GitHub
🖱️
Action click → #checkout-btn
API POST /api/checkout → 500
🔴
Error TypeError: Cannot read 'id'
✨ Velyn Output
1. User clicked "Checkout"
2. API /checkout returned 500
3. TypeError thrown in handler
+ Playwright test generated →

Your production logs are noise.
Velyn finds the signal.

THE PROBLEM

Your logs right now

[12:04:01.231] mousemove (324, 891)
[12:04:01.244] mousemove (327, 889)
[12:04:01.312] click → div.wrapper
[12:04:01.455] GET /api/user → 200
[12:04:01.891] mousemove (412, 220)
[12:04:02.103] click → button#checkout
[12:04:02.120] click → button#checkout
[12:04:02.455] POST /api/checkout → 500
[12:04:02.511] GET /api/cart → 200
[12:04:02.678] TypeError: Cannot read properties of undefined (reading 'id')
[12:04:02.890] mousemove (510, 340)
[12:04:03.001] scroll (0, 412)
[12:04:03.234] mousemove (488, 355)
THE SOLUTION

What Velyn sees

1
User clicked #checkout button
2
POST /api/checkout → 500
3
TypeError: Cannot read 'id'
Playwright test auto-generated

Three lines of code.
Zero configuration.

Drop in the SDK. Velyn handles the rest — capturing events, building causal timelines, and generating tests.

📡
STEP 01

Capture

The SDK patches fetch, XHR, clicks, and errors automatically. Every user interaction is recorded.

🧠
STEP 02

Analyze

Velyn strips noise, anchors on the last error, and builds a causal chain: action → API → error.

🧪
STEP 03

Generate

Get human-readable reproduction steps and an executable Playwright test — ready to paste and run.

Ship in under a minute.

Real code. Real integration. Pick your mode.

import { initVelyn } from "velyn-sdk";

const velyn = initVelyn({
  endpoint: "https://your-backend.com/ingest",
  apiKey:   "your-api-key",
});

// That's it. Events are captured and flushed automatically.
import { Velyn } from "velyn-sdk";

const velyn = new Velyn({
  endpoint:        "https://your-backend.com/ingest",
  apiKey:          "your-api-key",
  autoInstrument:  false,
});
velyn.start();

// Track events manually
velyn.trackAction("click", "#checkout-button");
velyn.trackApi("/api/checkout", "POST", 500);
velyn.trackError("TypeError: Cannot read 'id'");
import * as Sentry from "@sentry/browser";
import { initVelyn } from "velyn-sdk";

const velyn = initVelyn({
  endpoint:        "https://your-backend.com/ingest",
  apiKey:          "your-api-key",
  autoInstrument:  false,  // Sentry already captures everything
});

Sentry.init({
  dsn: "your-sentry-dsn",
  beforeSend(event) {
    velyn.captureFromSentryEvent(event);
    return event;
  },
});

Everything you need.
Nothing you don't.

Auto-Instrumentation

Patches fetch, XHR, click events, window.onerror, and unhandled rejections out of the box.

🔗

Causal Timeline

Builds deterministic causal chains — action → API → error — cutting through the noise.

🧪

Playwright Generation

Generates ready-to-run Playwright test cases from every bug reproduction timeline.

🛡️

Sentry Integration

Already using Sentry? Piggyback on existing events with a single beforeSend hook.

AI Enhancement

Optional Gemini-powered layer for root cause analysis, summaries, and smarter test drafts.

🚀

Zero Config

Three lines of code. No build plugins, no webpack config, no framework lock-in.

Start free.
Scale when you're ready.

No credit card required. The SDK is always free and open source.

Open Source
Free

Self-host the backend. Full SDK access. Community support.

  • Full SDK (npm package)
  • Self-hosted backend
  • Causal timeline engine
  • Playwright test generation
  • Community support
Get Started
Team
$99/mo

Everything in Pro, built for engineering teams at scale.

  • Everything in Pro
  • Team workspace
  • SSO & RBAC
  • SLA guarantee
  • Dedicated Slack channel
Contact Sales
Works with your stack
React Next.js Vue Angular Sentry Playwright