{"_id":"@capawesome/capacitor-alarm","_rev":"4-fa8947cdd0bb7c0aa0a19a9478bea6a1","name":"@capawesome/capacitor-alarm","dist-tags":{"latest":"0.1.2"},"versions":{"0.0.1":{"name":"@capawesome/capacitor-alarm","version":"0.0.1","keywords":["capacitor","plugin","native","alarm","alarmkit","timer","clock"],"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"MIT","_id":"@capawesome/capacitor-alarm@0.0.1","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"homepage":"https://capawesome.io/docs/sdks/capacitor/alarm/","bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"dist":{"shasum":"0c47a2d2da815b8ebc3e8318e3da14f6bf74249e","tarball":"https://registry.npmjs.org/@capawesome/capacitor-alarm/-/capacitor-alarm-0.0.1.tgz","fileCount":45,"integrity":"sha512-rdGo/2Rvv/UOR7lvcFmAu4QXI+X/hO4X8mOJpHyD/DndVC69xGmj9PLK7e5NTzKz11foollL3Y76FqJeOScMIA==","signatures":[{"sig":"MEUCIAlec5tWFM0IT63muijeIfOQshelgeQlW7sJ7dzichc6AiEA/dxq9CNEMv+fGIPuRytMHefR5kojde5sfJ6G75MCE+s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113336},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","funding":[{"url":"https://github.com/sponsors/capawesome-team/","type":"github"},{"url":"https://opencollective.com/capawesome","type":"opencollective"}],"gitHead":"e18228f8362b044cd453aba542fe8e0a02fd996f","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api AlarmPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd .."},"_npmUser":{"name":"robingenz","email":"mail@robingenz.dev"},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/capawesome-team/capacitor-plugins.git","type":"git"},"_npmVersion":"11.13.0","description":"Capacitor plugin to create system alarms and timers.","directories":{},"_nodeVersion":"24.16.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","rimraf":"6.1.2","rollup":"4.53.3","swiftlint":"2.0.0","typescript":"5.9.3","@capacitor/cli":"8.0.0","@capacitor/ios":"8.0.0","@capacitor/core":"8.0.0","@capacitor/docgen":"0.3.1","@capacitor/android":"8.0.0","@ionic/eslint-config":"0.4.0","prettier-plugin-java":"2.6.7"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-alarm_0.0.1_1783426798847_0.001030334846467973","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@capawesome/capacitor-alarm","version":"0.1.0","keywords":["capacitor","plugin","native","alarm","alarmkit","timer","clock","capacitor-plugin","alarm clock","system alarm","countdown timer","wake up alarm","schedule alarm"],"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"MIT","_id":"@capawesome/capacitor-alarm@0.1.0","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"homepage":"https://capawesome.io/docs/sdks/capacitor/alarm/","bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"dist":{"shasum":"ad8e8bc84b81efc5e5ba6ce05ddd425c354fea8f","tarball":"https://registry.npmjs.org/@capawesome/capacitor-alarm/-/capacitor-alarm-0.1.0.tgz","fileCount":45,"integrity":"sha512-CcbXwMMTjZoJF/668aWTnh5XSRBP1r8juYyTXB82AHC0Z8bEfhxMmD2uDnBIh7mm4hZw0inK217cTn0CK/9QbQ==","signatures":[{"sig":"MEQCIFwojoWcOyAqYM9Mzh25TumhYPD99kiT0V305uW4cOEkAiAxMY1VNSB1AAewmRUVv9lavBZpte1bEqZ4TLbv466eQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capawesome%2fcapacitor-alarm@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":119125},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","funding":[{"url":"https://github.com/sponsors/capawesome-team/","type":"github"},{"url":"https://opencollective.com/capawesome","type":"opencollective"}],"gitHead":"1ce17b1fd14c43b2f1d5d3c2da82221e1d1dca37","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api AlarmPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd .."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1d9cdfa3-17f0-4ab1-909b-57aaada2eb9e"}},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/capawesome-team/capacitor-plugins.git","type":"git"},"_npmVersion":"11.16.0","description":"Capacitor plugin to create system alarms and timers on Android and iOS.","directories":{},"_nodeVersion":"24.18.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","rimraf":"6.1.2","rollup":"4.53.3","swiftlint":"2.0.0","typescript":"5.9.3","@capacitor/cli":"8.0.0","@capacitor/ios":"8.0.0","@capacitor/core":"8.0.0","@capacitor/docgen":"0.3.1","@capacitor/android":"8.0.0","@ionic/eslint-config":"0.4.0","prettier-plugin-java":"2.6.7"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-alarm_0.1.0_1784015488404_0.903068710285132","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@capawesome/capacitor-alarm","version":"0.1.1","keywords":["capacitor","plugin","native","alarm","alarmkit","timer","clock","capacitor-plugin","alarm clock","system alarm","countdown timer","wake up alarm","schedule alarm"],"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"MIT","_id":"@capawesome/capacitor-alarm@0.1.1","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"homepage":"https://capawesome.io/docs/sdks/capacitor/alarm/","bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"dist":{"shasum":"4e7b2c4f307d1892f30261ff1250f4cd5c88e949","tarball":"https://registry.npmjs.org/@capawesome/capacitor-alarm/-/capacitor-alarm-0.1.1.tgz","fileCount":45,"integrity":"sha512-nkn+MgjOdP4VwDHl87WrhNsz87gtXZimPAx/qXxM3eF+VyAjy8Pglm85Rxb5FAw1AnD35JLeeEwhhjMVbPgZrw==","signatures":[{"sig":"MEYCIQDpyQJK86atbFYlUCRjGPZycdtlJiGVMlz8Mhy+VHfvDgIhALKct7tE1LRyzmgtWXRvCB2VncYO48piF3u9sTzLlygD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capawesome%2fcapacitor-alarm@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":119134},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","funding":[{"url":"https://github.com/sponsors/capawesome-team/","type":"github"},{"url":"https://opencollective.com/capawesome","type":"opencollective"}],"gitHead":"3e61f4b412f9f3f512c21169bb135bbb23a67e6d","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api AlarmPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd .."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1d9cdfa3-17f0-4ab1-909b-57aaada2eb9e"}},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/capawesome-team/capacitor-plugins.git","type":"git"},"_npmVersion":"11.16.0","description":"Capacitor plugin to create system alarms and timers on Android and iOS.","directories":{},"_nodeVersion":"24.18.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","rimraf":"6.1.2","rollup":"4.53.3","swiftlint":"2.0.0","typescript":"5.9.3","@capacitor/cli":"8.0.0","@capacitor/ios":"8.0.0","@capacitor/core":"8.0.0","@capacitor/docgen":"0.3.1","@capacitor/android":"8.0.0","@ionic/eslint-config":"0.4.0","prettier-plugin-java":"2.6.7"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-alarm_0.1.1_1784102941803_0.4072907353728954","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@capawesome/capacitor-alarm","version":"0.1.2","description":"Capacitor plugin to create system alarms and timers on Android and iOS.","main":"dist/plugin.cjs.js","module":"dist/esm/index.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/capawesome-team/capacitor-plugins.git"},"bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"funding":[{"type":"github","url":"https://github.com/sponsors/capawesome-team/"},{"type":"opencollective","url":"https://opencollective.com/capawesome"}],"homepage":"https://capawesome.io/docs/sdks/capacitor/alarm/","keywords":["capacitor","plugin","native","alarm","alarmkit","timer","clock","capacitor-plugin","alarm clock","system alarm","countdown timer","wake up alarm","schedule alarm"],"scripts":{"verify":"npm run verify:ios && npm run verify:android && npm run verify:web","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:android":"cd android && ./gradlew clean build test && cd ..","verify:web":"npm run build","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","eslint":"eslint . --ext ts","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","docgen":"docgen --api AlarmPlugin --output-readme README.md --output-json dist/docs.json","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd ..","prepublishOnly":"npm run build"},"devDependencies":{"@capacitor/android":"8.0.0","@capacitor/cli":"8.4.2","@capacitor/core":"8.0.0","@capacitor/docgen":"0.3.1","@capacitor/ios":"8.0.0","@ionic/eslint-config":"0.4.0","eslint":"8.57.0","prettier-plugin-java":"2.9.7","rimraf":"6.1.2","rollup":"4.62.3","swiftlint":"2.0.0","typescript":"5.9.3"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"publishConfig":{"access":"public"},"gitHead":"7c1937ed10b7de86ca2c1cdc3539a2735fd69a00","_id":"@capawesome/capacitor-alarm@0.1.2","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-e3AP6TbINh9tl9m90aDpq+fX2tD4cl7HrMrD8y61eVTVT3OaKS9RSljBasiBfW6YGYK2qQTZ3lyISciDfAJr6A==","shasum":"fed6fbb92863dfc9ec52f84a7c08b5187794e268","tarball":"https://registry.npmjs.org/@capawesome/capacitor-alarm/-/capacitor-alarm-0.1.2.tgz","fileCount":45,"unpackedSize":119280,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capawesome%2fcapacitor-alarm@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIB1Fd/qtNPYMjNZqtVBa+L7TvE3bgS5oifFqBbPqgtiEAiEAvXEdLU8cP2K0SRrM8MX6x4C6jNIZkmrv+rat5FSUq7E="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1d9cdfa3-17f0-4ab1-909b-57aaada2eb9e"}},"directories":{},"maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/capacitor-alarm_0.1.2_1788337290799_0.33554416450822844"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-07T12:19:58.609Z","modified":"2026-09-02T08:21:31.326Z","0.0.1":"2026-07-07T12:19:59.043Z","0.1.0":"2026-07-14T07:51:28.543Z","0.1.1":"2026-07-15T08:09:01.933Z","0.1.2":"2026-09-02T08:21:30.942Z"},"bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"MIT","homepage":"https://capawesome.io/docs/sdks/capacitor/alarm/","keywords":["capacitor","plugin","native","alarm","alarmkit","timer","clock","capacitor-plugin","alarm clock","system alarm","countdown timer","wake up alarm","schedule alarm"],"repository":{"type":"git","url":"git+https://github.com/capawesome-team/capacitor-plugins.git"},"description":"Capacitor plugin to create system alarms and timers on Android and iOS.","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"readme":"# Capacitor Alarm Plugin\n\nCapacitor plugin to create system alarms and timers.\n\n<div class=\"capawesome-z29o10a\">\n  <a href=\"https://cloud.capawesome.io/\" target=\"_blank\">\n    <img alt=\"Deliver Live Updates to your Capacitor app with Capawesome Cloud\" src=\"https://cloud.capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.png?t=1\" />\n  </a>\n</div>\n\n## Features\n\n- ⏰ **Real system alarms**: Create alarms that break through Silent Mode and Focus — unlike local notifications.\n- ⏲️ **Timers**: Create countdown timers in the system clock app on Android.\n- 📋 **Alarm management**: List and cancel the alarms created by your app on iOS.\n- 🍏 **AlarmKit**: One of the first plugins to support Apple's new AlarmKit framework on iOS 26.\n- 🔐 **Permissions**: Check and request the alarm authorization with a single call.\n- 🤝 **Compatibility**: Works alongside the [Background Task](https://capawesome.io/docs/sdks/capacitor/background-task/), [Datetime Picker](https://capawesome.io/docs/sdks/capacitor/datetime-picker/) and [Silent Mode](https://capawesome.io/docs/sdks/capacitor/silent-mode/) plugins.\n- 📦 **CocoaPods & SPM**: Supports CocoaPods and Swift Package Manager for iOS.\n- 🔁 **Up-to-date**: Always supports the latest Capacitor version.\n\nMissing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look!\n\n## Use Cases\n\nThe Alarm plugin is typically used when the user must be reliably interrupted at a specific time, for example:\n\n- **Wake-up alarms**: Create alarms that break through Silent Mode and Focus, for example for morning routines in sleep or fitness apps.\n- **Recurring reminders**: Repeat alarms on specific weekdays, such as a medication reminder every Monday and Friday.\n- **Countdown timers**: Start timers in the system clock app on Android, for example for cooking or workout apps.\n- **Alarm management**: List and cancel the alarms created by your app on iOS to build your own alarm overview.\n\n## Compatibility\n\n| Plugin Version | Capacitor Version | Status         |\n| -------------- | ----------------- | -------------- |\n| 0.x.x          | >=8.x.x           | Active support |\n\n## Installation\n\nYou can use our **AI-Assisted Setup** to install the plugin.\nAdd the [Capawesome Skills](https://github.com/capawesome-team/skills) to your AI tool using the following command:\n\n```bash\nnpx skills add capawesome-team/skills --skill capacitor-plugins\n```\n\nThen use the following prompt:\n\n```\n Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-alarm` plugin in my project.\n```\n\nIf you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below:\n\n```bash\nnpm install @capawesome/capacitor-alarm\nnpx cap sync\n```\n\n### Android\n\nThe plugin already declares the `com.android.alarm.permission.SET_ALARM` permission in its manifest. This is a normal permission that is granted automatically, so no additional configuration is required.\n\n### iOS\n\nThis plugin uses Apple's [AlarmKit](https://developer.apple.com/documentation/alarmkit) framework, which requires **iOS 26 or later**. On older versions, all methods except `isAvailable()` reject as unavailable.\n\nAdd the `NSAlarmKitUsageDescription` key to the `ios/App/App/Info.plist` file, which tells the user why the app needs to schedule alarms:\n\n```xml\n<key>NSAlarmKitUsageDescription</key>\n<string>The app uses alarms to notify you at the times you choose.</string>\n```\n\n## Configuration\n\nNo configuration required for this plugin.\n\n## Usage\n\nThe following examples show how to check availability, check and request permissions, create alarms and timers, list and cancel alarms, and open the system clock app.\n\n### Check if alarms are available\n\nBefore creating an alarm, check if alarms are available on the device. On Android, this checks whether an app that can handle alarms is installed. On iOS, this returns `true` if the device runs iOS 26 or later:\n\n```typescript\nimport { Alarm } from '@capawesome/capacitor-alarm';\n\nconst isAvailable = async () => {\n  const { available } = await Alarm.isAvailable();\n  return available;\n};\n```\n\n### Check and request permissions\n\nCheck and request the permission to schedule alarms. On Android, both methods always return `granted` since alarms are created via the system clock app:\n\n```typescript\nimport { Alarm } from '@capawesome/capacitor-alarm';\n\nconst checkPermissions = async () => {\n  const { alarms } = await Alarm.checkPermissions();\n  return alarms;\n};\n\nconst requestPermissions = async () => {\n  const { alarms } = await Alarm.requestPermissions();\n  return alarms;\n};\n```\n\n### Create an alarm\n\nCreate a one-time or repeating alarm by providing the hour, the minute, and optionally a label and the weekdays on which the alarm repeats. On Android, the alarm is created in the system clock app and the returned `id` is `null`. On iOS, the alarm is owned by your app and can be listed and canceled later:\n\n```typescript\nimport { Alarm, Weekday } from '@capawesome/capacitor-alarm';\n\nconst createAlarm = async () => {\n  const { id } = await Alarm.createAlarm({\n    hour: 6,\n    minute: 30,\n    label: 'Wake up',\n    days: [Weekday.Monday, Weekday.Friday],\n  });\n  return id;\n};\n```\n\n### Create a timer\n\nCreate a countdown timer in the system clock app by providing the duration in seconds. Only available on Android:\n\n```typescript\nimport { Alarm } from '@capawesome/capacitor-alarm';\n\nconst createTimer = async () => {\n  await Alarm.createTimer({\n    duration: 300,\n    label: 'Tea',\n  });\n};\n```\n\n### List and cancel alarms\n\nGet all alarms that were created by your app and cancel them by their identifier. Only available on iOS:\n\n```typescript\nimport { Alarm } from '@capawesome/capacitor-alarm';\n\nconst getAlarms = async () => {\n  const { alarms } = await Alarm.getAlarms();\n  return alarms;\n};\n\nconst cancelAlarm = async (id: string) => {\n  await Alarm.cancelAlarm({ id });\n};\n```\n\n### Open the alarms in the system clock app\n\nOpen the list of alarms in the system clock app, for example so the user can review or edit an alarm. Only available on Android:\n\n```typescript\nimport { Alarm } from '@capawesome/capacitor-alarm';\n\nconst openAlarms = async () => {\n  await Alarm.openAlarms();\n};\n```\n\n## API\n\n<docgen-index>\n\n* [`cancelAlarm(...)`](#cancelalarm)\n* [`checkPermissions()`](#checkpermissions)\n* [`createAlarm(...)`](#createalarm)\n* [`createTimer(...)`](#createtimer)\n* [`getAlarms()`](#getalarms)\n* [`isAvailable()`](#isavailable)\n* [`openAlarms()`](#openalarms)\n* [`requestPermissions()`](#requestpermissions)\n* [Interfaces](#interfaces)\n* [Type Aliases](#type-aliases)\n* [Enums](#enums)\n\n</docgen-index>\n\n<docgen-api>\n<!--Update the source file JSDoc comments and rerun docgen to update the docs below-->\n\n### cancelAlarm(...)\n\n```typescript\ncancelAlarm(options: CancelAlarmOptions) => Promise<void>\n```\n\nCancel an alarm that was created by the app.\n\nOnly available on iOS.\n\n| Param         | Type                                                              |\n| ------------- | ----------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#cancelalarmoptions\">CancelAlarmOptions</a></code> |\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### checkPermissions()\n\n```typescript\ncheckPermissions() => Promise<PermissionStatus>\n```\n\nCheck permission to schedule alarms.\n\nOn Android, this method always returns `granted` since\nalarms are created via the system clock app.\n\nOnly available on Android and iOS.\n\n**Returns:** <code>Promise&lt;<a href=\"#permissionstatus\">PermissionStatus</a>&gt;</code>\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### createAlarm(...)\n\n```typescript\ncreateAlarm(options: CreateAlarmOptions) => Promise<CreateAlarmResult>\n```\n\nCreate a new alarm.\n\nOn Android, the alarm is created in the system clock app.\nThe app has no access to the created alarm afterwards.\n\nOn iOS, the alarm is owned by the app and can be listed\nand canceled using the `getAlarms(...)` and `cancelAlarm(...)`\nmethods.\n\nOnly available on Android and iOS.\n\n| Param         | Type                                                              |\n| ------------- | ----------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#createalarmoptions\">CreateAlarmOptions</a></code> |\n\n**Returns:** <code>Promise&lt;<a href=\"#createalarmresult\">CreateAlarmResult</a>&gt;</code>\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### createTimer(...)\n\n```typescript\ncreateTimer(options: CreateTimerOptions) => Promise<void>\n```\n\nCreate a new countdown timer in the system clock app.\n\nOnly available on Android.\n\n| Param         | Type                                                              |\n| ------------- | ----------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#createtimeroptions\">CreateTimerOptions</a></code> |\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### getAlarms()\n\n```typescript\ngetAlarms() => Promise<GetAlarmsResult>\n```\n\nGet all alarms that were created by the app.\n\nOnly available on iOS.\n\n**Returns:** <code>Promise&lt;<a href=\"#getalarmsresult\">GetAlarmsResult</a>&gt;</code>\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### isAvailable()\n\n```typescript\nisAvailable() => Promise<IsAvailableResult>\n```\n\nCheck if alarms are available on this device.\n\nOn Android, this checks whether an app that can handle\nalarms is installed. On iOS, this returns `true` if the\ndevice runs iOS 26 or later.\n\nOnly available on Android and iOS.\n\n**Returns:** <code>Promise&lt;<a href=\"#isavailableresult\">IsAvailableResult</a>&gt;</code>\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### openAlarms()\n\n```typescript\nopenAlarms() => Promise<void>\n```\n\nOpen the list of alarms in the system clock app.\n\nOnly available on Android.\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### requestPermissions()\n\n```typescript\nrequestPermissions() => Promise<PermissionStatus>\n```\n\nRequest permission to schedule alarms.\n\nOn Android, this method always returns `granted` since\nalarms are created via the system clock app.\n\nOnly available on Android and iOS.\n\n**Returns:** <code>Promise&lt;<a href=\"#permissionstatus\">PermissionStatus</a>&gt;</code>\n\n**Since:** 0.1.0\n\n--------------------\n\n\n### Interfaces\n\n\n#### CancelAlarmOptions\n\n| Prop     | Type                | Description                                   | Since |\n| -------- | ------------------- | --------------------------------------------- | ----- |\n| **`id`** | <code>string</code> | The unique identifier of the alarm to cancel. | 0.1.0 |\n\n\n#### PermissionStatus\n\n| Prop         | Type                                                        | Description                            | Since |\n| ------------ | ----------------------------------------------------------- | -------------------------------------- | ----- |\n| **`alarms`** | <code><a href=\"#permissionstate\">PermissionState</a></code> | Permission state of scheduling alarms. | 0.1.0 |\n\n\n#### CreateAlarmResult\n\n| Prop     | Type                        | Description                                                                                                                       | Since |\n| -------- | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | ----- |\n| **`id`** | <code>string \\| null</code> | The unique identifier of the created alarm. On Android, this is always `null` since the alarm is created in the system clock app. | 0.1.0 |\n\n\n#### CreateAlarmOptions\n\n| Prop          | Type                                                                            | Description                                                                                                                      | Since |\n| ------------- | ------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | ----- |\n| **`android`** | <code><a href=\"#createalarmandroidoptions\">CreateAlarmAndroidOptions</a></code> | Android-specific options. Only available on Android.                                                                             | 0.1.0 |\n| **`days`**    | <code>Weekday[]</code>                                                          | The days of the week on which the alarm repeats. If not provided, the alarm fires once at the next occurrence of the given time. | 0.1.0 |\n| **`hour`**    | <code>number</code>                                                             | The hour of the alarm (0-23).                                                                                                    | 0.1.0 |\n| **`label`**   | <code>string</code>                                                             | The label of the alarm.                                                                                                          | 0.1.0 |\n| **`minute`**  | <code>number</code>                                                             | The minute of the alarm (0-59).                                                                                                  | 0.1.0 |\n\n\n#### CreateAlarmAndroidOptions\n\n| Prop          | Type                 | Description                                                                                                                                | Default            | Since |\n| ------------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------ | ----- |\n| **`skipUi`**  | <code>boolean</code> | Whether or not to create the alarm without showing the user interface of the system clock app. Only available on Android.                  | <code>false</code> | 0.1.0 |\n| **`vibrate`** | <code>boolean</code> | Whether or not the alarm should vibrate. If not provided, the default behavior of the system clock app is used. Only available on Android. |                    | 0.1.0 |\n\n\n#### CreateTimerOptions\n\n| Prop           | Type                                                                            | Description                                          | Since |\n| -------------- | ------------------------------------------------------------------------------- | ---------------------------------------------------- | ----- |\n| **`android`**  | <code><a href=\"#createtimerandroidoptions\">CreateTimerAndroidOptions</a></code> | Android-specific options. Only available on Android. | 0.1.0 |\n| **`duration`** | <code>number</code>                                                             | The length of the timer in seconds (1-86400).        | 0.1.0 |\n| **`label`**    | <code>string</code>                                                             | The label of the timer.                              | 0.1.0 |\n\n\n#### CreateTimerAndroidOptions\n\n| Prop         | Type                 | Description                                                                                                               | Default            | Since |\n| ------------ | -------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------ | ----- |\n| **`skipUi`** | <code>boolean</code> | Whether or not to create the timer without showing the user interface of the system clock app. Only available on Android. | <code>false</code> | 0.1.0 |\n\n\n#### GetAlarmsResult\n\n| Prop         | Type                     | Description                              | Since |\n| ------------ | ------------------------ | ---------------------------------------- | ----- |\n| **`alarms`** | <code>AlarmInfo[]</code> | The alarms that were created by the app. | 0.1.0 |\n\n\n#### AlarmInfo\n\n| Prop          | Type                         | Description                         | Since |\n| ------------- | ---------------------------- | ----------------------------------- | ----- |\n| **`enabled`** | <code>boolean \\| null</code> | Whether or not the alarm is active. | 0.1.0 |\n| **`hour`**    | <code>number \\| null</code>  | The hour of the alarm (0-23).       | 0.1.0 |\n| **`id`**      | <code>string</code>          | The unique identifier of the alarm. | 0.1.0 |\n| **`label`**   | <code>string \\| null</code>  | The label of the alarm.             | 0.1.0 |\n| **`minute`**  | <code>number \\| null</code>  | The minute of the alarm (0-59).     | 0.1.0 |\n\n\n#### IsAvailableResult\n\n| Prop            | Type                 | Description                                         | Since |\n| --------------- | -------------------- | --------------------------------------------------- | ----- |\n| **`available`** | <code>boolean</code> | Whether or not alarms are available on this device. | 0.1.0 |\n\n\n### Type Aliases\n\n\n#### PermissionState\n\n<code>'prompt' | 'prompt-with-rationale' | 'granted' | 'denied'</code>\n\n\n### Enums\n\n\n#### Weekday\n\n| Members         | Value                    | Since |\n| --------------- | ------------------------ | ----- |\n| **`Friday`**    | <code>'FRIDAY'</code>    | 0.1.0 |\n| **`Monday`**    | <code>'MONDAY'</code>    | 0.1.0 |\n| **`Saturday`**  | <code>'SATURDAY'</code>  | 0.1.0 |\n| **`Sunday`**    | <code>'SUNDAY'</code>    | 0.1.0 |\n| **`Thursday`**  | <code>'THURSDAY'</code>  | 0.1.0 |\n| **`Tuesday`**   | <code>'TUESDAY'</code>   | 0.1.0 |\n| **`Wednesday`** | <code>'WEDNESDAY'</code> | 0.1.0 |\n\n</docgen-api>\n\n## Alarms vs. Local Notifications\n\nAlarms are not the same as local notifications. Use an alarm when the user must be interrupted at a specific time, and a local notification for everything else.\n\n|                                | Alarm                       | Local Notification            |\n| ------------------------------ | --------------------------- | ----------------------------- |\n| Breaks through Silent Mode     | ✅                          | ❌                            |\n| Breaks through Focus modes     | ✅                          | ❌                            |\n| Plays sound until dismissed    | ✅                          | ❌                            |\n| Custom content and actions     | ❌                          | ✅                            |\n\n## Platform Support\n\nThe two platforms have fundamentally different alarm models, which this plugin exposes honestly instead of hiding behind a false abstraction:\n\n- **Android**: Alarms and timers are created in the **system clock app** via the [`AlarmClock`](https://developer.android.com/reference/android/provider/AlarmClock) intent API. This is fire-and-forget: once created, the alarm belongs to the clock app and the OS offers no API to list or cancel it. The `createAlarm(...)` method therefore returns `null` as the alarm identifier, and `getAlarms()` and `cancelAlarm(...)` reject as unimplemented.\n- **iOS (26+)**: Alarms are created with [AlarmKit](https://developer.apple.com/documentation/alarmkit) and are **owned by your app**: you can list them with `getAlarms()` and cancel them with `cancelAlarm(...)`. Timers created with AlarmKit require a Live Activity widget extension in the app, which is why `createTimer(...)` is currently not supported on iOS. The `openAlarms()` method is not supported on iOS because the system clock app cannot be opened via a public API.\n\n| Method                  | Android | iOS (26+) |\n| ----------------------- | ------- | --------- |\n| `cancelAlarm(...)`      | ❌      | ✅        |\n| `checkPermissions()`    | ✅      | ✅        |\n| `createAlarm(...)`      | ✅      | ✅        |\n| `createTimer(...)`      | ✅      | ❌        |\n| `getAlarms()`           | ❌      | ✅        |\n| `isAvailable()`         | ✅      | ✅        |\n| `openAlarms()`          | ✅      | ❌        |\n| `requestPermissions()`  | ✅      | ✅        |\n\n## FAQ\n\n### How is this plugin different from other similar plugins?\n\nIt creates real system alarms that break through Silent Mode and Focus and keep sounding until dismissed — one of the first plugins to adopt Apple's new AlarmKit on iOS 26 — with repeating weekday alarms, permission handling in a single call, timers via the system clock app on Android, and alarm listing and cancellation on iOS. It exposes each platform's fundamentally different alarm model honestly through a fully typed API and stays actively maintained against the latest Capacitor and OS versions. If a normal reminder is enough, a local notification is the simpler choice; if the user must be reliably interrupted at a set time, this plugin is built for that.\n\n### Why does the plugin require iOS 26 or later?\n\nThe plugin uses Apple's [AlarmKit](https://developer.apple.com/documentation/alarmkit) framework, which was introduced with iOS 26. On older iOS versions, all methods except `isAvailable()` reject as unavailable, so you can use `isAvailable()` to check for support at runtime.\n\n### Why can't I list or cancel alarms on Android?\n\nOn Android, alarms are created in the system clock app via the `AlarmClock` intent API, which is fire-and-forget: once created, the alarm belongs to the clock app and the OS offers no API to list or cancel it. That is why `createAlarm(...)` returns `null` as the alarm identifier on Android and `getAlarms()` and `cancelAlarm(...)` reject as unimplemented. See the [Platform Support](#platform-support) section for details.\n\n### What is the difference between an alarm and a local notification?\n\nAn alarm breaks through Silent Mode and Focus modes and plays a sound until it is dismissed, while a local notification does not. On the other hand, local notifications support custom content and actions. Use an alarm when the user must be interrupted at a specific time, and a local notification for everything else (see [Alarms vs. Local Notifications](#alarms-vs-local-notifications)).\n\n### Why is creating timers not supported on iOS?\n\nTimers created with AlarmKit require a Live Activity widget extension in the app, which is why `createTimer(...)` is currently not supported on iOS. On Android, timers are created in the system clock app.\n\n### Do I need any permissions to create alarms?\n\nOn Android, the plugin already declares the `com.android.alarm.permission.SET_ALARM` permission in its manifest, which is granted automatically. On iOS, you must add the `NSAlarmKitUsageDescription` key to your `Info.plist` file (see [Installation](#installation)) and request the alarm authorization using `requestPermissions()`.\n\n### Can I use this plugin with Ionic, React, Vue or Angular?\n\nYes, the plugin is framework-agnostic. It works in any Capacitor app regardless of the web framework, including Ionic with Angular, React, or Vue, as well as plain JavaScript projects.\n\n## Related Plugins\n\n- [Background Task](https://capawesome.io/docs/sdks/capacitor/background-task/): Run background tasks in your app.\n- [Datetime Picker](https://capawesome.io/docs/sdks/capacitor/datetime-picker/): Let the user pick the alarm time with a native date and time picker.\n- [Silent Mode](https://capawesome.io/docs/sdks/capacitor/silent-mode/): Detect whether the device is in silent mode.\n\n## Newsletter\n\nStay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/).\n\n## Changelog\n\nSee [CHANGELOG.md](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/alarm/CHANGELOG.md).\n\n## License\n\nSee [LICENSE](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/alarm/LICENSE).\n","readmeFilename":"README.md"}