@getsnare/sdk-node
v0.1.0
Published
Node.js SDK for Snare. Error monitoring for backend processes, API routes and workers.
Maintainers
Readme
@getsnare/sdk-node
Snare error-monitoring SDK for Node.js backend processes (API routes,
Express/Fastify servers, background workers). This is the Node counterpart
to the browser-only @getsnare/sdk package — same public API shape, no
window/navigator/location dependency.
Install
pnpm add @getsnare/sdk-nodeUsage
import { init, captureException } from "@getsnare/sdk-node";
init({
projectId: "proj_abc123",
apiKey: "snare_sdk_...",
apiBase: "https://intake.snare.dev", // optional, this is the default
});
try {
riskyCall();
} catch (error) {
captureException(error);
}init() also registers process-level hooks so you don't have to wrap every
call site:
process.on("uncaughtException", ...)process.on("unhandledRejection", ...)
Both are registered exactly once, even if init() is called more than
once.
Flushing before shutdown
There is no pagehide/beforeunload equivalent in Node. Call flush()
explicitly inside your own graceful-shutdown handler to make sure queued
events are actually sent before the process exits:
import { flush } from "@getsnare/sdk-node";
process.on("SIGTERM", async () => {
await flush();
process.exit(0);
});Events also batch-flush automatically every 5 events or 10 seconds
(whichever comes first), and best-effort on process.on("beforeExit").
Important caveat: uncaught exceptions still end the process
Registering an uncaughtException handler does not, by itself, make it
safe to keep running — the process is left in an undefined state after an
uncaught exception (this is intentional Node behavior, not a bug). This
SDK's handler captures the error, makes a best-effort attempt to flush it,
and then calls process.exit(1) — the same outcome your process would
have reached anyway, just with the error report actually delivered first
instead of lost to a 10-second timer that never gets the chance to fire.
Do not rely on your application continuing to run after an uncaught
exception; treat this SDK the same way you'd treat any other
crash-reporting tool in that respect.
Zero runtime dependencies
This package has no runtime npm dependencies — it uses Node's built-in
global fetch (available since Node 18) for delivery.
