Overrun#
An iOS app for trimming and managing HealthKit workouts. Built for the common problem of forgetting to stop recording — leaving you with an 8-hour "run" that wrecks your stats.
Features#
Workout List#
- Workouts grouped by month/year with section headers
- Search by activity type name (case-insensitive)
- Sort by date (default), longest duration, or shortest duration — useful for quickly finding forgot-to-stop workouts or accidental recordings
- Paginated loading (50 at a time) with infinite scroll
- Pull-to-refresh
Workout Detail & Trimming#
- Activity graph showing heart rate, active energy, or distance over time (auto-selects the best available metric)
- Range slider to visually select the portion of the workout to keep
- Dimmed overlay on the graph showing which portions will be trimmed
- Live-updating start time, end time, and duration display
- Activity type picker with 20 supported workout types
- Delete workout with confirmation
Data-Preserving Trim#
When you trim a workout, Overrun creates a new workout and migrates all associated data within the trimmed time range:
- Heart rate, active/basal energy, distance, step count samples
- Running dynamics — speed, power, stride length, vertical oscillation, ground contact time
- VO2 max and physical effort samples
- Workout effort scores (iOS 18+, user-entered only)
- Workout routes (GPS/location data)
- Workout events (laps, segments, etc.)
- Metadata (indoor/outdoor flag, weather, timezone, METs, etc.)
- Configuration — activity type, indoor/outdoor location type, swimming config
If the original workout was created by our app, it is automatically deleted after the copy is saved. If it was created by another app (e.g., Apple Watch), you'll be prompted to delete it manually in Apple Fitness.
Known Limitations#
HealthKit / Apple Platform#
- Cannot modify workouts in place. HealthKit provides no API to change a workout's start/end dates, samples, or metadata. Trimming must create a new workout and delete the original.
- Cannot delete workouts from other apps. HealthKit only allows an app to delete objects it created. Workouts from Apple Watch, Fitness+, or other apps must be deleted manually by the user (e.g., swipe left in Apple Fitness and choose "Delete Workout & Data").
- Estimated workout effort is not copyable.
estimatedWorkoutEffortScoreis computed by Apple's algorithms and cannot be written by third-party apps. It may or may not be recomputed by the system for the new workout. User-entered effort scores (workoutEffortScore, iOS 18+) are migrated viarelateWorkoutEffortSample. - Physical effort samples are system-generated.
physicalEffortsamples are computed by the OS and cannot be created or associated by third-party apps. - Activity icons in Apple Fitness are source-dependent. Even though we correctly set
locationType(e.g.,.indoor) and carry overHKMetadataKeyIndoorWorkout, Apple Fitness may display a generic icon for workouts from third-party sources instead of the specialized icon (e.g., indoor run icon) shown for Apple Watch workouts. - Apple Fitness may crash when sharing copied workouts. This is a known Apple bug where Fitness crashes when trying to view interval details or share workouts created by third-party apps via
HKWorkoutBuilder. This is not specific to Overrun. - No deep link to specific workouts. Apple provides no URL scheme to open a specific workout in Fitness or Health.
activitytoday://opens Fitness to the activity rings view only. - Running dynamics may not be present. Running speed, power, stride length, vertical oscillation, and ground contact time are only recorded by Apple Watch Series 6+ / Ultra with watchOS 9+. Older devices or non-running workouts will not have these samples.
Strava#
- Strava only imports workouts from Apple's native Workout app. Strava checks the
sourceRevisionbundle identifier on each HealthKit workout and only accepts workouts from Apple's Workout app and Apple Fitness+. Workouts written by any third-party app (including Overrun) are intentionally excluded from Strava's HealthKit import list, regardless of how complete the data is. - This is a Strava policy, not a data issue. The workout data we write is fully valid and appears correctly in Apple Health and Apple Fitness.
- Workarounds: Export as .FIT/.TCX/.GPX and upload to Strava via file upload, use bridge apps like HealthFit or RunGap, or use direct Strava API integration.
Requirements#
- iOS 17+
- Xcode 15+
- HealthKit entitlement
Building#
Open WorkoutEditor.xcodeproj in Xcode and run on a device or simulator. The app requires HealthKit authorization to read and write workouts and associated samples.
In debug builds, 200 sample workouts are auto-generated on first launch for testing.