<!--
{
  "availability" : [
    "watchOS: 3.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "WatchKit",
  "identifier" : "/documentation/WatchKit/WKSnapshotRefreshBackgroundTask",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "WatchKit"
    ],
    "preciseIdentifier" : "c:objc(cs)WKSnapshotRefreshBackgroundTask"
  },
  "title" : "WKSnapshotRefreshBackgroundTask"
}
-->

# WKSnapshotRefreshBackgroundTask

A background task used to update your app’s user interface in preparation for a snapshot.

```
class WKSnapshotRefreshBackgroundTask
```

## Overview

Using the methods of [`WKSnapshotRefreshBackgroundTask`](/documentation/WatchKit/WKSnapshotRefreshBackgroundTask), you can push, pop, or present other interface controllers, and then update the content of the desired interface controller. The system automatically takes a snapshot of your user interface as soon as this task completes.

Don’t subclass or create instances of this class. Instead, schedule a background snapshot refresh task by calling [`scheduleSnapshotRefresh(withPreferredDate:userInfo:scheduledCompletion:)`](/documentation/WatchKit/WKExtension/scheduleSnapshotRefresh(withPreferredDate:userInfo:scheduledCompletion:)). When the system triggers this task, it launches your app in the background, instantiates a [`WKSnapshotRefreshBackgroundTask`](/documentation/WatchKit/WKSnapshotRefreshBackgroundTask) object, and passes the task object to your app delegate’s [`handle(_:)`](/documentation/WatchKit/WKApplicationDelegate/handle(_:)-4vdjo) method.

> Note:
> In watchOS 9 and later, SwiftUI Background tasks are the preferred way to handle background tasks and interactions. For more information, <doc://com.apple.documentation/documentation/SwiftUI/Scene/backgroundTask(_:action:)>.

Background snapshot tasks are budgeted. In general, the system performs approximately one task per hour for each app in the dock (including the most recently used app). This budget is shared among all apps on the dock. The system performs multiple tasks an hour for each app with a complication on the active watch face. This budget is shared among all complications on the watch face. After you exhaust the budget, the system delays your requests until more time becomes available.

The system automatically schedules background snapshot request tasks when:

- Your device starts up
- Your app updates the complication timeline
- The user interacts with one of the apps notifications
- The app transitions from the foreground to the background
- One hour passes after the user’s last interaction with the app, then the `returnToGlanceableUI` property is set to <doc://com.apple.documentation/documentation/Swift/true>

These requests don’t cancel or replace any of your scheduled requests.

## Topics

### Completing the background task

[`setTaskCompleted(restoredDefaultState:estimatedSnapshotExpiration:userInfo:)`](/documentation/WatchKit/WKSnapshotRefreshBackgroundTask/setTaskCompleted(restoredDefaultState:estimatedSnapshotExpiration:userInfo:))

Marks the task as complete.

### Instance properties

[`reasonForSnapshot`](/documentation/WatchKit/WKSnapshotRefreshBackgroundTask/reasonForSnapshot)

The reason for taking the upcoming snapshot.

[`WKSnapshotReason`](/documentation/WatchKit/WKSnapshotReason)

The reason for a background snapshot task.

[`returnToDefaultState`](/documentation/WatchKit/WKSnapshotRefreshBackgroundTask/returnToDefaultState)

A Boolean value indicating that the app should return to its default state.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)