Display app-specific data in the complications on the clock face.


Use the ClockKit framework to implement a complication interface for your app. Complications are small interface elements that appear on the clock face and provide quick access to frequently used data. Apps provide data in advance of when it’s needed and specify how they want the data displayed. The system updates the appearance of your complication at the time you specify.

Because you specify complication data in advance, you use templates to tell the system how you want that data displayed. ClockKit provides templates for each complication size and style that can be displayed on the clock face. Templates let you arrange text and images. There are also templates for displaying completion rings and other types of formatted content.



Your data source object provides templates filled with app-specific data that ClockKit uses to display complications on the watch face.

Adding a Complication to Your watchOS App

Build a better watchOS experience using complications.

Creating and Updating Complications

Build complications that display current information from your app.

Displaying Essential Information on a Watch Face

Display essential information on a watch face by implementing complications in a watch app.

protocol CLKComplicationDataSource

A protocol that communicates with ClockKit, providing information about your complication.


Manage your complications when they are active on the watch face, and use timeline entries to specify the data that you want to display.

class CLKComplicationServer

An object that manages the active complications for a given app.

class CLKComplication

Metadata about one of your custom complications.

class CLKComplicationTimelineEntry

A container for the complication template object to display and the time at which to display it.

Data Providers

Data providers manage the data you display in a complication, ensuring that it’s accurate at the time it’s displayed.

class CLKDateTextProvider

A formatted string that conveys a date without any time information.

class CLKImageProvider

An image displayed by a complication.

class CLKFullColorImageProvider

A full-color image displayed by a complication.

class CLKRelativeDateTextProvider

A formatted string that conveys the difference in time between the current date and a date that you specify.

class CLKSimpleTextProvider

A single line of text to display in your complication interface.

class CLKTextProvider

The common behavior for displaying text-based data in a complication.

class CLKTimeIntervalTextProvider

A formatted time range.

class CLKTimeTextProvider

A formatted time value.

class CLKSimpleGaugeProvider

A gauge that shows a fractional value.

class CLKTimeIntervalGaugeProvider

A gauge that tracks time intervals.

class CLKGaugeProvider

An abstract superclass that provides all the common behaviors for the gauge providers.

let CLKSimpleGaugeProviderFillFractionEmpty: Float

A fill value indicating an empty gauge.

enum CLKGaugeProviderStyle

Visual styles available for gauges.


Draw complications using templates that define the layout and appearance of the data from the timeline. Each complication family offers a variety of templates for displaying your data.

Circular Small

Use circular small templates to display content in the corners of the Color watch face.

Extra Large

Use the extra large templates to display content on the X-Large watch faces.

Modular Small

Use modular small templates to display content in the smaller spaces of the Modular watch face.

Modular Large

Use modular large templates to display multiple rows of content on the Modular watch face.


Use the utilitarian templates to display content on a variety of watch faces, including the Utility, Chronograph, Simple, and character watch faces.


Use graphic templates to display visually rich content on a variety of watch faces, including the Infograph, Infograph Modular, and Solar Dial faces.

class CLKComplicationTemplate

An abstract class that defines the base behavior for all templates.

enum CLKComplicationFamily

Constants indicating the template groups.

property list key CLKComplicationSupportedFamilies

The complication families for which the app can provide data.

Name: ClockKit Complication - Supported Families