@capgo/capacitor-alarm

June 16, 2026 · View on GitHub

Capgo - Instant updates for Capacitor

➡️ Get Instant updates for your App with Capgo

Missing a feature? We’ll build the plugin for you 💪

Manage native alarm Capacitor plugin

Why Capacitor Alarm?

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.

Documentation

The most complete doc is available here: https://capgo.app/docs/plugins/alarm/

Compatibility

Plugin versionCapacitor compatibilityMaintained
v8.*.*v8.*.*
v7.*.*v7.*.*On demand
v6.*.*v6.*.*
v5.*.*v5.*.*

Note: The major version of this plugin follows the major version of Capacitor. Use the version that matches your Capacitor installation (e.g., plugin v8 for Capacitor 8). Only the latest major version is actively maintained.

Install

You can use our AI-Assisted Setup to install the plugin. Add the Capgo skills to your AI tool using the following command:

npx skills add https://github.com/cap-go/capacitor-skills --skill capacitor-plugins

Then use the following prompt:

Use the `capacitor-plugins` skill from `cap-go/capacitor-skills` to install the `@capgo/capacitor-alarm` plugin in my project.

If you prefer Manual Setup, install the plugin by running the following commands and follow the platform-specific instructions below:

npm install @capgo/capacitor-alarm
npx cap sync

Requirements

  • iOS: iOS 26+ only. This plugin relies on AlarmKit APIs and will report unsupported on earlier versions or when the framework is unavailable.
  • Android: Uses AlarmClock 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.

Permission checks

Use CapgoAlarm.checkPermissions() to query whether AlarmKit (iOS) or the platform clock integration (Android) is ready before prompting users. The method never opens system UI and returns a PermissionResult with details describing platform-specific states (for example, { alarmKit: true } on iOS or { exactAlarm: false } on Android 12+).

If your native runtime ships an older build of this plugin that predates the checkPermissions bridge, the JavaScript shim resolves with { granted: false, message: 'CapgoAlarm.checkPermissions is not implemented...' } so you can gracefully fall back to feature detection or request an update.

API

Capacitor Alarm Plugin interface for managing native OS alarms.

createAlarm(...)

createAlarm(options: NativeAlarmCreateOptions) => Promise<NativeActionResult>

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+).

ParamTypeDescription
optionsNativeAlarmCreateOptions- Options for creating the alarm

Returns: Promise<NativeActionResult>

Since: 1.0.0


openAlarms()

openAlarms() => Promise<NativeActionResult>

Open the platform's native alarm list UI, if available.

Returns: Promise<NativeActionResult>

Since: 1.0.0


getOSInfo()

getOSInfo() => Promise<OSInfo>

Get information about the OS and capabilities.

Returns: Promise<OSInfo>

Since: 1.0.0


requestPermissions(...)

requestPermissions(options?: { exactAlarm?: boolean | undefined; } | undefined) => Promise<PermissionResult>

Request relevant permissions for alarm usage on the platform. On Android, may route to settings for exact alarms.

ParamTypeDescription
options{ exactAlarm?: boolean; }- Optional parameters for the permission request

Returns: Promise<PermissionResult>

Since: 1.0.0


checkPermissions()

checkPermissions() => Promise<PermissionResult>

Check the current permission state for native alarm access without triggering UI. On iOS this reports AlarmKit readiness; on Android it reports capability details.

Returns: Promise<PermissionResult>

Since: 8.0.4


getPluginVersion()

getPluginVersion() => Promise<{ version: string; }>

Get the native Capacitor plugin version.

Returns: Promise<{ version: string; }>

Since: 1.0.0


getAlarms()

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


cancelAlarm(...)

cancelAlarm(options: { id: string; }) => Promise<NativeActionResult>

Cancel a scheduled alarm by its ID. On iOS 26+, removes the alarm from AlarmKit. On Android/web, returns not supported.

ParamTypeDescription
options{ id: string; }- Options containing the alarm ID to cancel

Returns: Promise<NativeActionResult>

Since: 8.1.0


Interfaces

NativeActionResult

Result of a native action.

PropTypeDescription
successbooleanWhether the action was successful
messagestringOptional message with additional information
idstringOptional alarm ID (returned by createAlarm on iOS)

NativeAlarmCreateOptions

Options for creating a native OS alarm via the platform clock app.

PropTypeDescription
hournumberHour of day in 24h format (0-23)
minutenumberMinute of hour (0-59)
labelstringOptional label for the alarm
skipUibooleanAndroid only: attempt to skip UI if possible
vibratebooleanAndroid only: set alarm to vibrate

OSInfo

Returned info about current OS and capabilities.

PropTypeDescription
platformstringPlatform identifier: 'ios' | 'android' | 'web'
versionstringOS version string
supportsNativeAlarmsbooleanWhether the platform exposes a native alarm app integration
supportsScheduledNotificationsbooleanWhether scheduling local notifications is supported
canScheduleExactAlarmsbooleanAndroid only: whether exact alarms are allowed

PermissionResult

Result of a permissions request.

PropTypeDescription
grantedbooleanOverall grant for requested scope
detailsRecord<string, boolean>Optional details by permission key
messagestringOptional human readable diagnostic

AlarmInfo

Information about a scheduled alarm.

PropTypeDescription
idstringUnique identifier for the alarm
hournumberHour of day in 24h format (0-23). May be absent for alarms created outside this plugin.
minutenumberMinute of hour (0-59). May be absent for alarms created outside this plugin.
labelstringOptional label for the alarm
enabledbooleanWhether the alarm is enabled

Type Aliases

Record

Construct a type with a set of properties K of type T

{ [P in K]: T; }