Skip to content

Capacitor Plugin to set and open the native alarms

License

Notifications You must be signed in to change notification settings

Cap-go/capacitor-alarm

@capgo/capacitor-alarm

Capgo - Instant updates for capacitor

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 version Capacitor compatibility Maintained
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

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

Param Type Description
options NativeAlarmCreateOptions - 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.

Param Type Description
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


Interfaces

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
message string Optional human readable diagnostic

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

Type Aliases

Record

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

{ [P in K]: T; }

About

Capacitor Plugin to set and open the native alarms

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

 

Contributors 4

  •  
  •  
  •  
  •