Reporting app hangs

When your app fails to respond to interactions in real time it causes user frustration and can lead them to abandon your app altogether.

iOS and macOS only. See ANR detection for Android.

An app hang or freeze is a specific instance of the main thread failing to respond in a reasonable amount of time and can be caused by performing CPU intensive work or performing blocking I/O on the main thread. If your app hangs for 10 seconds or longer, it may be terminated by the system watchdog as described in Apple’s documentation.

Bugsnag automatically captures the stack trace of the main thread if an app hang is detected and ends with termination by the system watchdog or being force-quit by the user, helping you to identify the underlying cause. You can also report non-fatal app hangs (i.e. hangs that did not result in the app being killed) by configuring a minimum threshold hang duration.

This documentation is for version 6 of the Bugsnag Unity notifier. If you are using older versions, we recommend upgrading to the latest release using our Upgrade guide. Documentation for the previous release can be found on our legacy pages.

Fatal app hangs

App hangs that end with termination by the system watchdog or being force-quit by the user are considered to be “fatal”. By default Bugsnag reports these types of app hangs.

The system watchdog does not terminate apps launched by Xcode.

Fatal app hangs are sent to your Bugsnag dashboard when the app next launches.

Non-fatal app hangs

To enable reporting of non-fatal app hangs, set the App Hang Threshold configuration option to a number of milliseconds. It can be configured to a minimum of 250 milliseconds (0.25 seconds).

var config = BugsnagSettingsObject.LoadConfiguration();
config.AppHangThresholdMillis = 5000;
Bugsnag.Start(config);

Disabling detection

Bugsnag’s App hang detection can be completely disabled by setting the Enabled Error Types configuration option.

var config = BugsnagSettingsObject.LoadConfiguration();
config.EnabledErrorTypes.AppHangs = false;
Bugsnag.Start(config);