@errorgap/nextjs
v0.1.0
Published
Next.js SDK for Errorgap error tracking (client and server).
Maintainers
Readme
@errorgap/nextjs
Next.js SDK for Errorgap. It reports both server
(Route Handlers, Server Components, middleware, server actions) and client
(browser/React) errors, wiring
@errorgap/node and
@errorgap/browser into Next.js.
Works with the Next.js App Router (13.4+; onRequestError requires 15+).
Install
npm install @errorgap/nextjsConfigure
Set the connection env vars. The client build needs the NEXT_PUBLIC_ copies
(the ingestion key is submit-only — safe in the browser, like a Sentry DSN):
# .env
ERRORGAP_ENDPOINT=https://errorgap.example.com
ERRORGAP_PROJECT_SLUG=my-project
ERRORGAP_API_KEY=flk_...
NEXT_PUBLIC_ERRORGAP_ENDPOINT=https://errorgap.example.com
NEXT_PUBLIC_ERRORGAP_PROJECT_SLUG=my-project
NEXT_PUBLIC_ERRORGAP_API_KEY=flk_...Server errors — instrumentation.ts
// instrumentation.ts (project root or src/)
export { register, onRequestError } from "@errorgap/nextjs";register() initializes the notifier at server startup; onRequestError
(Next 15+) reports every unhandled server error with its route and method.
Client errors — instrumentation-client.ts
// instrumentation-client.ts (Next 15.3+)
import { initErrorgapClient } from "@errorgap/nextjs/client";
initErrorgapClient();This hooks window errors and unhandled rejections with source-map-resolved
stack traces.
React render errors — error.tsx / global-error.tsx
App Router error boundaries catch render errors that never reach
window.onerror. Report them:
"use client";
import { useCaptureError } from "@errorgap/nextjs/react";
export default function GlobalError({ error, reset }: { error: Error; reset: () => void }) {
useCaptureError(error);
return (
<html>
<body>
<button onClick={() => reset()}>Try again</button>
</body>
</html>
);
}Manual reporting
import { Errorgap } from "@errorgap/nextjs"; // server
// import { Errorgap } from "@errorgap/nextjs/client"; // client
await Errorgap.notify(error, { context: { component: "Checkout" } });Notes
- Server capture targets the Node.js runtime; it no-ops on the Edge runtime.
apiKeyis an ingestion-only key and may be exposed viaNEXT_PUBLIC_.
License
MIT.
