<!--
{
  "availability" : [
    "iOS: 17.0.0 -",
    "iPadOS: 17.0.0 -",
    "macCatalyst: 18.0.0 -",
    "macOS: 15.0.0 -",
    "watchOS: 10.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "WorkoutKit",
  "identifier" : "/documentation/WorkoutKit/WorkoutScheduler",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "WorkoutKit"
    ],
    "preciseIdentifier" : "s:10WorkoutKit0A9SchedulerC"
  },
  "title" : "WorkoutScheduler"
}
-->

# WorkoutScheduler

An object for scheduling and managing workouts.

```
final class WorkoutScheduler
```

## Topics

### Accessing the scheduler

[`static let shared: WorkoutScheduler`](/documentation/WorkoutKit/WorkoutScheduler/shared)

A shared instance of the workout scheduler.

[`static var isSupported: Bool`](/documentation/WorkoutKit/WorkoutScheduler/isSupported)

A Boolean value that indicates whether the current device supports scheduled workouts.

[`func requestAuthorization() async -> WorkoutScheduler.AuthorizationState`](/documentation/WorkoutKit/WorkoutScheduler/requestAuthorization())

Requests authorization to schedule workouts.

[`var authorizationState: WorkoutScheduler.AuthorizationState`](/documentation/WorkoutKit/WorkoutScheduler/authorizationState-swift.property)

The workout scheduler’s authorization status.

[`enum AuthorizationState`](/documentation/WorkoutKit/WorkoutScheduler/AuthorizationState-swift.enum)

The workout scheduler’s authorization status.

### Scheduling workouts

[`func schedule(WorkoutPlan, at: DateComponents) async`](/documentation/WorkoutKit/WorkoutScheduler/schedule(_:at:))

Schedules the provided workout at the specified date.

### Managing scheduled workouts

[`var scheduledWorkouts: [ScheduledWorkoutPlan]`](/documentation/WorkoutKit/WorkoutScheduler/scheduledWorkouts)

An array of all the workouts scheduled by your app.

[`static let maxAllowedScheduledWorkoutCount: Int`](/documentation/WorkoutKit/WorkoutScheduler/maxAllowedScheduledWorkoutCount)

The maximum number of workouts your app can schedule.

[`func markComplete(WorkoutPlan, at: DateComponents) async`](/documentation/WorkoutKit/WorkoutScheduler/markComplete(_:at:))

Marks the workout as complete.

[`func remove(WorkoutPlan, at: DateComponents) async`](/documentation/WorkoutKit/WorkoutScheduler/remove(_:at:))

Removes the scheduled workout.

[`func removeAllWorkouts() async`](/documentation/WorkoutKit/WorkoutScheduler/removeAllWorkouts())

Removes all scheduled workouts.

## Relationships

### Conforms To

[`SendableMetatype`](/documentation/Swift/SendableMetatype)

[`Sendable`](/documentation/Swift/Sendable)

---

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)