@upgoose/browser
v0.1.3
Published
Upgoose error tracking SDK for browsers
Readme
@upgoose/browser
Lightweight error tracking SDK for browser applications. Captures unhandled exceptions, promise rejections, and manual error reports — with breadcrumbs, PII scrubbing, and zero dependencies.
Install
npm install @upgoose/browserQuick start
import upgoose from '@upgoose/browser';
upgoose.init({
apiKey: 'ug_...', // from your project's DSN
apiUrl: 'https://api.upgoose.app',
environment: 'production',
release: '1.2.3', // optional, enables release tracking
});Errors are captured automatically. That's it.
Manual capture
// Capture an exception
try {
riskyOperation();
} catch (err) {
upgoose.captureException(err);
}
// Capture a message
upgoose.captureMessage("Payment flow failed", "warning");User context
upgoose.setUser({ id: '123', email: '[email protected]' });Tags
upgoose.setTag('team', 'checkout');Configuration
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| apiKey | string | required | API key from your project DSN |
| apiUrl | string | required | Upgoose API base URL |
| environment | string | — | e.g. 'production', 'staging' |
| release | string | — | App version or git SHA |
| sampleRate | number | 1 | 0–1, fraction of events to capture |
| maxBreadcrumbs | number | 50 | Max breadcrumbs retained |
| beforeSend | function | — | Transform or drop events before send |
| captureConsole | boolean | true | Log console.error/warn as breadcrumbs |
| captureClicks | boolean | true | Log click events as breadcrumbs |
| captureNavigation | boolean | true | Log route changes as breadcrumbs |
| captureNetwork | boolean | true | Log fetch/XHR as breadcrumbs |
| captureUnhandled | boolean | true | Global error + rejection handlers |
What gets captured
- Unhandled exceptions (
window.onerror) - Unhandled promise rejections
- Breadcrumbs: clicks, navigation, console, fetch/XHR (with timing)
- Browser context: user agent, viewport, language
- Page URL (sensitive query params automatically redacted)
What doesn't get sent
- No cookies, localStorage, or session data
- No DOM snapshots or session replay
- No performance traces
- Sensitive URL params (
token,key,secret,password,auth,session,jwt) are redacted before leaving the browser
Filtering events
upgoose.init({
apiKey: '...',
apiUrl: '...',
beforeSend(event) {
// Drop events from browser extensions
if (event.stack?.includes('chrome-extension://')) return null;
// Redact custom fields
delete event.context?.sensitiveField;
return event;
},
});Bundle size
~3 KB gzipped. Zero dependencies.
Documentation
Full integration guide: upgoose.app/docs
Switching from another error tracking tool? Upgoose accepts standard error event payloads — migration guide
License
BSD-3-Clause
