# Eventkit

Create, read, and manage calendar events and reminders using EventKit and EventKitUI.

- Repository: https://github.com/dpearson2699/swift-ios-skills (1266 stars)
- Category: Engineering
- License: see repository
- Last updated: 2026-07-31
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add dpearson2699/swift-ios-skills --skill eventkit -g -a claude-code -y`
Codex: `npx skills add dpearson2699/swift-ios-skills --skill eventkit -g -a codex -y`
Cursor: `npx skills add dpearson2699/swift-ios-skills --skill eventkit -g -a cursor -y`
Gemini CLI: `npx skills add dpearson2699/swift-ios-skills --skill eventkit -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add dpearson2699/swift-ios-skills`

## Description

Create, read, and manage calendar events and reminders using EventKit and EventKitUI. Use when adding events to the user's calendar, creating reminders, setting recurrence rules, requesting calendar or reminders access, presenting event editors, choosing calendars, handling alarms, observing calendar changes, or working with EKEventStore, EKEvent, EKReminder, EKCalendar, EKRecurrenceRule, EKEventEditViewController, EKCalendarChooser, or EventKitUI views.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# EventKit

Use EventKit for calendar and reminder authorization, CRUD, recurrence, alarms,
and system editors.

## Contents

- [Availability](#availability)
- [Setup](#setup)
- [Authorization](#authorization)
- [Creating Events](#creating-events)
- [Fetching Events](#fetching-events)
- [Reminders](#reminders)
- [Recurrence Rules](#recurrence-rules)
- [Alarms](#alarms)
- [EventKitUI Controllers](#eventkitui-controllers)
- [Observing Changes](#observing-changes)
- [Common Mistakes](#common-mistakes)
- [Review Checklist](#review-checklist)
- [References](#references)

## Availability

- **iOS 17+:** Use granular full/write-only request methods; legacy
  `requestAccess(to:)` no longer prompts and throws. The system event editor can
  create an event without app calendar access. For iOS 10, 16, guard those APIs,
  use the legacy request plus `NSCalendarsUsageDescription` /
  `NSRemindersUsageDescription`; EventKitUI may also need
  `NSContactsUsageDescription`.
- **iOS 26+:** The typed `EKEventStore.EventStoreChanged` / `.changed` message is
  available behind a guard. Keep `EKEventStoreChanged` for earlier systems.

## Setup

### Info.plist Keys

Add the usage description for the access path selected in
[Authorization](#authorization). Do not request broader access merely to simplify
the setup path.

The authorization-free system editor path needs no calendar usage string.
Direct writes need write-only or full access; reads need full access. Reminders
have only full access.

### Event Store

Create a single `EKEventStore` instance and reuse it. Do not mix objects from
different event stores.

```swift
import EventKit

let eventStore = EKEventStore()
```

## Authorization

Request the narrowest access that matches the feature. Apply the versioned
request path in [Availability](#availability).

The rest: https://github.com/dpearson2699/swift-ios-skills/blob/HEAD/skills/eventkit/SKILL.md
