{"_id":"@accelerup-llc/web-monitor","_rev":"6-f93cdbab3ecbae7331c725dceefda580","name":"@accelerup-llc/web-monitor","dist-tags":{"latest":"0.5.2"},"versions":{"0.1.0":{"name":"@accelerup-llc/web-monitor","version":"0.1.0","keywords":["error-tracking","error-monitoring","warnings","nextjs","app-router","pages-router","observability","accelerup"],"author":{"name":"AccelerUp"},"license":"MIT","_id":"@accelerup-llc/web-monitor@0.1.0","maintainers":[{"name":"accelerup","email":"urfanmusayev2003@gmail.com"}],"dist":{"shasum":"bcce6fec18315d9a741191590e62c7982aed030d","tarball":"https://registry.npmjs.org/@accelerup-llc/web-monitor/-/web-monitor-0.1.0.tgz","fileCount":15,"integrity":"sha512-gbkZaWxYfufvcA6MTtwG8pQARjbKsFsMPiEcTfdYbJOjxuSHmh2vXeUBOs5EvGfogzSJKJUejej59SP8ZV3nnw==","signatures":[{"sig":"MEYCIQCcLC+cNG+GvnwqnLhNWEytfAUKSDXcv4CF7MRvD8EyUQIhAMYoVjmG5Q/kngC7la3R5HI6QVcogGC4cTeg7/DuRUiW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138522},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"gitHead":"1958e3e1acf7be9db4e2b1ee0a0907fe18bab301","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"accelerup","email":"urfanmusayev2003@gmail.com"},"_npmVersion":"10.8.2","description":"Lightweight, zero-dependency error & warning monitoring SDK for Next.js (App Router + Pages Router). Init once, capture everything.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","react":"^18.3.1","typescript":"^5.5.4","@types/react":"^18.3.3"},"peerDependencies":{"react":">=17.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/web-monitor_0.1.0_1779558871345_0.7005374573683176","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@accelerup-llc/web-monitor","version":"0.2.0","keywords":["error-tracking","error-monitoring","warnings","nextjs","app-router","pages-router","observability","accelerup"],"author":{"name":"AccelerUp"},"license":"MIT","_id":"@accelerup-llc/web-monitor@0.2.0","maintainers":[{"name":"accelerup","email":"urfanmusayev2003@gmail.com"}],"dist":{"shasum":"b34bf867534e27a060803632ffb364fda4f61130","tarball":"https://registry.npmjs.org/@accelerup-llc/web-monitor/-/web-monitor-0.2.0.tgz","fileCount":15,"integrity":"sha512-azqdt4lXKj2BWvoVVQ+ZxCZqZ3eimM3zbekQ/ZzquU7BFk5X8qjNMowlmBnsVbv5TQ52ThVJ+TUfA6iT3+wJ9g==","signatures":[{"sig":"MEQCIG2qPhkpWgybLLrX0Fn7XzPM0zlgOt2zsWe8BwzKV/+8AiBHJyZ+90iKDynFAb1FIVpIBwLzmbmezUodN92pN1iRbw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":148308},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"gitHead":"1958e3e1acf7be9db4e2b1ee0a0907fe18bab301","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"accelerup","email":"urfanmusayev2003@gmail.com"},"_npmVersion":"10.8.2","description":"Lightweight, zero-dependency error & warning monitoring SDK for Next.js (App Router + Pages Router). Init once, capture everything.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.1","dependencies":{"@accelerup-llc/web-monitor":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","react":"^18.3.1","typescript":"^5.5.4","@types/react":"^18.3.3"},"peerDependencies":{"react":">=17.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/web-monitor_0.2.0_1779641834587_0.5523150878496694","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@accelerup-llc/web-monitor","version":"0.2.1","keywords":["error-tracking","error-monitoring","warnings","nextjs","app-router","pages-router","observability","accelerup"],"author":{"name":"AccelerUp"},"license":"MIT","_id":"@accelerup-llc/web-monitor@0.2.1","maintainers":[{"name":"accelerup","email":"urfanmusayev2003@gmail.com"}],"dist":{"shasum":"48e3cd8b39fc19d69bd5e89226e31116c3705b8e","tarball":"https://registry.npmjs.org/@accelerup-llc/web-monitor/-/web-monitor-0.2.1.tgz","fileCount":15,"integrity":"sha512-+hyGHn+PGM2dhmPuexjoIurkJh0XpbYAT0IHyEqdr+TfquKIfQxEZPYd1l+4swEsemeBdCe7HfXBtyVfJkxz3A==","signatures":[{"sig":"MEYCIQDxdQ8A1mwRxeaEOHuspn68VS+u0ApDp/z88EWQ9ETetgIhAO9/ULzxBKd8HoF4A6CAVjOZsGa6OoWUxiowEGqCMFnx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":150604},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"gitHead":"1958e3e1acf7be9db4e2b1ee0a0907fe18bab301","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"accelerup","email":"urfanmusayev2003@gmail.com"},"_npmVersion":"10.8.2","description":"Lightweight, zero-dependency error & warning monitoring SDK for Next.js (App Router + Pages Router). Init once, capture everything.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.1","dependencies":{"@accelerup-llc/web-monitor":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","react":"^18.3.1","typescript":"^5.5.4","@types/react":"^18.3.3"},"peerDependencies":{"react":">=17.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/web-monitor_0.2.1_1779643986999_0.6564059882195037","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@accelerup-llc/web-monitor","version":"0.5.0","keywords":["error-tracking","error-monitoring","warnings","nextjs","app-router","pages-router","observability","accelerup"],"author":{"name":"AccelerUp"},"license":"MIT","_id":"@accelerup-llc/web-monitor@0.5.0","maintainers":[{"name":"accelerup","email":"urfanmusayev2003@gmail.com"}],"dist":{"shasum":"9e96cb67e7bda8ddb0172ba0de942f2c03e169dc","tarball":"https://registry.npmjs.org/@accelerup-llc/web-monitor/-/web-monitor-0.5.0.tgz","fileCount":23,"integrity":"sha512-CG3ycNWMl0GU9i/oxpmN330S0uw8O8kHz0nKmwBoNvQzV9UF4s6DxNBLkXSB7yrh2EELL8LnR3DAQSWHhXwLiA==","signatures":[{"sig":"MEQCIHX62mLbZWPpl4HSkKiVnT1zpJXV1LmepF1ZpvQI4DseAiAkxtI4BcOSs30lOgiL6a6sqFnpNbST/QSkp00T0NdLEA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":360348},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js","require":"./dist/server.cjs"}},"gitHead":"1958e3e1acf7be9db4e2b1ee0a0907fe18bab301","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"accelerup","email":"urfanmusayev2003@gmail.com"},"_npmVersion":"10.8.2","description":"Lightweight, zero-dependency error & warning monitoring SDK for Next.js (App Router + Pages Router). Init once, capture everything.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","react":"^18.3.1","typescript":"^5.5.4","@types/react":"^18.3.3"},"peerDependencies":{"react":">=17.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/web-monitor_0.5.0_1779794489188_0.9447673630894116","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@accelerup-llc/web-monitor","version":"0.5.1","keywords":["error-tracking","error-monitoring","warnings","nextjs","app-router","pages-router","observability","accelerup"],"author":{"name":"AccelerUp"},"license":"MIT","_id":"@accelerup-llc/web-monitor@0.5.1","maintainers":[{"name":"accelerup","email":"urfanmusayev2003@gmail.com"}],"dist":{"shasum":"2166777a6f71c076102a4d487aa852b119e83638","tarball":"https://registry.npmjs.org/@accelerup-llc/web-monitor/-/web-monitor-0.5.1.tgz","fileCount":23,"integrity":"sha512-krc3HGnpptN6mb54ZyUIdpiYaS7BoLzDmUKlqHoFWEnvtj/iCcLLGOzw76nc9AmCiU6aFCvd7A8OytDj+go/xw==","signatures":[{"sig":"MEYCIQDZ+s5n0xWP+YxooEMjJ3BiN3EKnHhoV2yCUOE9NdpdKAIhAO/0XtAvNsfyEZHs6M0XGOunSHjkFpUN6WTtPPh2d4Wg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":370386},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js","require":"./dist/server.cjs"}},"gitHead":"1958e3e1acf7be9db4e2b1ee0a0907fe18bab301","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"accelerup","email":"urfanmusayev2003@gmail.com"},"_npmVersion":"10.8.2","description":"Lightweight, zero-dependency error & warning monitoring SDK for Next.js (App Router + Pages Router). Init once, capture everything.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","react":"^18.3.1","typescript":"^5.5.4","@types/react":"^18.3.3"},"peerDependencies":{"react":">=17.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/web-monitor_0.5.1_1779799509308_0.536436333239221","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@accelerup-llc/web-monitor","version":"0.5.2","description":"Lightweight, zero-dependency error & warning monitoring SDK for Next.js (App Router + Pages Router). Init once, capture everything.","type":"module","sideEffects":false,"main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js","require":"./dist/server.cjs"}},"scripts":{"build":"tsup","dev":"tsup --watch","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"keywords":["error-tracking","error-monitoring","warnings","nextjs","app-router","pages-router","observability","accelerup"],"author":{"name":"AccelerUp"},"license":"MIT","publishConfig":{"access":"public"},"peerDependencies":{"react":">=17.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"devDependencies":{"@types/react":"^18.3.3","react":"^18.3.1","tsup":"^8.3.5","typescript":"^5.5.4"},"engines":{"node":">=18"},"_id":"@accelerup-llc/web-monitor@0.5.2","gitHead":"ae80161cb98f3355ef69860dff07905d5251a0cc","_nodeVersion":"20.20.1","_npmVersion":"10.8.2","dist":{"integrity":"sha512-5iPM+g4KkpXsxRVD6i87+uAX1k0AlZ+7Zi8qL9cMLEAPWzkfhtZwJo7hX14pPfRuhUdxzgMPWtkD/zzWpANxlw==","shasum":"ee67575233b7a8ff18d7d2883a7ed770388814f9","tarball":"https://registry.npmjs.org/@accelerup-llc/web-monitor/-/web-monitor-0.5.2.tgz","fileCount":23,"unpackedSize":474098,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGPUfEhEv9d19+9U4rHHaqb0Y88s88kYLXSaKeJ3LQWDAiBH4G+koNc83qUJkqbFPstiYvcmniP4l9wR+qRHQXWLaA=="}]},"_npmUser":{"name":"accelerup","email":"urfanmusayev2003@gmail.com"},"directories":{},"maintainers":[{"name":"accelerup","email":"urfanmusayev2003@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/web-monitor_0.5.2_1780514102666_0.9965470165010053"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-23T17:54:31.193Z","modified":"2026-06-03T19:15:03.007Z","0.1.0":"2026-05-23T17:54:31.487Z","0.2.0":"2026-05-24T16:57:14.716Z","0.2.1":"2026-05-24T17:33:07.184Z","0.5.0":"2026-05-26T11:21:29.321Z","0.5.1":"2026-05-26T12:45:09.480Z","0.5.2":"2026-06-03T19:15:02.868Z"},"author":{"name":"AccelerUp"},"license":"MIT","keywords":["error-tracking","error-monitoring","warnings","nextjs","app-router","pages-router","observability","accelerup"],"description":"Lightweight, zero-dependency error & warning monitoring SDK for Next.js (App Router + Pages Router). Init once, capture everything.","maintainers":[{"name":"accelerup","email":"urfanmusayev2003@gmail.com"}],"readme":"# @accelerup-llc/web-monitor\n\nLightweight, zero-dependency error & warning monitoring for Next.js. Initialize\n**once**, and every uncaught error, unhandled promise rejection, `console.error`\nand `console.warn` from your users is batched and shipped to AccelerUp. Works\nwith **both the App Router and the Pages Router** in the same codebase.\n\n- **Zero runtime dependencies** — a few KB gzipped, `react` is an optional peer.\n- **Errors & warnings only** — nothing else is captured. No `console.log`, no analytics, no tracking.\n- **Single init, idempotent** — safe across HMR, double imports, and both routers mounting.\n- **Never breaks your app** — every capture path is wrapped; failures are swallowed.\n- **Resilient transport** — batched, deduped, rate-limited, `sendBeacon` on page hide, retry with backoff.\n\n## Install\n\n```bash\nnpm install @accelerup-llc/web-monitor\n```\n\n## Setup — one place, both routers\n\n**1. Add two env vars** (`.env`):\n\n```bash\nNEXT_PUBLIC_ACCELERUP_INGEST_URL=https://api.accelerup.com/ingest/web-errors\nNEXT_PUBLIC_ACCELERUP_KEY=wm_your_public_ingest_key\n```\n\nThe key is **public and write-only** — it only grants \"submit an error event\",\nso it is safe to expose in the browser bundle.\n\n**2. Init once.** Next.js 13.4+ runs `instrumentation-client.ts` (project root,\nor `src/`) on the client before anything else, for **both** routers — the single\ninit point:\n\n```ts\n// instrumentation-client.ts\nimport { init } from '@accelerup-llc/web-monitor';\n\ninit({\n  ingestUrl: process.env.NEXT_PUBLIC_ACCELERUP_INGEST_URL!,\n  key: process.env.NEXT_PUBLIC_ACCELERUP_KEY!,\n  release: process.env.NEXT_PUBLIC_APP_VERSION,\n  environment: process.env.NODE_ENV,\n});\n```\n\nThat's it. No other code changes anywhere in your app.\n\n> Prefer a single DSN string? `init({ dsn: 'https://KEY@host/PROJECT_ID' })` also works.\n\n<details>\n<summary>Older Next.js without instrumentation-client?</summary>\n\n**App Router** — a tiny client component imported in the root layout:\n\n```tsx\n// app/monitor.tsx\n'use client';\nimport { useEffect } from 'react';\nimport { init } from '@accelerup-llc/web-monitor';\nexport function Monitor() {\n  useEffect(() => { init({ dsn: process.env.NEXT_PUBLIC_ACCELERUP_DSN! }); }, []);\n  return null;\n}\n```\n```tsx\n// app/layout.tsx\nimport { Monitor } from './monitor';\nexport default function RootLayout({ children }) {\n  return <html><body><Monitor />{children}</body></html>;\n}\n```\n\n**Pages Router** — in `_app.tsx`:\n\n```tsx\n// pages/_app.tsx\nimport { init } from '@accelerup-llc/web-monitor';\nif (typeof window !== 'undefined') init({ dsn: process.env.NEXT_PUBLIC_ACCELERUP_DSN! });\n```\n</details>\n\n## Optional: React error boundary\n\nCatches render-time crashes that global handlers can't see.\n\n```tsx\nimport { ErrorBoundary } from '@accelerup-llc/web-monitor/react';\n\n<ErrorBoundary fallback={<p>Something went wrong.</p>}>\n  <YourApp />\n</ErrorBoundary>\n```\n\n## Optional: manual reporting\n\n```ts\nimport { captureError, captureMessage, setUser } from '@accelerup-llc/web-monitor';\n\ntry { risky(); } catch (e) { captureError(e); }\ncaptureMessage('Payment retried', 'warning');\nsetUser({ id: 'user_123' }); // anonymous id only — no PII required\n```\n\n## Configuration\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `ingestUrl` + `key` | — | **Required** (or `dsn`). Endpoint URL + public ingest key. |\n| `project` | — | Optional app id, sent as a tag. |\n| `dsn` | — | Alternative to `ingestUrl`+`key`: `https://KEY@host/PROJECT_ID`. |\n| `endpoint` | derived | Override the full ingest URL (with `dsn`). |\n| `release` / `environment` | — | Group issues per release/env. |\n| `enabled` | `true` | Set `false` to disable entirely. |\n| `captureError` | `true` | Uncaught `window` errors. |\n| `captureUnhandledRejection` | `true` | Unhandled promise rejections. |\n| `captureConsole` | `true` | `console.error`/`warn`. Or `{ error, warn }`. |\n| `ignoreErrors` | — | `(string \\| RegExp)[]` to drop by message. |\n| `denyUrls` / `allowUrls` | — | Filter by stack/url. |\n| `sampleRate` / `warningSampleRate` | `1` | `0..1` sampling. |\n| `maxEventsPerMinute` | `30` | Token-bucket flood guard. |\n| `dedupeWindow` | `5000` | ms window to suppress duplicates. |\n| `flushInterval` / `maxBatchSize` | `5000` / `20` | Batching. |\n| `maxQueueSize` | `100` | In-memory buffer cap. |\n| `beforeSend` | — | `(event) => event \\| null` last-chance hook. |\n| `posthog` | `true` | Pivot errors to PostHog session replay (see below). |\n| `debug` | `false` | Verbose internal logging. |\n\n## PostHog integration\n\nIf you already use PostHog (cloud or self-hosted), the SDK auto-pivots from\nan error to the same session's replay video — no extra config, no custom\nbreadcrumbs to rebuild.\n\nWhen `window.posthog` is loaded on the page, every event is tagged with:\n\n- `posthog_distinct_id` — current user id\n- `posthog_session_id` — current session id\n- `posthog_session_url` — direct link into PostHog session replay, anchored\n  at the moment of the error (built by PostHog's own `get_session_replay_url`,\n  so self-hosted instances \"just work\" with their configured `api_host`)\n\nIn the AccelerUp dashboard, error detail pages render an **Open in PostHog\nsession replay** button when these tags are present. Set `posthog: false`\nto disable.\n\n## Privacy\n\nURLs are reduced to `origin + pathname` (query & hash stripped) to avoid leaking\ntokens/PII. Only error/warning content is collected. Use `beforeSend` to redact\nfurther.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}