@p-r-d-i-f-y/monitor
v0.1.2
Published
PRDify error monitoring, tracing, and session replay SDK
Maintainers
Readme
f you want to keep going, the next logical items are the Engineering shared shell/subnav or trace correlation (x-trace-id).f you want to keep going, the next logical items are the Engineering shared shell/subnav or trace correlation (x-trace-id).@p-r-d-i-f-y/monitor
Lightweight SDK for PRDify Engineering monitoring: error capture, distributed tracing, and session replay.
Install
npm install @p-r-d-i-f-y/monitorCopy your project DSN from Engineering → Monitoring in PRDify.
Universal setup
Use initMonitor when you want the SDK to auto-detect browser vs Node.js.
import { initMonitor } from '@p-r-d-i-f-y/monitor';
initMonitor({
dsn: process.env.NEXT_PUBLIC_PRDIFY_MONITOR_DSN ?? process.env.PRDIFY_MONITOR_DSN!,
apiUrl: process.env.NEXT_PUBLIC_API_BASE_URL ?? process.env.PRDIFY_MONITOR_API_URL,
environment: process.env.NODE_ENV,
release: '1.0.0',
});Browser
import { initBrowserMonitor } from '@p-r-d-i-f-y/monitor/browser';
initBrowserMonitor({
dsn: 'http://localhost:4000/developer/monitoring/ingest#<public-key>@<project-id>',
apiUrl: 'http://localhost:4000',
environment: 'production',
release: '1.0.0',
});Browser init automatically records page spans, instruments fetch with x-trace-id / x-span-id headers, and enables session replay (clicks, inputs with masked values, navigation). Password fields, hidden inputs, and [data-sensitive] fields are skipped. Set enableReplay: false to disable replay or traceFetch: false to disable fetch instrumentation.
Node / NestJS
import { initNodeMonitor } from '@p-r-d-i-f-y/monitor/node';
initNodeMonitor({
dsn: process.env.PRDIFY_MONITOR_DSN!,
apiUrl: process.env.PRDIFY_MONITOR_API_URL,
environment: process.env.NODE_ENV,
});Node init captures process-level exceptions and instruments global fetch when available. Downstream services receive x-trace-id and x-span-id, and PRDify records the request span automatically.
Manual spans
import { createMonitorClient } from '@p-r-d-i-f-y/monitor';
const client = createMonitorClient({ dsn, apiUrl });
const span = client.startTimedSpan('db.query', '/users');
await doWork();
await span.end('ok');Ingest endpoints
| Endpoint | Purpose |
| ----------------------------------- | ---------------------- |
| POST /developer/monitoring/ingest | Errors and breadcrumbs |
| POST /developer/monitoring/spans | Trace spans |
| POST /developer/monitoring/replay | Session replay events |
Send X-PRDify-DSN: <public-key> on every request.
Publish
cd packages/monitor
npm run build
npm publish --access public