Skip to content

Conversation

ryan953
Copy link
Member

@ryan953 ryan953 commented Sep 30, 2025

DESCRIBE YOUR PR

Adding docs to describe the new Session status type: unhandled.

This status is only for Session data, not Issues!

We've basically taken the existing crashed status and split it into two parts:

  • A crashed session comes from an exception that was not handled by the application, and the language/framework did not handle it either resulting in a crash.
  • An unhandled session comes from an exception that was not handled by the application, but the language/framework does not allow the application to exit/crash/terminate/etc.

SDK Maintainers

As SDKs adopt this new status they will probably want to update pages like https://docs.sentry.io/platforms/javascript/configuration/releases/ to include a note about the new status, and the version when it was first supported.

Regardless of the SDK version, self-serve users will need server v25.9.0 to support unhandled properly.

IS YOUR CHANGE URGENT?

Help us prioritize incoming PRs by letting us know when the change needs to go live.

  • Urgent deadline (GA date, etc.):
  • Other deadline:
  • None: Not urgent, can wait up to 1 week+

SLA

  • Teamwork makes the dream work, so please add a reviewer to your PRs.
  • Please give the docs team up to 1 week to review your PR unless you've added an urgent due date to it.
    Thanks in advance for your help!

PRE-MERGE CHECKLIST

Make sure you've checked the following before merging your changes:

  • Checked Vercel preview for correctness, including links
  • PR was reviewed and approved by any necessary SMEs (subject matter experts)
  • PR was reviewed and approved by a member of the Sentry docs team

Copy link

vercel bot commented Sep 30, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
develop-docs Ready Ready Preview Comment Sep 30, 2025 5:32pm
sentry-docs Ready Ready Preview Comment Sep 30, 2025 5:32pm

Copy link

codecov bot commented Sep 30, 2025

Bundle Report

Changes will decrease total bundle size by 15 bytes (-0.0%) ⬇️. This is within the configured threshold ✅

Detailed changes
Bundle name Size Change
sentry-docs-client-array-push 10.13MB -6 bytes (-0.0%) ⬇️
sentry-docs-server-cjs 12.9MB -9 bytes (-0.0%) ⬇️

Affected Assets, Files, and Routes:

view changes for bundle: sentry-docs-client-array-push

Assets Changed:

Asset Name Size Change Total Size Change (%)
static/chunks/pages/_app-*.js -3 bytes 882.71kB -0.0%
static/chunks/8321-*.js -3 bytes 425.87kB -0.0%
static/1ypuHrdhNystABxFfgeX5/_buildManifest.js (New) 684 bytes 684 bytes 100.0% 🚀
static/1ypuHrdhNystABxFfgeX5/_ssgManifest.js (New) 77 bytes 77 bytes 100.0% 🚀
static/sqlxXs5DR398tL4XU7efp/_buildManifest.js (Deleted) -684 bytes 0 bytes -100.0% 🗑️
static/sqlxXs5DR398tL4XU7efp/_ssgManifest.js (Deleted) -77 bytes 0 bytes -100.0% 🗑️
view changes for bundle: sentry-docs-server-cjs

Assets Changed:

Asset Name Size Change Total Size Change (%)
1729.js -3 bytes 1.78MB -0.0%
../instrumentation.js -3 bytes 1.1MB -0.0%
9523.js -3 bytes 1.08MB -0.0%

- a complete crash of the application occurred (crash to desktop, termination)
- a user feedback dialog is surfaced to the user. After this, the SDK must start a new session as if it fully crashed.;
- a complete crash of the application occurred (crash to desktop, termination).
- a user feedback dialog is surfaced to the user. After this, the SDK must start a new session as if it fully crashed.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- a user feedback dialog is surfaced to the user. After this, the SDK must start a new session as if it fully crashed.
- a crash report user feedback dialog is surfaced to the user. After this, the SDK must start a new session as if it fully crashed.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this specific to sentry's dialog?

### Crashed, Abnormal vs Errored
### Crashed, Unhandled, Abnormal vs Errored

A session is supposed to transition to `crashed` when it encountered an a full
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
A session is supposed to transition to `crashed` when it encountered an a full
A session is supposed to transition to `crashed` when it encountered a full

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
A session is supposed to transition to `crashed` when it encountered an a full
A session is supposed to transition to `crashed` when it encounters a full

the user encountered an error dialog. For server environments where we create sessions
for every incoming request, `crashed` is basically like status code `500` internal server error.
So if there is an unhandled error happening during the request, the session should be `crashed`.
Note that `unhandled` became supported on the server in v25.9.0, prior to that
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Note that `unhandled` became supported on the server in v25.9.0, prior to that
Note that `unhandled` became supported on the server in v25.9.0. Prior to that,


Abnormal are sessions of which their fate is unknown. For desktop applications, for instance, it makes sense to transition a session to abnormal if it was stored
but the exit of the application was not observed but also did not crash. These are situations where the user forced the app to close via the
`abnormal` are sessions of which their fate is unknown. For desktop
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
`abnormal` are sessions of which their fate is unknown. For desktop
`abnormal` are sessions where their fate is unknown. For desktop

