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

# Error monitoring

<View title="Developer" />

<View title="Federal docs" />

<View title="EU docs" />

This topic explains how to use LaunchDarkly's observability features to understand and view errors in your application. The **Errors** view displays a list of recorded errors.

## Get started

To instrument your application to capture errors, read the documentation on [Observability SDKs](/docs/sdk/observability). The functionality is available through plugins to the LaunchDarkly JavaScript SDK.

## View errors

To view errors, open the **Telemetry** section and navigate to the **Errors** list.

To review only the errors recorded for one service, use that service's details panel. To learn more, read [Service details](/docs/home/observability/service-details#errors).

To view details about a specific error, click the error in the list. The error details page appears. The page displays details about how many times the error has occurred, how many users have been affected, and when the error was first and most recently observed. The page opens to the **Instances** tab.

### The Instances tab

Use this tab to get an overview of the error's impact and see stack traces on per-instance occurrences. You can see details about a specific occurrence of an error, like what browser the user encountered it in, what URL they had loaded when it occurred, and more.

This tab includes a "Stacktrace" section, which LaunchDarkly populates:

* if your sourcemap is inline, meaning it's shipped as part of your application, or
* if you have uploaded your sourcemap to LaunchDarkly. To learn how to upload your sourcemap, read [Use `ldcli` for uploading sourcemaps](/docs/home/getting-started/ldcli-commands#use-ldcli-for-uploading-sourcemaps), or
* if you have uploaded symbol files for a mobile application. To learn how to upload symbol files, read [Use `ldcli` for uploading symbols](/docs/home/getting-started/ldcli-commands#use-ldcli-for-uploading-symbols).

<Frame caption="A detailed view of an error.">
  <img src="https://mintcdn.com/launchdarkly/YIC2H8XW-fomhquw/images/__LD_UI_no_test/errors-details.png?fit=max&auto=format&n=YIC2H8XW-fomhquw&q=85&s=d580dcf7a52c1ce47bce402d6ebb6f88" alt="A detailed view of an error." width="2016" height="1296" data-path="images/__LD_UI_no_test/errors-details.png" />
</Frame>

### The Metrics tab

An error's **Metrics** tab shows you details about how the error has occurred over time and across different environments. You can see the number of times an error has occurred in a given second, the environments and browsers the error has occurred in, and more.

<Frame caption="A detailed view of an error.">
  <img src="https://mintcdn.com/launchdarkly/YIC2H8XW-fomhquw/images/__LD_UI_no_test/errors-metrics.png?fit=max&auto=format&n=YIC2H8XW-fomhquw&q=85&s=1764e5d0697de59b0e48702065a2e473" alt="A detailed view of an error." width="1912" height="1566" data-path="images/__LD_UI_no_test/errors-metrics.png" />
</Frame>

## Group errors

LaunchDarkly groups errors together based on their error message and stack trace. When your application throws an error, LaunchDarkly finds the closest matching error and adds the new error instance to it.

An error matches if:

* it has the same error message, or
* it has the same top stack frame and three of the next four stack frames are the same, in any order

A stack frame matches if:

* it has the same file name, function name, line number, and column number, or
* it has the same source code and context, if [sourcemaps](#the-instances-tab) are enabled

If there is no match with an existing error, LaunchDarkly creates a new error group.

## Manage errors

As you review errors, you can change their status.

To change the status of an error:

1. Open the **Telemetry** section and navigate to the **Errors** list.
2. Click to select an individual error. New errors start with an "Open" status.
3. Click the status dropdown to change the status:
   * Select a new status from the menu. You can change an error's status to "Ignored" or "Resolved."
   * Select **Snooze** to snooze the error until the specified time.

<Frame caption="The status dropdown menu for an error.">
  <img src="https://mintcdn.com/launchdarkly/YIC2H8XW-fomhquw/images/__LD_UI_no_test/error-status-dropdown.png?fit=max&auto=format&n=YIC2H8XW-fomhquw&q=85&s=f7553e35d089b830d99fbef8f0edcf87" alt="The status dropdown menu for an error." width="390" height="334" data-path="images/__LD_UI_no_test/error-status-dropdown.png" />
</Frame>

You can also configure LaunchDarkly to automatically resolve errors that have not appeared for a given time period. To learn how, read [Observability settings](/docs/home/observability/settings).

If your account uses the Jira Cloud integration, you can create a Jira issue directly from an error to track the work to fix it. To learn how, read [Create a Jira issue from an error](/docs/integrations/jira#create-a-jira-issue-from-an-error).

## Search

To learn more about the search specification for the errors view, read [Search specification](/docs/home/observability/search).

### Search attributes

By default, the observability SDK plugin automatically injects the following attributes to provide additional help with searching for traces:

<table>
  <thead>
    <tr>
      <th>Category</th>
      <th>Attribute</th>
      <th>Description</th>
      <th>Example</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>Device and browser</td>
      <td>`browser`</td>
      <td>Browser the end user was using.</td>
      <td>`Chrome`</td>
    </tr>

    <tr>
      <td />

      <td>`visited_url`</td>
      <td>URL where the error occurred.</td>
      <td>`https://app.example.com/1/errors`</td>
    </tr>

    <tr>
      <td>Error identity</td>
      <td>`event`</td>
      <td>The title of the error.</td>
      <td>`Maximum call stack size exceeded`</td>
    </tr>

    <tr>
      <td />

      <td>`client_id`</td>
      <td>ID associated with the error, added by LaunchDarkly. This can serve as a unique identifier if there is no [context](/docs/home/flags/contexts) associated with the error.</td>
      <td>`DQbQCEHN0FLuwCeW50AeLI0cH6C4`</td>
    </tr>

    <tr>
      <td />

      <td>`secure_session_id`</td>
      <td>Session ID that contains the error.</td>
      <td>`wh1jcuN5F9G6Ra5CKeCjdIk6Rbyd`</td>
    </tr>

    <tr>
      <td />

      <td>`trace_id`</td>
      <td>Trace ID that contains this error.</td>
      <td>`7654ff38c4631d5a51b26f7e637eea3c`</td>
    </tr>

    <tr>
      <td>Error properties</td>
      <td>`status`</td>
      <td>Status of the error group.</td>
      <td>`RESOLVED`</td>
    </tr>

    <tr>
      <td />

      <td>`stack_trace`</td>
      <td>Specifies whether a stack trace is associated with the error. You can refine results with the following additional attributes: `error`, `file_name`, `function_name`, `line_number`.</td>
      <td>`true`</td>
    </tr>

    <tr>
      <td />

      <td>`tag`</td>
      <td>Tag applied to the error.</td>
      <td>`example error`</td>
    </tr>

    <tr>
      <td />

      <td>`type`</td>
      <td>General type of the error.</td>
      <td>`React.ErrorBoundary`</td>
    </tr>

    <tr>
      <td>Feature flag</td>
      <td>`feature_flag`</td>
      <td>Specifies whether the session is associated with a feature flag. You can refine results with the following additional attributes: `context.id`, `contextKeys`, `key`, `provider.name`, `result.reason.inExperiment`, `result.reason.kind`, `result.value`, and `set.id`.</td>
      <td>`true`</td>
    </tr>

    <tr>
      <td>Service and application</td>
      <td>`environment`</td>
      <td>The environment key, based on the SDK credentials used in the [observability SDKs](/docs/sdk/observability).</td>
      <td>`production`</td>
    </tr>

    <tr>
      <td />

      <td>`has_session`</td>
      <td>Whether the error is tied to a session.</td>
      <td>`true`</td>
    </tr>

    <tr>
      <td />

      <td>`service_name`</td>
      <td>Name of the service specified in the SDK plugin. To learn more, read [Versioning sessions and errors](/docs/sdk/features/observability-config-client-side#versioning-sessions-and-errors).</td>
      <td>`private-graph`</td>
    </tr>

    <tr>
      <td />

      <td>`service_version`</td>
      <td>Version of the service specified in the observability SDK plugin. To learn more, read [Versioning sessions and errors](/docs/sdk/features/observability-config-client-side#versioning-sessions-and-errors).</td>
      <td>`e1845285cb360410aee05c61dd0cc57f85afe6da`</td>
    </tr>
  </tbody>
</table>

## Filter

You can filter out errors that you do not want to view in LaunchDarkly. This is useful for errors that you know are not relevant to your application, or that are not actionable. Filtered errors do not count against your errors quota.

### Ingestion filters

You can set up ingestion filters to manage the number of errors recorded in the following ways:

* Filter errors by configuring rules to match particular error attributes. Each rule can be applied to a percentage of incoming errors. For example, you may configure a rule to ingest 1% of errors in the `development` environment. For each error LaunchDarkly receives, it makes a randomized decision that results in storing only 1% of those matching errors.
* Rate limit the maximum number of data points ingested in a one-minute window. For example, you may configure a rate limit of 100 errors per minute. This lets you limit the number of errors recorded in case of a significant spike in use of your application.

You can configure these filters from your project settings. To learn how, read [Observability settings](/docs/home/observability/settings).
