Compass/Bug Reporter Compass →
Early access · in use across our own estate

Bug reports that arrive already answered.

One line of JavaScript puts a report button on any site. When a tester files something, it comes with the browser, the screen size, the console errors, the failed requests and what they clicked — so nobody has to ask.

<script src="https://bugs.compass.st/v1/widget.js" data-key="pk_…" defer></script>

No package to install, no framework, no build step. It works the same on a React app, a WordPress theme and a legacy admin panel.

What arrives with every report

The tester writes a sentence. The report writes itself.

Page
URL, title, referrer, and your build number if you publish one
Browser
User-agent, engine, platform, language
Screen
Viewport, screen, pixel ratio, orientation, zoom, scroll position
Preferences
Dark mode, reduced motion, forced colours
Clock
Timezone and offset — why "yesterday" means different things
Console
Errors, warnings, uncaught exceptions with stacks, failed rejections
Requests
The last 40 fetch/XHR calls with status and duration
Actions
Recent clicks, field changes and navigations
Network
Connection type, downlink, round-trip time
Server-side
IP, country, network operator, TLS version — added by us, so the page can't fake it
What it never collects: what people type.

The trail records that input[name=cardNumber] changed — never the value. Field contents are where passwords, card numbers and personal data live, and a bug report travels by email and sits in a database. The field name is enough to reproduce it.

Testers can see it too

The panel has a "what gets sent automatically" disclosure, so whoever files a report can read exactly what goes with it before they press send.

How it behaves

Built to sit on software you didn't write

It can't break your page

The whole interface lives in a closed shadow root, so your CSS can't reach in and ours can't reach out. Every hook calls through to the original and returns exactly what it returned.

Screenshots, if they want

The tester can capture the tab, upload an image, or paste one straight into the description. Always their choice, never automatic.

Collects from load, not from click

By the time somebody decides something is wrong, the error already happened. The console and network buffers start filling the moment the page loads.

Locked to your domains

Each project has an origin allowlist and its own rate limits. The key in your page is public by design and can only ever write — it reads nothing back.

Keyboard and screen-reader ready

Opens on a hotkey, traps focus while open, closes on Escape and puts focus back where it came from. Dark mode follows the host page.

Reports expire

Ninety days by default, then they're deleted along with their screenshots. Anything worth keeping gets pinned.

Request access

Tell us what you're testing

We built this for our own projects and we're setting it up for others one at a time — it isn't self-serve yet. Tell us what you're working on and we'll get you a key.