﻿<!--
{
  "availability" : [
    "iOS: 11.4 -",
    "iPadOS: 11.4 -",
    "macCatalyst: 14.0 -",
    "macOS: 11.0 -",
    "visionOS: 1.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "ClassKit",
  "identifier" : "/documentation/ClassKit",
  "metadataVersion" : "0.1.0",
  "role" : "Framework",
  "symbol" : {
    "kind" : "Framework",
    "modules" : [
      "ClassKit"
    ],
    "preciseIdentifier" : "ClassKit"
  },
  "title" : "ClassKit"
}
-->

# ClassKit

Enable teachers to assign activities from your app’s content and to view student progress.

## Overview

Educational apps provide access to resources like books and videos while reinforcing learning through interactive visualizations, games, and assessments. ClassKit lets you organize educational material so that teachers can assign activities to students and see their progress.

The ClassKit environment consists of a teacher’s device (or devices) and many student devices communicating through iCloud. Each device runs your app (plus other educational apps) along with Apple’s Schoolwork app, with ClassKit acting as a hub on the device. Using Schoolwork, teachers can see what assignable content your app exposes to ClassKit. They can then create assignments based on that content, and monitor progress of all their students. Meanwhile, students use Schoolwork to receive assignments that link directly to content in your app.

![Diagram showing how your app connects to the other parts of the virtual classroom.](images/com.apple.classkit/media-2961556.png)

ClassKit doesn’t replace any existing logic or storage mechanisms in your app, and you don’t use it to generate any new user interfaces. Instead, you use ClassKit to publicize the structure you already have, so that teachers can use Apple’s Schoolwork app to create assignments based on your app’s content and measure their students’ progress through those assignments.

For student-facing submission functionality, use the [`ClassKit UI`](/documentation/ClassKitUI) framework, which provides
views that enable students to submit assigned documents and track submission status directly
within your app.

> Note:
> ClassKit is designed for educational organizations that use [Apple School Manager and Managed Apple IDs](https://www.apple.com/education/it/). Consider adopting ClassKit if education is your intended market.

## Topics

### Essentials

  <doc://com.apple.classkit/documentation/ClassKit/enabling-classkit-in-your-app>

  <doc://com.apple.documentation/documentation/BundleResources/Entitlements/com.apple.developer.ClassKit-environment>

  <doc://com.apple.classkit/documentation/ClassKit/incorporating-classkit-into-an-educational-app>

[`ClassKit UI`](/documentation/ClassKitUI)

Display views that enable students to submit and withdraw assigned documents in your app.

[`class CLSDataStore`](/documentation/ClassKit/CLSDataStore)

A container for all the ClassKit data in your app.

### Contexts

  <doc://com.apple.classkit/documentation/ClassKit/advertising-your-app-s-assignable-content>

[`class CLSContext`](/documentation/ClassKit/CLSContext)

An area of your app that represents an assignable task, like a quiz or a chapter.

[`protocol CLSContextProvider`](/documentation/ClassKit/CLSContextProvider)

An interface used to tell your ClassKit context provider app extension to update contexts.

### Activities

  <doc://com.apple.classkit/documentation/ClassKit/recording-student-progress>

[`class CLSActivity`](/documentation/ClassKit/CLSActivity)

A representation of user interaction with a context.

### Activity items

  <doc://com.apple.classkit/documentation/ClassKit/recording-additional-metrics-about-a-completed-task>

[`class CLSScoreItem`](/documentation/ClassKit/CLSScoreItem)

Activity information that signifies a score out of a possible maximum.

[`class CLSBinaryItem`](/documentation/ClassKit/CLSBinaryItem)

Activity information that is true or false, pass or fail, yes or no.

[`class CLSQuantityItem`](/documentation/ClassKit/CLSQuantityItem)

Activity information that signifies a quantity.

[`class CLSActivityItem`](/documentation/ClassKit/CLSActivityItem)

An abstract base class for gathering information about an activity.

### Errors

[`struct CLSError`](/documentation/ClassKit/CLSError)

Errors issued by ClassKit.

[`let CLSErrorCodeDomain: String`](/documentation/ClassKit/CLSErrorCodeDomain)

The error domain that ClassKit uses when issuing errors.

[`enum Code`](/documentation/ClassKit/CLSError/Code)

Error codes that ClassKit issues.

[`struct CLSErrorUserInfoKey`](/documentation/ClassKit/CLSErrorUserInfoKey)

Keys that appear in the user info dictionary in errors that ClassKit creates.



---

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-poli