Is there an AlarmKit entitlement? No. Here is what AlarmKit actually needs.
Short answer: com.apple.developer.alarmkit does not exist. There is no AlarmKit entitlement to declare and no AlarmKit capability to enable in the Developer portal. If it is in your .entitlements file, delete it.
The symptom
The simulator builds and runs. The first build to a physical device fails at signing with:
Provisioning profile "..." doesn't include the com.apple.developer.alarmkit entitlement.
You go to the Developer portal to add the capability to your App ID, and there is nothing to add. This is the moment most people start searching.
Why it happens
The key is a hallucination. Code-generation tools conflate the Info.plist usage-description key (NSAlarmKitUsageDescription, which is real) with a capability entitlement (which is not), and emit com.apple.developer.alarmkit: true into the entitlements file. The simulator does not check entitlements against a provisioning profile, so it works there and fails on device.
An Apple engineer describes this exact pattern on the Apple Developer Forums (thread 797950): LLM-generated entitlements that were never real, and developers unable to tell apart "an entitlement you declare", "an entitlement you must apply for", and "an Info.plist key".
What AlarmKit actually requires
- Deployment target iOS 26.0 or later. AlarmKit is new in iOS 26; there is no back-port.
NSAlarmKitUsageDescriptionin Info.plist. Note thatxcodebuild -exportLocalizationsdoes not extract this key, so localize it by hand in eachInfoPlist.strings.AlarmManager.shared.requestAuthorization()at runtime, before scheduling. CheckauthorizationStatefirst; if it is.deniedthe only path is the Settings app.- Optionally a Widget Extension for the Live Activity that AlarmKit shows while an alarm counts down or rings. The
AlarmMetadatatype must be compiled into both the app and the extension targets, or the Live Activity cannot decode it.
The fix
<!-- YourApp.entitlements: remove this block entirely -->
<key>com.apple.developer.alarmkit</key>
<true/>
Clean the build folder, rebuild for the device, and signing goes through. Nothing else changes.
Related
The longer write-up, Shipping one of the first AlarmKit apps: what the docs don't tell you, covers deterministic alarm IDs, 14-day pre-registration, the Live Activity shared target, and the App Review 5.1.1(iv) rejection we hit on the pre-permission screen. Japanese version of this page: 日本語.
The app in question is KeyAlarm, which turns calendar events into real alarms on iOS 26. Questions about AlarmKit are welcome through the contact form.