# Features | Sentry for iOS

Sentry's Apple SDK enables automatic reporting of errors and exceptions, and identifies performance issues in your application.

The SDK builds a crash report that persists to disk. While it attempts to send the report right after the crash, it may not always work because the environment may be unstable at the time of the crash. If this is the case, the report will be sent upon application start.

**Features:**

* Multiple types of errors are captured, including:

  * Mach exceptions
  * Fatal signals
  * Unhandled exceptions
  * C++ exceptions
  * Objective-C exceptions
  * Error messages of fatalError, assert, and precondition
  * [App Hang Detection](https://docs.sentry.io/platforms/apple/guides/ios/configuration/app-hangs.md)
  * [Watchdog Terminations](https://docs.sentry.io/platforms/apple/guides/ios/configuration/watchdog-terminations.md)
  * [HTTP Client Errors](https://docs.sentry.io/platforms/apple/guides/ios/configuration/http-client-errors.md)
  * Start-up crashes. The SDK init waits synchronously for up to 5 seconds to flush out events if the app crashes within 2 seconds after the SDK init.

* Events [enriched](https://docs.sentry.io/platforms/apple/guides/ios/enriching-events/context.md) with device data

* Offline caching when a device is unable to connect; we send a report once we receive another event

* [Breadcrumbs automatically](https://docs.sentry.io/platforms/apple/guides/ios/enriching-events/breadcrumbs.md#automatic-breadcrumbs) captured for

  * Application lifecycle events (`didBecomeActive`, `didEnterBackground`, `viewDidAppear`)
  * Touch events
  * System events (battery level or state changed, memory warnings, device orientation changed, keyboard did show and did hide, screenshot taken, time zone changed or significant time change)
  * Outgoing HTTP requests

* [Release health](https://docs.sentry.io/product/releases/health.md) tracks crash free users and sessions

* Automatic [Performance Tracking](https://docs.sentry.io/platforms/apple/guides/ios/tracing/instrumentation.md)

  * Rendering of UIViewControllers

  * Performance of HTTP requests

  * Distributed tracing

  * [Insights for Mobile Vitals](https://docs.sentry.io/product/insights/mobile/mobile-vitals.md)

    * Cold and warm start
    * Slow and frozen frames
    * [Prewarmed App Start Tracing](https://docs.sentry.io/platforms/apple/guides/ios/tracing/instrumentation/automatic-instrumentation.md#prewarmed-app-start-tracing)

  * Performance of [File I/O](https://docs.sentry.io/platforms/apple/guides/ios/tracing/instrumentation/automatic-instrumentation.md#file-io-tracing) operations

  * Performance of [Core Data](https://docs.sentry.io/platforms/apple/guides/ios/tracing/instrumentation/automatic-instrumentation.md#core-data-tracing) queries

  * [User Interaction](https://docs.sentry.io/platforms/apple/guides/ios/tracing/instrumentation/automatic-instrumentation.md#user-interaction-tracing) transactions for UI clicks

* [Attachments](https://docs.sentry.io/platforms/apple/guides/ios/enriching-events/attachments.md) enrich your event by storing additional files, such as config or log files

* [User Feedback](https://docs.sentry.io/platforms/apple/guides/ios/user-feedback.md) provides the ability to collect user information when an event occurs

* [View Hierarchy](https://docs.sentry.io/platforms/apple/guides/ios/enriching-events/viewhierarchy.md) and [Screenshot](https://docs.sentry.io/platforms/apple/guides/ios/enriching-events/screenshots.md) attachments for errors

* [Source Context](https://docs.sentry.io/platforms/apple/guides/ios/data-management/debug-files/source-context.md) shows snippets of code around the location of stack frames

* [MetricKit](https://docs.sentry.io/platforms/apple/guides/ios/configuration/metric-kit.md) integration
