<!--
{
  "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/CustomWorkout",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "WorkoutKit"
    ],
    "preciseIdentifier" : "s:10WorkoutKit06CustomA0V"
  },
  "title" : "CustomWorkout"
}
-->

# CustomWorkout

A workout that includes a repeating series of work and recovery steps.

```
struct CustomWorkout
```

## Topics

### Creating custom workouts

[`init(activity: HKWorkoutActivityType, location: HKWorkoutSessionLocationType, displayName: String?, warmup: WorkoutStep?, blocks: [IntervalBlock], cooldown: WorkoutStep?)`](/documentation/WorkoutKit/CustomWorkout/init(activity:location:displayName:warmup:blocks:cooldown:))

Create a new custom workout.

[`static func supportsActivity(HKWorkoutActivityType) -> Bool`](/documentation/WorkoutKit/CustomWorkout/supportsActivity(_:))

Returns a Boolean value that indicates whether the system supports the specified workout activity .

[`static func supportsAlert(any WorkoutAlert, activity: HKWorkoutActivityType, location: HKWorkoutSessionLocationType) -> Bool`](/documentation/WorkoutKit/CustomWorkout/supportsAlert(_:activity:location:))

Returns a Boolean value that indicates whether the system supports the specified alert for the given activity type and location.

[`static func supportsGoal(WorkoutGoal, activity: HKWorkoutActivityType, location: HKWorkoutSessionLocationType) -> Bool`](/documentation/WorkoutKit/CustomWorkout/supportsGoal(_:activity:location:))

Returns a Boolean value that indicates whether the system supports the specified goal for the given activity type and location.

### Accessing workout data

[`var displayName: String?`](/documentation/WorkoutKit/CustomWorkout/displayName)

The name that the system uses when displaying the workout.

[`var activity: HKWorkoutActivityType`](/documentation/WorkoutKit/CustomWorkout/activity)

The type of activity performed during the workout.

[`var location: HKWorkoutSessionLocationType`](/documentation/WorkoutKit/CustomWorkout/location)

The workout session location for the workout.

[`var warmup: WorkoutStep?`](/documentation/WorkoutKit/CustomWorkout/warmup)

The warmup step (if any).

[`var blocks: [IntervalBlock]`](/documentation/WorkoutKit/CustomWorkout/blocks)

A block of repeating work and recovery steps.

[`var cooldown: WorkoutStep?`](/documentation/WorkoutKit/CustomWorkout/cooldown)

The cooldown step (if any).

### Comparing workouts

## Relationships

### Conforms To

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

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

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

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

---

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)