Browser SDK

On this page 4

The @bughq/sdk package captures uncaught browser errors and unhandled promise rejections. It also exposes manual capture, user, context, and filtering APIs.

Install

bun add @bughq/sdk
import { bughq } from '@bughq/sdk'

bughq.init({
  key: 'bughq_your_project_key',
  host: 'https://bughq.org',
  release: 'web@2026.09.10',
  environment: 'production',
})

You can use a DSN instead:

bughq.init({
  dsn: 'https://bughq_your_project_key@bughq.org/your-project-id',
})

Manual capture

import { captureException, captureMessage, setUser } from '@bughq/sdk'

setUser({ id: 'usr_42', email: 'developer@example.com' })

captureMessage('Checkout retry limit reached', {
  orderId: 'ord_123',
})

try {
  await submitOrder()
}
catch (error) {
  captureException(error, { orderId: 'ord_123' })
}

Client options

OptionDefaultPurpose
keyRequiredPublic project ingest key
hosthttps://bughq.orgHosted or self-hosted collector URL
dsnNoneAlternative to separate key, host, and project values
releaseNoneDeployed application version
environmentproductionDeployment environment
enabledtrueEnables or disables capture
sampleRate1Fraction of eligible events to send, from 0 to 1
dedupeMs5000Client-side duplicate suppression window
beforeSendNoneMutate an event or return null to discard it

Filter before sending

bughq.init({
  key: 'bughq_your_project_key',
  beforeSend(event) {
    if (event.message.includes('ResizeObserver loop'))
      return null

    delete event.extra?.accessToken
    return event
  },
})

beforeSend is the best place to remove secrets or known noise before data leaves the browser.

Open source error tracking, released under the MIT License.