Open source & self-hosted

Bug reporting that
respects your users

Oopsie is a user-initiated bug reporting tool. Nothing leaves the browser until the user clicks "Report a bug."

npm install oopsie-sdk
100%
Privacy-First
<5min
Setup Time
AGPLv3
Open Source
0 KB
Sent Without Consent

Everything you need

A complete bug reporting toolkit that puts your users in control of their data.

User-Initiated

Data only leaves the browser when the user explicitly decides to report a bug. Full GDPR consent built-in.

Self-Hosted

Deploy with Docker Compose in minutes. Your data stays on your infrastructure. No SaaS dependency.

Rich Context

Automatic 5-minute rolling buffer with clicks, navigation, console errors, and failed network requests.

Easy Integration

One-line SDK install with a built-in widget, or use headless mode for full control over the UI.

Webhooks

Send reports to Slack, Discord, or any service. Integrate with your existing workflow instantly.

Dashboard

A clean dashboard to browse, filter, and manage bug reports with timeline replay.

How it works

Three simple steps from integration to actionable bug reports.

1

SDK buffers silently

Clicks, navigation, console errors, and network failures are recorded in a rolling 5-minute in-memory buffer. Nothing is sent.

2

User clicks "Report"

A widget button (or your own trigger) opens a report form. The user describes the issue and gives consent.

3

Data sent to you

The report, timeline, and attachments are sent to your self-hosted Oopsie server. Your data never leaves your infrastructure.

Drop-in integration

Add Oopsie to your app with just a few lines of code.

// Install
npm install oopsie-sdk

// Initialize in your app
import { Oopsie } from 'oopsie-sdk';

Oopsie.init({
  serverUrl: 'https://oopsie.yourapp.com',
  projectKey: 'your-project-key',
});
<!-- Add to your HTML -->
<script src="https://unpkg.com/oopsie-sdk"></script>

<script>
  Oopsie.init({
    serverUrl: 'https://oopsie.yourapp.com',
    projectKey: 'your-project-key',
  });
</script>
// Full control, no widget UI
import { Oopsie } from 'oopsie-sdk';

const client = Oopsie.init({
  serverUrl: 'https://oopsie.yourapp.com',
  projectKey: 'your-project-key',
  widget: false,
});

// Trigger from your own button
myButton.addEventListener('click', () => {
  client.sendReport({ message: 'Bug found!' });
});

Explore the docs

Jump straight to what you need.

Ready to get started?

Deploy Oopsie in minutes and start collecting meaningful bug reports from your users.