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.
eventkit covers creating, reading, and managing calendar events and reminders with EventKit and EventKitUI, targeting Swift 6.3 and iOS 26+. It spans authorization, event and reminder CRUD, recurrence rules, alarms, the EventKitUI editors, and observing store changes. Setup starts with Info.plist usage-description keys chosen by access level: NSCalendarsFullAccessUsageDescription for read and write, NSCalendarsWriteOnlyAccessUsageDescription for direct write-only creation, and NSRemindersFullAccessUsageDescription for reminders, plus legacy keys for iOS 10 through 16. A single EKEventStore instance is created and reused throughout, and objects from different stores are never mixed.
Authorization follows the granular iOS 17+ model: requestFullAccessToEvents for reading, editing, deleting, or fetching; requestWriteOnlyAccessToEvents for apps that only create events and never read them; and requestFullAccessToReminders for reminders. Only .fullAccess supports reads, and notably an app that merely presents EKEventEditViewController to let the person create an event needs no calendar authorization at all on iOS 17+.
Events are built as EKEvent objects and saved with a span such as .thisEvent, optionally targeting a specific writable calendar or attaching an EKStructuredLocation. Fetching uses date-range predicates that expand recurring occurrences, capped to a four-year span, and runs synchronously; reminders instead fetch asynchronously through a completion handler. Recurrence is expressed with EKRecurrenceRule, from simple frequency-and-interval rules with an optional EKRecurrenceEnd to complex rules using EKRecurrenceDayOfWeek and related components. The guide also includes alarms, EventKitUI controllers, change observation, and common-mistakes and review-checklist sections to steer correct usage.
Create, read, and manage calendar events and reminders, covering authorization, event and reminder CRUD, recurrence rules, alarms, and EventKitUI editors on Swift 6.3 and iOS 26+.
Granular access: full access to events (requestFullAccessToEvents), write-only access to events (requestWriteOnlyAccessToEvents), and full access to reminders (requestFullAccessToReminders). Only .fullAccess supports reading events or reminders.
On iOS 17+, an app that only presents EKEventEditViewController to let the person create an event needs no calendar authorization or usage strings; direct EventKit writes still need write-only or full access.
NSCalendarsFullAccessUsageDescription, NSCalendarsWriteOnlyAccessUsageDescription, and NSRemindersFullAccessUsageDescription, plus legacy NSCalendarsUsageDescription and NSRemindersUsageDescription (and NSContactsUsageDescription for EventKitUI) on iOS 10 through 16.
With EKRecurrenceRule: simple rules by frequency and interval with an optional EKRecurrenceEnd, or complex rules using EKRecurrenceDayOfWeek and related components; changes are saved with a span such as .thisEvent.
Quick Setup:
.claude/skills/Repository
dpearson2699/swift-ios-skills