<!--
{
  "availability" : [
    "iOS: 27.0.0 -",
    "iPadOS: 27.0.0 -",
    "macCatalyst: 27.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "AVKit",
  "identifier" : "/documentation/AVKit/AVPlaybackUserInterfaceTimeControllable-50vcy/timeRange",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Property",
  "symbol" : {
    "kind" : "Instance Property",
    "modules" : [
      "AVKit"
    ],
    "preciseIdentifier" : "s:5AVKit39AVPlaybackUserInterfaceTimeControllableP9timeRangeSo06CMTimeH0avp"
  },
  "title" : "timeRange"
}
-->

# timeRange

The time range representing the total duration and bounds of the media content.

```
@MainActor var timeRange: CMTimeRange { get }
```

## Discussion

For on-demand content, `start` is typically zero and `duration` is the total length of the content.

For live content without DVR, set [`timeRange`](/documentation/AVKit/AVPlaybackUserInterfaceTimeControllable-50vcy/timeRange) to a zero-duration range at the current live edge
and advance it as the edge moves; [`seekableTimeRanges`](/documentation/AVKit/AVPlaybackUserInterfaceTimeControllable-50vcy/seekableTimeRanges) must be nil or empty.

For live content with DVR, set [`timeRange`](/documentation/AVKit/AVPlaybackUserInterfaceTimeControllable-50vcy/timeRange) to the available DVR window and advance both `start`
and `end` as the window rolls. Use [`seekableTimeRanges`](/documentation/AVKit/AVPlaybackUserInterfaceTimeControllable-50vcy/seekableTimeRanges) to indicate which portion is seekable.

The duration is always a finite, non-negative value.

---

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)