error-queue

Minimal script for capturing and storing uncaught global errors for later processing.

Usage no npm install needed!

<script type="module">
  import errorQueue from 'https://cdn.skypack.dev/error-queue';
</script>

README

error-queue

Minimal script for capturing and storing uncaught global errors for later processing.

Motivation

For performance reasons you might want to load and start your error-tracking solution asynchronously. At the same time it's good to track the most crucial errors that happen before the full implementation is loaded and initialized - and this is what errorQueue does.

Inspired by and based on Sentry Loader.

How it works

The script sets tiny onerror and onunhandledrejection handlers that store the arguments they have been called with in a global queue for later processing.

Original handlers for these events are still called (and can be restored after the errorQueue is no longer needed).

Usage

Start capturing

Include the script at the top of your page (preferably with an inline <script> tag).

Restore and process

Call window.errorQueue.r() to restore original event handlers.

Use window.errorQueue as an array to get the captured exceptions. Each element is a pair: [handlerName, arguments].

// Restore the original handlers
window.errorQueue.r();

// Process captured errors with your handlers
window.errorQueue.forEach(([handlerName, arguments]) => {
  if (handlerName === 'onerror') {
    yourOnErrorHandler.apply(window, arguments);
  }
  if (handlerName === 'onunhandledrejection') {
    yourOnUnhandledRejectionHandler.apply(window, arguments);
  }
});

License

MIT