geniusDebug speaks the Sentry envelope protocol, so any Sentry SDK works against it unchanged —
you only repoint the DSN. If your app already uses @sentry/*, integration is a config change, not a
rewrite. Nothing about geniusDebug may affect your app’s performance: the SDK is async/best-effort and
gated by a remote kill switch.
In geniusDebug → register (first user) or Settings → your project shows a DSN:
https://<publicKey>@<ingest-host>/<projectId>
The public key is write-only — it can send events but cannot read data. Safe to embed in a client bundle.
@sentry/nextjs) — the v1 targetIf your Next.js app already uses @sentry/nextjs, change three things.
// sentry.client.config.ts / sentry.server.config.ts / sentry.edge.config.ts
Sentry.init({
dsn: process.env.NEXT_PUBLIC_SENTRY_DSN, // = the geniusDebug DSN above
tunnelRoute: '/monitoring', // first-party forward, beats ad-blockers
environment: process.env.NEXT_PUBLIC_ENV,
release: process.env.VERCEL_GIT_COMMIT_SHA,
tracesSampleRate: 0.1, // conservative — protect Core Web Vitals
replaysOnErrorSampleRate: 1.0, // on-error replay only
replaysSessionSampleRate: 0,
});
geniusDebug uploads maps itself, so remove Sentry’s org/project/authToken:
// next.config.mjs
export default withSentryConfig(nextConfig, {
sourcemaps: { disable: true }, // no Sentry SaaS upload
release: { create: false },
tunnelRoute: '/monitoring',
// do NOT set org / project / authToken
});
taskip-integration/app/monitoring/route.ts.!!! tip “Drop-in reference”
The whole wiring (client/server/edge config, instrumentation, global-error, tunnel route, remote
kill switch, withSentryConfig) is in taskip-integration/ — copy it in and adjust paths.
Because ingest is envelope-based, just set the SDK’s DSN to a geniusDebug project DSN. No tunnel, no source maps for server platforms.
// @sentry/node (a Node/Nest service)
Sentry.init({ dsn: process.env.SENTRY_DSN, tracesSampleRate: 0.1 });
// Laravel (sentry/sentry-laravel) — v2, but the backend already supports it
// .env: SENTRY_LARAVEL_DSN=https://<publicKey>@<ingest-host>/<projectId>
geniusDebug’s pipeline is platform-agnostic: PHP/Node events group, get culprits, and render like JS events; symbolication is skipped for non-JS (they already have real file paths). Laravel is scheduled for v2 (SRS §12) — client-config only, no backend change.
Point your SDK gate at geniusDebug’s config endpoint to disable/throttle it without a redeploy:
NEXT_PUBLIC_GENIUS_CONFIG_URL=https://<ingest-host>/api/<projectId>/config?sentry_key=<publicKey>
Returns { enabled, tracesSampleRate, replaysOnErrorSampleRate, replaysSessionSampleRate }. If it’s
unreachable the SDK stays silent and never throws into your app. Flip Settings → Disable ingest and
your app stops sending. Reference: taskip-integration/lib/genius-remote-config.ts.
NEXT_PUBLIC_SENTRY_DSN (and any server DSN) to the geniusDebug DSN.authToken / org / project and set sourcemaps.disable: true.