eventkitlisted
Install: claude install-skill dpearson2699/swift-ios-skills
# EventKit
Create, read, and manage calendar events and reminders. Covers authorization,
event and reminder CRUD, recurrence rules, alarms, and EventKitUI editors.
Targets Swift 6.3 / iOS 26+.
## Contents
- [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)
## Setup
### Info.plist Keys
Add the required usage description strings based on what access level you need:
| Key | Access Level |
|---|---|
| `NSCalendarsFullAccessUsageDescription` | Read + write events |
| `NSCalendarsWriteOnlyAccessUsageDescription` | Write-only events (iOS 17+) |
| `NSRemindersFullAccessUsageDescription` | Read + write reminders |
> For apps also targeting iOS 16 or earlier, also include the legacy `NSCalendarsUsageDescription` / `NSRemindersUsageDescription` keys.
### 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
iOS 17+ introduced granular access levels. Use the modern async methods.
### Full Access to Events
```swift
func requestCalendarAccess() async throws -> Bool {
let granted