Manage native alarm Capacitor plugin
npm install @capgo/capacitor-alarm
Manage native alarm Capacitor plugin
The only plugin implementing the latest native alarm APIs for both iOS and Android:
- iOS 26+ AlarmKit - Full integration with Apple's new alarm framework
- Android AlarmClock intents - Modern alarm management following OEM policies
- Future-proof - Built on the newest platform APIs, not deprecated methods
- Cross-platform - Consistent API across iOS and Android
Essential for alarm clock apps, reminder apps, medication trackers, and any app needing native system alarms.
The most complete doc is available here: https://capgo.app/docs/plugins/alarm/
``bash`
npm install @capgo/capacitor-alarm
npx cap sync
- iOS: iOS 26+ only. This plugin relies on AlarmKit APIs and will report unsupported on earlier versions or when the framework is unavailable.AlarmClock
- Android: Uses intents; behavior depends on the default Clock app and OEM policies.
Note: This plugin only exposes native alarm actions (create/open). It does not implement any custom in-app alarm scheduling/CRUD.
* createAlarm(...)
* openAlarms()
* getOSInfo()
* requestPermissions(...)
* getPluginVersion()
* getAlarms()
* Interfaces
* Type Aliases
Capacitor Alarm Plugin interface for managing native OS alarms.
`typescript`
createAlarm(options: NativeAlarmCreateOptions) => Promise
Create a native OS alarm using the platform clock app.
On Android this uses the Alarm Clock intent; on iOS this uses AlarmKit if available (iOS 16+).
| Param | Type | Description |
| ------------- | ----------------------------------------------------------------------------- | -------------------------------- |
| options | NativeAlarmCreateOptions | - Options for creating the alarm |
Returns: Promise<NativeActionResult>
Since: 1.0.0
--------------------
`typescript`
openAlarms() => Promise
Open the platform's native alarm list UI, if available.
Returns: Promise<NativeActionResult>
Since: 1.0.0
--------------------
`typescript`
getOSInfo() => Promise
Get information about the OS and capabilities.
Returns: Promise<OSInfo>
Since: 1.0.0
--------------------
`typescript`
requestPermissions(options?: { exactAlarm?: boolean | undefined; } | undefined) => Promise
Request relevant permissions for alarm usage on the platform.
On Android, may route to settings for exact alarms.
| Param | Type | Description |
| ------------- | -------------------------------------- | ------------------------------------------------ |
| options | { exactAlarm?: boolean; } | - Optional parameters for the permission request |
Returns: Promise<PermissionResult>
Since: 1.0.0
--------------------
`typescript`
getPluginVersion() => Promise<{ version: string; }>
Get the native Capacitor plugin version.
Returns: Promise<{ version: string; }>
Since: 1.0.0
--------------------
`typescript`
getAlarms() => Promise<{ alarms: AlarmInfo[]; message?: string; }>
Get a list of alarms scheduled by this app.
On iOS 26+, returns alarms from AlarmKit. On Android, this is not supported
as the system does not provide an API to query alarms.
Returns: Promise<{ alarms: AlarmInfo[]; message?: string; }>
Since: 1.1.0
--------------------
#### NativeActionResult
Result of a native action.
| Prop | Type | Description |
| ------------- | -------------------- | -------------------------------------------- |
| success | boolean | Whether the action was successful |
| message | string | Optional message with additional information |
#### NativeAlarmCreateOptions
Options for creating a native OS alarm via the platform clock app.
| Prop | Type | Description |
| ------------- | -------------------- | -------------------------------------------- |
| hour | number | Hour of day in 24h format (0-23) |
| minute | number | Minute of hour (0-59) |
| label | string | Optional label for the alarm |
| skipUi | boolean | Android only: attempt to skip UI if possible |
| vibrate | boolean | Android only: set alarm to vibrate |
#### OSInfo
Returned info about current OS and capabilities.
| Prop | Type | Description |
| ------------------------------------ | -------------------- | ----------------------------------------------------------- |
| platform | string | Platform identifier: 'ios' \| 'android' \| 'web' |
| version | string | OS version string |
| supportsNativeAlarms | boolean | Whether the platform exposes a native alarm app integration |
| supportsScheduledNotifications | boolean | Whether scheduling local notifications is supported |
| canScheduleExactAlarms | boolean | Android only: whether exact alarms are allowed |
#### PermissionResult
Result of a permissions request.
| Prop | Type | Description |
| ------------- | ---------------------------------------------------------------- | ---------------------------------- |
| granted | boolean | Overall grant for requested scope |
| details | Record<string, boolean> | Optional details by permission key |
#### AlarmInfo
Information about a scheduled alarm.
| Prop | Type | Description |
| ------------- | -------------------- | -------------------------------- |
| id | string | Unique identifier for the alarm |
| hour | number | Hour of day in 24h format (0-23) |
| minute | number | Minute of hour (0-59) |
| label | string | Optional label for the alarm |
| enabled` | boolean | Whether the alarm is enabled |
#### Record
Construct a type with a set of properties K of type T
{
[P in K]: T;
}