> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appsignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# AppSignal for JavaScript

AppSignal has amazing support for catching errors from front-end JavaScript applications and sending them to AppSignal. An `npm` library for catching JavaScript errors is available for that.

<Warning>
  **NOTE:** Uncaught exceptions are **not** captured by default. [Read this
  section to find out why](/front-end/error-handling#uncaught-exceptions).
  You can enable this functionality by enabling the
  [`plugin-window-events`](/front-end/plugins/plugin-window-events) plugin.
</Warning>

## Supported browsers

This package can be used in any ECMAScript 5 compatible browser. We aim for compatibility down to Internet Explorer 9 [(roughly 0.22% of all browsers used today)](https://www.w3counter.com/globalstats.php). All browsers older than this can only supported on a “best effort” basis, and full functionality cannot be guaranteed.

When developing, don’t forget to check browser support on [Can I Use?](https://caniuse.com/) and the [ES6 Compatibility Table](https://compat-table.github.io/compat-table/es6/), and provide the appropriate polyfills or fallbacks. **In a small percentage of browsers, a `Promise` polyfill may be required to use this library.**

## Other supported environments

`@appsignal/javascript` is more than just a front-end library! It's also designed to work in a variety of other JavaScript runtimes and use-cases where the `@appsignal/nodejs` library may not be a viable choice. `@appsignal/javascript` supports:

<div style={{ display: "flex", flexDirection: "column", gap: "0.6rem", marginTop: "1rem", marginBottom: "1.25rem" }}>
  {[
      "Electron apps",
      "Short-lived processes",
      "Serverless functions",
      "Statically generated apps",
      "React Native/Expo apps",
    ].map((label) => (
      <div key={label} style={{ display: "flex", alignItems: "center", gap: "0.6rem" }}>
        <span style={{
          display: "inline-flex",
          alignItems: "center",
          justifyContent: "center",
          width: "1.4rem",
          height: "1.4rem",
          borderRadius: "0.35rem",
          background: "rgba(34,197,94,0.15)",
          color: "#16a34a",
          fontWeight: 700,
          fontSize: "0.85rem",
          lineHeight: 1,
        }}>✓</span>
        <span>{label}</span>
      </div>
    ))}
</div>
