Lightweight JavaScript SDK to capture exceptions and messages from browser or Node.js and send them to a VIJ Admin endpoint.
npm install vij-sdkimport { init, captureException, captureMessage, flush } from "vij-sdk";
init({
endpoint: "https://your-vij-admin.example.com/api/logs",
appId: "demo-app",
environment: "development", // or "production"
batch: true,
flushIntervalMs: 3000,
maxBatchSize: 20,
// Optional: error-storm protection knobs (defaults shown)
maxErrorsPerMinute: 10,
dedupWindowMs: 30000,
maxRecentErrors: 1000,
initialBackoffMs: 1000,
maxBackoffMs: 30000
});
try {
throw new Error("Simulated crash in signup flow");
} catch (err) {
captureException(err, { feature: "signup" });
}
captureMessage("User clicked retry", { feature: "signup" }, "info");
// Optionally wait for queued logs to be sent
await flush();{
"appId": "string",
"message": "string",
"stack": "string",
"timestamp": "ISODate",
"metadata": { "optional": "object" },
"severity": "error | warning | info",
"environment": "production | development",
"userAgent": "string?"
}The SDK includes several safeguards to avoid becoming part of a failure storm:
- Rate limit: drops events client‑side after
maxErrorsPerMinutewithin a 60s window. - Deduplication: identical
(message|stack)events withindedupWindowMsare suppressed. - Queue cap: oldest events are dropped when
maxQueueSizeis exceeded. - Exponential backoff: network failures or
429/5xxresponses trigger backoff with doubling delays up tomaxBackoffMs. - Server‑driven backoff: honors
x-vij-backofforRetry-Afterheaders (seconds or HTTP date). - Batching: when enabled, events are sent in batches and retried later if backoff is active.
These features ensure runaway recursion or tight error loops don't overwhelm the network or server, while still preserving representative samples.