InvergeDocs

Error monitoring

Crash and exception reporting with fingerprint grouping, release tracking and symbolicated stack traces.

Every SDK reports uncaught errors automatically; you add handled ones where you catch them. Occurrences are grouped into issues by fingerprint, each with counts, affected people, the release it happened in and the session around it.

Automatic capture

SDKWhat is captured automatically
FlutterFlutterError.onError, PlatformDispatcher.onError, uncaught async errors, and native crashes (forwarded on next launch). Wrap your app in runZonedGuarded for the broadest coverage.
JavaScriptBrowser error / unhandledrejection; Node uncaughtException / unhandledRejection.
PHPLaravel: unhandled exceptions (NEXUS_CAPTURE_ERRORS=true). Symfony: an exception subscriber.
Pythonnexus.init() installs excepthooks (main and worker threads); every framework integration reports request/task failures.
.NETUseNexus() middleware reports unhandled request exceptions; the ILogger bridge turns LogError(ex, …) into issues.

Turn it off with autoCaptureErrors: false / capture_errors=False / the NEXUS_ERRORS_ENABLED switch.

Reporting handled errors

try {
  await risky();
} catch (e, st) {
  await context.nexus.errors.capture(e, st, {
    'handled': true,       // false marks it as a crash
    'level': 'error',      // trace | debug | info | warn | error | fatal
    'feature': 'checkout', // everything else becomes context
  });
}

Grouping with fingerprints

Without a fingerprint, an issue is type + message. When a message varies per occurrence — an order id, a user name — that splits one real problem into hundreds of issues. Pin it:

await nexus.Errors.CaptureAsync($"Gateway timeout for order {id}", fingerprint: "gateway-timeout");
await nexus.Errors.CaptureExceptionAsync(ex, fingerprint: ErrorsResource.Fingerprint(ex)); // from the throw site

Issue workflow

In Errors, each issue is open, resolved or ignored:

  • Resolve when a fix ships; reopen it if it comes back.
  • Ignore noise you accept — new occurrences are dropped and not billed.

Every issue shows its stack (throw-site first), the release, the people affected, the context you attached, and a link to the session — and, for server errors recorded by Telescope, View the request journey.

Readable stacks

Native crashes in release builds carry raw addresses or obfuscated names. Upload the matching debug file under Errors → Symbols and frames are symbolicated — matched to the crash by UUID / build-id. Uploading a file later and choosing Re-symbolicate on an issue back-fills its stack.

KindUploadIdentifier
iOSthe .dSYMdSYM UUID (dwarfdump --uuid)
Android nativethe unstripped .soELF build-id (readelf -n)
Android (R8 / ProGuard)mapping.txtthe mapping UUID

For .NET, ship the .pdb next to the assembly to get file and line numbers.

Reference

Flutter · JavaScript · PHP · Python · .NET · REST

On this page