Capture uncaught exceptions and unhandled rejections across your Node services — Express, Fastify, or plain HTTP — and see them grouped in errorgap within seconds.
Add the package with your usual package manager.
npm install @errorgap/nodeCreate an errorgap.ts (or errorgap.js) and import it as early as possible in your entry point, so the SDK is watching before the rest of the app boots.
import { Errorgap } from "@errorgap/node";
Errorgap.init({
endpoint: process.env.ERRORGAP_ENDPOINT!,
projectSlug: process.env.ERRORGAP_PROJECT_SLUG!,
apiKey: process.env.ERRORGAP_API_KEY!,
});init hooks uncaughtException and unhandledRejection for you. Framework adapters ship as subpath exports — add them if you run a web server:
import { errorgapErrorHandler } from "@errorgap/node/express";
app.use(errorgapErrorHandler()); // register lastimport { errorgapPlugin } from "@errorgap/node/fastify";
await app.register(errorgapPlugin);Throw once, with the SDK already imported, to confirm the in-app integration works end to end.
import "./errorgap";
throw new Error("Errorgap test error");Confirm your key and endpoint reach errorgap before wiring anything else — send one event straight to the ingestion API:
curl -sS -X POST "$ERRORGAP_ENDPOINT/api/projects/$ERRORGAP_PROJECT_SLUG/notices" \
-H "content-type: application/json" \
-H "x-errorgap-project-key: $ERRORGAP_API_KEY" \
-d '{"errors":[{"type":"ErrorgapInstallTest","message":"Errorgap install verification"}]}'A 201 with a group_id means ingestion works (202 = received but sampled; 401 = wrong key). Then trigger the test error above through the SDK. Your onboarding screen's Verify step checks the stack off automatically once the first event lands — it polls every three seconds.
Next: the full ingestion API, or browse every SDK.