but the exit of the application was not observed but also did not crash. These are situations where the user forced the app to close via the
`abnormal` are sessions of which their fate is unknown. For desktop
applications, for instance, it makes sense to transition a session to `abnormal`
if it was stored but the exit of the application was not observed but also did
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
if it was stored but the exit of the application was not observed but also did
if it was stored but application exit was not observed but also did

![Sort By: Active Users dropdown](./img/release_active_users.png)

## Crashes
## Crashes & Unhandled
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Crashes & Unhandled
## Crashes & Unhandled Errors

maybe?

## Crashes & Unhandled

A _crash_ is when the application had an explicit unhandled error or hard crash. You'll typically be able to view the corresponding issue that captures this event in [sentry.io](https://sentry.io), and errors that did not cause the end of the application should not be included. To search for crash events in **Discover** or on the **Issues** page, filter by `error.unhandled:true`.
A _crash_ is when the application had a hard crash, while _unhandled_ is when an error that wasn't explicitly handled by the application. You'll typically be able to view the corresponding issue that captures this event in [sentry.io](https://sentry.io), and errors that did not cause the end of the application should not be included. To search for crash events in **Discover** or on the **Issues** page, filter by `error.unhandled:true`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
A _crash_ is when the application had a hard crash, while _unhandled_ is when an error that wasn't explicitly handled by the application. You'll typically be able to view the corresponding issue that captures this event in [sentry.io](https://sentry.io), and errors that did not cause the end of the application should not be included. To search for crash events in **Discover** or on the **Issues** page, filter by `error.unhandled:true`.
A _crash_ is when the application had a hard crash, while _unhandled_ is an error that wasn't explicitly handled by the application. You'll typically be able to view the corresponding issue that captured the crashed event in [sentry.io](https://sentry.io); errors that did not cause the end of the application should not be included. To search for crash events in **Discover** or on the **Issues** page, filter by `error.unhandled:true`.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this paragraph is a bit unclear now that unhandled was added

A _crash_ is when the application had an explicit unhandled error or hard crash. You'll typically be able to view the corresponding issue that captures this event in [sentry.io](https://sentry.io), and errors that did not cause the end of the application should not be included. To search for crash events in **Discover** or on the **Issues** page, filter by `error.unhandled:true`.
A _crash_ is when the application had a hard crash, while _unhandled_ is when an error that wasn't explicitly handled by the application. You'll typically be able to view the corresponding issue that captures this event in [sentry.io](https://sentry.io), and errors that did not cause the end of the application should not be included. To search for crash events in **Discover** or on the **Issues** page, filter by `error.unhandled:true`.

Starting with v25.9.0, Sentry differentiates between crashes and unhandled errors and both are counted separately. Check your SDK release notes and update to the latest version to support _unhandled_ session status.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Starting with v25.9.0, Sentry differentiates between crashes and unhandled errors and both are counted separately. Check your SDK release notes and update to the latest version to support _unhandled_ session status.
Starting with v25.9.0, Sentry differentiates between crashes and unhandled errors, and both are counted separately. Check your SDK release notes and update to the latest version to support _unhandled_ session status.


One common misconception is that session data is derived from issues, and that the numbers can be cross referenced. This is not the case.

Session data is unconditionally sent from SDKs when the integration is enabled (it is enabled by default in most SDKs). This dataset tracks every session as it is started and ended, and includes only basic tags related to release and environment. In contrast, Issues are derived from error events, which are subject to [inbound filters](/concepts/data-management/filtering/) and [sampling](/platform-redirect/?next=/configuration/sampling/) and [quota](/pricing/quotas/) limits.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Session data is unconditionally sent from SDKs when the integration is enabled (it is enabled by default in most SDKs). This dataset tracks every session as it is started and ended, and includes only basic tags related to release and environment. In contrast, Issues are derived from error events, which are subject to [inbound filters](/concepts/data-management/filtering/) and [sampling](/platform-redirect/?next=/configuration/sampling/) and [quota](/pricing/quotas/) limits.
Session data is unconditionally sent from SDKs when the integration is enabled (it is enabled by default in most SDKs). This dataset tracks every session start and end, and includes only basic tags related to release and environment. In contrast, issues are derived from error events, which are subject to [inbound filters](/concepts/data-management/filtering/), [sampling](/platform-redirect/?next=/configuration/sampling/), and [quota](/pricing/quotas/) limits.


### Unhandled

The application had an explicit error that was not explicitly [unhandled](#crashes--unhandled). The language or framework prevented the process from terminating.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should it say "handled"?

sessions ending in `exited` will be considered for session durations.
A session is allowed to go to `exited` even if errors occurred.

- `unhandled`: a session should be reported as unhandled under the following cases:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- `unhandled`: a session should be reported as unhandled under the following cases:
- `unhandled`: a session should be reported as unhandled in the following cases:

It's acceptable to transition to the `crashed` state if the user encountered an
error dialog.
For server environments where we create sessions for every incoming request,
`unhandled` is basically like status code `500` internal server error.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
`unhandled` is basically like status code `500` internal server error.
`unhandled` is basically like status code `500 Internal Server Error`.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants