alarmkit
AlarmKit
System-level alarms and countdown timers on iOS 26+ that sound through Silent Mode and Focus. The deep API reference — every component, authorization, scheduling, countdowns, Live Activity integration, App Intents, custom sounds, and a full worked example — lives in references/guide.md. This file is the decision and discipline layer: read it first, open the guide for specifics.
Dials
Set these explicitly at the start; they change what "correct" means.
ALARM_KIND—scheduled(fires at a wall-clock time;Alarm.Schedule.fixedfor one-shot or.relativefor recurring/timezone-adaptive) ·countdown(a running timer with countdown/paused UI; needs a Widget Extension) ·both(a scheduled alarm that then runs apostAlertcountdown, e.g. snooze).SECONDARY_ACTION—none(stop button only) ·snooze(secondaryButtonBehavior: .countdown+ apostAlertduration) ·custom(secondaryButtonBehavior: .custom+ aLiveActivityIntentto open the app or run logic).LIVE_ACTIVITY—none(plain scheduled alarm, no countdown UI needed) ·required(any countdown surface — you MUST ship a Widget Extension with anActivityConfiguration(for: AlarmAttributes<Metadata>.self), see theactivitykitskill).
When to use
Building or reviewing any alarm or timer that must fire reliably regardless of mute/Focus — wake-up alarms, cooking/medication timers, workout intervals, time-critical reminders. Do NOT reach for AlarmKit for ordinary reminders or marketing nudges; that abuse is rejected at review and is what UserNotifications is for. If the alarm shows a live countdown, the countdown UI is a Live Activity — use the activitykit skill for the widget.