Releases & Health

A release is a version of your code that is deployed to an environment. When you give Sentry information about your releases, you can:

  • Determine issues and regressions introduced in a new release
  • Predict which commit caused an issue and who is likely responsible
  • Resolve issues by including the issue number in your commit message
  • Receive email notifications when your code gets deployed

Bind the Version

Include a release ID (often called a "version") when you configure your client SDK.

The release name cannot:

  • contain newlines, tabulator characters, forward slashes(/) or back slashes(\)
  • be (in their entirety) period (.), double period (..), or space ( )
  • exceed 200 characters

The value can be arbitrary, but we recommend either of these naming strategies:

  • Semantic Versioning: package@version or package@version+build (for example, my.project.name@2.3.12+1234)
    • package is the unique identifier of the project/app (CFBundleIdentifier on iOS, packageName on Android)
    • version is the semver-like structure <major>.<minor?>.<patch?>.<revision?>-<prerelease?> (CFBundleShortVersionString on iOS, versionName on Android)
    • build is the number that identifies an iteration of your app (CFBundleVersion on iOS, versionCode on Android)
  • Commit SHA: If you use a DVCS, we recommend using the identifying hash (for example, the commit SHA, da39a3ee5e6b4b0d3255bfef95601890afd80709). You can let Sentry CLI automatically determine this hash for supported version control systems with sentry-cli releases propose-version.
Copied
using Sentry.Unity;

SentryUnity.Init(o =>
{
    o.Release = "my-project-name@2.3.12";
});

By default the SDK will read from Application.productName and Application.version to create the release in the format $"{Application.productName}@{Application.version}".

How you make the version available to your code is up to you. For example, you could use an environment variable that is set during the build process.

This tags each event with the release value. We recommend that you tell Sentry about a new release before deploying it, as this will unlock a few more features as discussed in our documentation about releases. But if you don’t, Sentry will automatically create a release entity in the system the first time it sees an event with that release ID.

After configuring your SDK, you can install a repository integration or manually supply Sentry with your own commit metadata. Read our documentation about setting up releases for further information about integrations, associating commits, and telling Sentry when deploying releases.

Release Health

Monitor the health of releases by observing user adoption, usage of the application, percentage of crashes, and session data. Release health will provide insight into the impact of crashes and bugs as it relates to user experience, and reveal trends with each new issue through the release details, graphs, and filters.

The SDK will automatically manage the start and end of the sessions when the SDK is initialized.

We mark the session as:

  • Healthy
  • Abnormal
  • Errored: if the SDK captures an event that contains an exception (this includes manually captured errors).
  • Crashed

To enable sending sessions, set the AutoSessionTracking flag to true. When enabled, the .NET SDK is creating a session on application startup and ending it on shut down.

Copied
using Sentry;

// Add this to the SDK initialization callback
options.AutoSessionTracking = true; // default: false

Sentry SDK subscribes to OnApplicationPause and OnApplicationFocus events to track if the application has focus or if it has been put in the background. On resume within AutoSessionTrackingInterval the session will be continued. The default value is 30 seconds. Otherwise, the previous session will be ended and we create a new one.

Copied
using System;
using Sentry;

// Add this to the SDK initialization callback
options.AutoSessionTrackingInterval = TimeSpan.FromSeconds(30);
Help improve this content
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) to suggesting an update ("yeah, this would be better").