<!--
{
  "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@2x.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.

[`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>

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

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

[`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>

[`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>

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

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

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

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

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

Activity information that signifies a quantity.

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

An abstract base class for gathering information about an activity.

### Errors

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

Errors issued by ClassKit.

[`CLSErrorCodeDomain`](/documentation/ClassKit/CLSErrorCodeDomain)

The error domain that ClassKit uses when issuing errors.

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

Error codes that ClassKit issues.

[`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-policy)
