npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@errorgap/browser

v0.1.1

Published

Browser notifier for Errorgap error tracking.

Readme

@errorgap/browser

Browser notifier for Errorgap. Captures uncaught errors and unhandled promise rejections, parses cross-browser stack traces, and ships notices to an Errorgap server. Includes an opt-in React error boundary.

When production source maps are available, the SDK resolves generated frames to their original files and sends a bounded source excerpt with each frame. This makes application and vendor source immediately available in Errorgap without a repository integration. Missing or inaccessible maps gracefully fall back to the generated stack trace.

Install

npm install @errorgap/browser

Or via CDN (UMD/IIFE bundle exposes window.Errorgap):

<script src="https://cdn.jsdelivr.net/npm/@errorgap/browser"></script>
<script>
  Errorgap.init({
    endpoint:    "https://errorgap.example.com",
    projectSlug: "your-project",
    apiKey:      "flk_...",
  });
</script>

Configure

Initialize as early as possible in the app entry point:

import { Errorgap } from "@errorgap/browser";

Errorgap.init({
  endpoint:    "https://errorgap.example.com",
  projectSlug: "your-project",
  apiKey:      "flk_...",
  environment: "production",
  release:     __APP_VERSION__,
});

init installs window listeners for error and unhandledrejection by default — pass captureGlobals: false to skip.

Manual notification

try {
  await risky();
} catch (err) {
  await Errorgap.notify(err, { context: { component: "checkout" } });
  throw err;
}

notify returns a DeliveryResult ({ status, body } on success, { error } on failure, { queued: true, status: 202 } in async mode, { sampled: true } if dropped by sampleRate). The SDK never throws.

React

import { ErrorgapBoundary } from "@errorgap/browser/react";

export function App() {
  return (
    <ErrorgapBoundary fallback={<p>Something went wrong.</p>}>
      <Routes />
    </ErrorgapBoundary>
  );
}

ErrorgapBoundary accepts a fallback (node or render function) and an onError(error, info) callback.

Configuration reference

| Option | Default | Notes | |---|---|---| | endpoint | (required) | Base URL of your Errorgap instance | | projectSlug | (required) | | | projectId | — | Optional, embedded in payload | | apiKey | — | Sent as x-errorgap-project-key | | environment | "production" | | | release | — | App version; embedded in payload | | sampleRate | 1.0 | Drop notices client-side at this rate | | sourceMaps | true | Resolve frames and source excerpts from deployed source maps | | async | true | Fire-and-forget delivery | | logger | console | Pass null to silence | | filterKeys | ["password", "token", "secret", ...] | Substring, case-insensitive | | captureGlobals | true | Install error and unhandledrejection listeners |

For source mapping, deploy the bundle's referenced .map file and include sourcesContent in it. The generated script and map must be readable by the browser; cross-origin assets therefore need suitable CORS headers. Set sourceMaps: false to disable runtime map fetching.

CORS

The browser sends notices cross-origin, so the Errorgap server must respond with Access-Control-Allow-Origin permitting your site. The SDK sets credentials: "omit" so no cookies cross the boundary.

Graceful flush

await Errorgap.flush();

Use this before navigating away or shutting down a single-page app to make sure queued notices are sent.

Development

npm install
npm test
npm run build

License

MIT.