Skip to content

The viewer

The viewer is the web UI at /. It is server-rendered (templ + htmx), keeps all state in the URL, and is issue-centric: you move from an overview to a list of issues, into one issue, then into individual events.

Protect it with VIEWER_PASSWORD (HTTP basic auth, any username) before exposing it.

Home

/ lists projects with their event counts and lets you create one.

Overview

/p/{slug} — totals for the selected window, an events timeline, the latest release with its crash-free rate, and the top issues. Charts are inline SVG rendered by the server.

Every page carries the same filter bar: time window, release, environment, and any CUSTOM_TAGS you configured. Filters live in the query string, so a filtered view is a shareable link.

Issues

/p/{slug}/issues — the issue list. Columns: title (error type + location), level, event count, affected users, first and last seen, a sparkline of the last 24 hours, and the first/last release.

Filter by status (unresolved, triaged, resolved, regression, ignored), release, and free-text search (q= matches title and location). Select rows to change status in bulk.

Keyboard triage

KeyAction
j / kNext / previous issue
rMark resolved
iIgnore
tMark triaged
xToggle selection

A banner appears when new issues arrive while the page is open (server-sent events from /p/{slug}/stream); it does not reload the list under you.

Issue

/p/{slug}/issues/{fingerprint} — one issue:

  • Stack trace of the latest event, symbolicated when symbol files are available; in-app frames highlighted, SDK and system frames collapsed.
  • Breakdown by release, device model, OS version, environment.
  • Events belonging to the issue, paged, with the same filters.
  • Status control and the release the issue was resolved on.

Statuses and what they mean are in Issues & grouping.

Events

/p/{slug}/events — every stored event regardless of grouping, including messages and non-exception events that are not part of any issue. Filters: level, release, environment, platform, user_id, tags.

/p/{slug}/events/{id} — the full event: exception chain, symbolicated and original frames, breadcrumbs, tags, user, contexts, and the raw payload.

Releases

/p/{slug}/releases — releases seen in the window with sessions, crash-free rate, new issues introduced, and first/last seen. /p/{slug}/releases/{version} drills into one. See Releases & release health.

Settings

/p/{slug}/settings:

  • DSN and Rotate key
  • Platform label
  • Sampling: sample_keep_first, sample_rate, daily_quota
  • Alerts: enable each detector, add webhook / Telegram channels
  • Symbols: upload and delete symbol files

Everything the viewer can do, the API can do too; the viewer is a client of the same store.

Theme

Light and dark follow the OS setting; toggle from the header. The preference is kept in the browser.

Released under the MIT License.