---
title: WorkoutKit
framework: WorkoutKit
role: collection
role_heading: Framework
platforms: [iOS 17.0+, iPadOS 17.0+, Mac Catalyst 17.0+, watchOS 10.0+]
path: workoutkit
---

# WorkoutKit

Create, preview, and sync workout compositions to the Workout app.

## Overview

Overview The WorkoutKit framework provides models and utilities for creating and previewing workouts in your iOS and watchOS apps, and for syncing scheduled workouts to the Workout app on Apple Watch. The framework supports the following types of workouts: You define a workout by initializing one of these workout types. Then you use the workout to create a WorkoutPlan, which provides methods for previewing, syncing, or exporting the plan. To open the plan in Workout on Apple Watch, call openInWorkoutApp(). To export the plan, call the dataRepresentation(as:) method. You can also use WorkoutKit to create and maintain a workout schedule and, with the user’s permission, sync scheduled compositions to Apple Watch. These compositions appear in a dedicated space in the Workout app and include your app’s icon and name. Before you can schedule a workout, you must ask for permission. Get the shared WorkoutScheduler instance, and call its requestAuthorization() method. Then call the schedule(_:at:) method to schedule workouts. To access health data for the workout, see the HealthKit framework.

## Topics

### Essentials

- [Customizing workouts with WorkoutKit](workoutkit/customizing-workouts-with-workoutkit.md)

### Common workouts

- [SingleGoalWorkout](workoutkit/singlegoalworkout.md)
- [PacerWorkout](workoutkit/pacerworkout.md)
- [SwimBikeRunWorkout](workoutkit/swimbikerunworkout.md)

### Custom interval workouts

- [CustomWorkout](workoutkit/customworkout.md)
- [WorkoutStep](workoutkit/workoutstep.md)
- [IntervalBlock](workoutkit/intervalblock.md)
- [IntervalStep](workoutkit/intervalstep.md)
- [WorkoutGoal](workoutkit/workoutgoal.md)
- [WorkoutAlert](workoutkit/workoutalert.md)

### Workout plans and schedules

- [WorkoutPlan](workoutkit/workoutplan.md)
- [ScheduledWorkoutPlan](workoutkit/scheduledworkoutplan.md)
- [WorkoutScheduler](workoutkit/workoutscheduler.md)

### Errors

- [StateError](workoutkit/stateerror.md)
