{"_id":"@capgo/capacitor-live-activities","_rev":"6-d4772035b1e110cfe24d76fd7ad4106c","name":"@capgo/capacitor-live-activities","dist-tags":{"latest":"1.2.0"},"versions":{"1.1.1":{"name":"@capgo/capacitor-live-activities","version":"1.1.1","keywords":["capacitor","plugin","native","ios","live-activities","dynamic-island"],"author":{"name":"Martin Donadieu","email":"martin@capgo.app"},"license":"MPL-2.0","_id":"@capgo/capacitor-live-activities@1.1.1","maintainers":[{"name":"riderx","email":"martin.donadieu@hey.com"}],"homepage":"https://capgo.app/docs/plugins/live-activities/","bugs":{"url":"https://github.com/Cap-go/capacitor-live-activities/issues"},"dist":{"shasum":"9556ec83dcd152d6b8db8b223ace9fa98487a455","tarball":"https://registry.npmjs.org/@capgo/capacitor-live-activities/-/capacitor-live-activities-1.1.1.tgz","fileCount":25,"integrity":"sha512-sPUkVRoGYuYgSYWLNA3Wv6ZgnxPNSVIzc++pGnyxYINlBOZwT+XhSdZTUsn9gsC4+FOygn0SIA5tTahXmSEASA==","signatures":[{"sig":"MEYCIQDwEB+yCan6mPZmJ9re4tCB+tUqo+V9uppSOT55K+mD/wIhAK7mfVt9jyKosmhpLBr8AjzL0kAil2xydas4nXKQUyXH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capgo%2fcapacitor-live-activities@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":291355},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","gitHead":"5bd442cd1ebeb75ee9863fa27ab6b420548e1ce5","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 CapgoLiveActivitiesPlugin --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-pretty-check \"**/*.{css,html,ts,js,java}\" --plugin=prettier-plugin-java","swiftlint":"node-swiftlint","verify:ios":"xcodebuild -scheme CapgoCapacitorLiveActivities -destination generic/platform=iOS","verify:web":"npm run build","check:wiring":"node scripts/check-capacitor-plugin-wiring.mjs","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew --no-daemon clean build test"},"_npmUser":{"name":"riderx","email":"martin.donadieu@hey.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+https://github.com/Cap-go/capacitor-live-activities.git","type":"git"},"_npmVersion":"11.13.0","description":"Manage iOS Live Activities from Capacitor","directories":{},"_nodeVersion":"24.16.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.1","rimraf":"^6.1.0","rollup":"^4.53.2","prettier":"^3.6.2","swiftlint":"^2.0.0","typescript":"^5.9.3","@types/node":"^24.10.1","@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","eslint-plugin-import":"^2.31.0","prettier-plugin-java":"^2.7.7","prettier-pretty-check":"^0.2.0","@ionic/prettier-config":"^4.0.0","@ionic/swiftlint-config":"^2.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-live-activities_1.1.1_1780611922852_0.5828574105955804","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@capgo/capacitor-live-activities","version":"1.1.2","keywords":["capacitor","plugin","native","ios","live-activities","dynamic-island"],"author":{"name":"Martin Donadieu","email":"martin@capgo.app"},"license":"MPL-2.0","_id":"@capgo/capacitor-live-activities@1.1.2","maintainers":[{"name":"riderx","email":"martin.donadieu@hey.com"}],"homepage":"https://capgo.app/docs/plugins/live-activities/","bugs":{"url":"https://github.com/Cap-go/capacitor-live-activities/issues"},"dist":{"shasum":"58b50c855665831e0a39f8a3b8bbfbe6a24438c8","tarball":"https://registry.npmjs.org/@capgo/capacitor-live-activities/-/capacitor-live-activities-1.1.2.tgz","fileCount":25,"integrity":"sha512-XG9FO0dW2xiZkAyKFXQ1Kud3nqrDLzPMZQW8I2UbSb9to47uvKj0+VikI8iHj17i496r3j9L6AmphO+NjyyCsQ==","signatures":[{"sig":"MEUCIQCKCGQJcHri56ZLtGMnEe7Eanbjr3abHPHn1YqfevVSggIgKOMo7570pM7JiwtLx9ngsyupGqijCyShX3Pj/qomreg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capgo%2fcapacitor-live-activities@1.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":291893},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","gitHead":"5e87ad8456d2ab0502cd6870a6121ba37f196cd2","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 CapgoLiveActivitiesPlugin --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-pretty-check \"**/*.{css,html,ts,js,java}\" --plugin=prettier-plugin-java","swiftlint":"node-swiftlint","verify:ios":"xcodebuild -scheme CapgoCapacitorLiveActivities -destination generic/platform=iOS","verify:web":"npm run build","check:wiring":"node scripts/check-capacitor-plugin-wiring.mjs","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew --no-daemon clean build test"},"_npmUser":{"name":"riderx","email":"martin.donadieu@hey.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+https://github.com/Cap-go/capacitor-live-activities.git","type":"git"},"_npmVersion":"11.13.0","description":"Manage iOS Live Activities from Capacitor","directories":{},"_nodeVersion":"24.16.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.1","rimraf":"^6.1.0","rollup":"^4.53.2","prettier":"^3.6.2","swiftlint":"^2.0.0","typescript":"^5.9.3","@types/node":"^24.10.1","@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","eslint-plugin-import":"^2.31.0","prettier-plugin-java":"^2.7.7","prettier-pretty-check":"^0.2.0","@ionic/prettier-config":"^4.0.0","@ionic/swiftlint-config":"^2.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-live-activities_1.1.2_1781602407106_0.7528442097137067","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@capgo/capacitor-live-activities","version":"1.1.3","keywords":["capacitor","plugin","native","ios","live-activities","dynamic-island"],"author":{"name":"Martin Donadieu","email":"martin@capgo.app"},"license":"MPL-2.0","_id":"@capgo/capacitor-live-activities@1.1.3","maintainers":[{"name":"riderx","email":"martin.donadieu@hey.com"}],"homepage":"https://capgo.app/docs/plugins/live-activities/","bugs":{"url":"https://github.com/Cap-go/capacitor-live-activities/issues"},"dist":{"shasum":"f996fa253de28e6eec8e8677c834f7d8159c6d82","tarball":"https://registry.npmjs.org/@capgo/capacitor-live-activities/-/capacitor-live-activities-1.1.3.tgz","fileCount":25,"integrity":"sha512-7X1eMWDtuKo7Ma5pHY7c5RiY0lhr5mLBx3FO0llb1TP7gCCSIbh5c5r6Xr+CF2qnjsFZGmXlMH99WHhCrWSZ/g==","signatures":[{"sig":"MEYCIQCNUiy9H4iOtLbq0OX9Zxeb6+kHaFVICm6GlOVJx62eEAIhAOxmrjI7EfWHZZh/gbk7wN8iqXD8iMR9PNE6aIIfMXfT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capgo%2fcapacitor-live-activities@1.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":291893},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","gitHead":"637e743355ebc09e7a4c31aefd9d3f190ae4ea4c","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 CapgoLiveActivitiesPlugin --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-pretty-check \"**/*.{css,html,ts,js,java}\" --plugin=prettier-plugin-java","swiftlint":"node-swiftlint","verify:ios":"xcodebuild -scheme CapgoCapacitorLiveActivities -destination generic/platform=iOS","verify:web":"npm run build","check:wiring":"node scripts/check-capacitor-plugin-wiring.mjs","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew --no-daemon clean build test"},"_npmUser":{"name":"riderx","email":"martin.donadieu@hey.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+https://github.com/Cap-go/capacitor-live-activities.git","type":"git"},"_npmVersion":"11.13.0","description":"Manage iOS Live Activities from Capacitor","directories":{},"_nodeVersion":"24.16.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.1","rimraf":"^6.1.0","rollup":"^4.53.2","prettier":"^3.6.2","swiftlint":"^2.0.0","typescript":"^5.9.3","@types/node":"^24.10.1","@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","eslint-plugin-import":"^2.31.0","prettier-plugin-java":"^2.7.7","prettier-pretty-check":"^0.2.0","@ionic/prettier-config":"^4.0.0","@ionic/swiftlint-config":"^2.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-live-activities_1.1.3_1781630763724_0.24148353995079663","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@capgo/capacitor-live-activities","version":"1.1.4","keywords":["capacitor","plugin","native","ios","live-activities","dynamic-island"],"author":{"name":"Martin Donadieu","email":"martin@capgo.app"},"license":"MPL-2.0","_id":"@capgo/capacitor-live-activities@1.1.4","maintainers":[{"name":"riderx","email":"martin.donadieu@hey.com"}],"homepage":"https://capgo.app/docs/plugins/live-activities/","bugs":{"url":"https://github.com/Cap-go/capacitor-live-activities/issues"},"dist":{"shasum":"567fdd9dbb0b2b48e2449430f8840925922bb1a4","tarball":"https://registry.npmjs.org/@capgo/capacitor-live-activities/-/capacitor-live-activities-1.1.4.tgz","fileCount":25,"integrity":"sha512-oWClSbVtFDDbeOd4q1gqcJW+zv3AnP09T48qFUKn796oNfxStOuR9/Oz1l+RC7wwVnFY5bCfb/iixCs16/l8Sw==","signatures":[{"sig":"MEUCIGW3r2s0R6W8oADKoSJlY46dSSufKnuzecjOc/vghQ+8AiEAp6tzVrc/N58HpCGY1s7EvBictZt6AU1wetMPm/ZUe3I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capgo%2fcapacitor-live-activities@1.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":292135},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","gitHead":"463ad7e6050aac3ee2a44607d519bfe938d6dec7","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 CapgoLiveActivitiesPlugin --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-pretty-check \"**/*.{css,html,ts,js,java}\" --plugin=prettier-plugin-java","swiftlint":"node-swiftlint","verify:ios":"xcodebuild -scheme CapgoCapacitorLiveActivities -destination generic/platform=iOS","verify:web":"npm run build","check:wiring":"node scripts/check-capacitor-plugin-wiring.mjs","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew --no-daemon clean build test"},"_npmUser":{"name":"riderx","email":"martin.donadieu@hey.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+https://github.com/Cap-go/capacitor-live-activities.git","type":"git"},"_npmVersion":"11.13.0","description":"Manage iOS Live Activities from Capacitor","directories":{},"_nodeVersion":"24.17.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.1","rimraf":"^6.1.0","rollup":"^4.53.2","prettier":"^3.6.2","swiftlint":"^2.0.0","typescript":"^5.9.3","@types/node":"^24.10.1","@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","eslint-plugin-import":"^2.31.0","prettier-plugin-java":"^2.7.7","prettier-pretty-check":"^0.2.0","@ionic/prettier-config":"^4.0.0","@ionic/swiftlint-config":"^2.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-live-activities_1.1.4_1782395237062_0.27212306265771","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"_id":"@capgo/capacitor-live-activities@1.2.0","bugs":{"url":"https://github.com/Cap-go/capacitor-live-activities/issues"},"dist":{"shasum":"f6103b52a3ca143fdf52ec4b6c5414e4de723207","tarball":"https://registry.npmjs.org/@capgo/capacitor-live-activities/-/capacitor-live-activities-1.2.0.tgz","integrity":"sha512-WhRlVp/duwR8ByFuKh6Jua+W0/9u9dUtD32YBhfu8v38EyU+cOYl6qdZe+9UtjesQih1MP8IDQyY8/vjkUNG6A==","fileCount":25,"unpackedSize":293889,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capgo%2fcapacitor-live-activities@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIC7dEsr5kMfTu9Yg1c0eivOxMPcaPxsDzAhtzh1RnDfHAiA6p4RJ0frf3CSqmTLUsnKQiS/ndRi7Cur0vbsWd1LS9A=="}]},"main":"dist/plugin.cjs.js","name":"@capgo/capacitor-live-activities","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","author":{"name":"Martin Donadieu","email":"martin@capgo.app"},"module":"dist/esm/index.js","gitHead":"2501e0bc2ecf870d781751db29c6bd959487077d","license":"MPL-2.0","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 CapgoLiveActivitiesPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"bun run verify:ios && bun run verify:android && bun run verify:web","prettier":"prettier-pretty-check \"**/*.{css,html,ts,js,java}\" --plugin=prettier-plugin-java","swiftlint":"node-swiftlint","verify:ios":"xcodebuild -scheme CapgoCapacitorLiveActivities -destination generic/platform=iOS","verify:web":"bun run build","changelog:ai":"node scripts/generate-ai-changelog.mjs","check:wiring":"node scripts/check-capacitor-plugin-wiring.mjs","capgo:app:add":"bunx @capgo/cli@latest app add app.capgo.live.activities --name \"Capgo Live Activities\" --icon example-app/assets/capgo-icon.png","example:build":"bun run build && cd example-app && bun install --frozen-lockfile && bun run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew --no-daemon clean build test","example:install":"cd example-app && bun install --frozen-lockfile","deploy:capgo:example":"bun run example:build && cd example-app && bunx @capgo/cli@latest bundle upload app.capgo.live.activities --path dist --channel production --package-json package.json,../package.json --node-modules node_modules,../node_modules --delta --no-key --ignore-checksum-check --version-exists-ok","check:cap9-deprecated":"node scripts/check-cap9-deprecated.mjs"},"version":"1.2.0","_npmUser":{"name":"torichancapgo","email":"tori@capgo.app","approver":{"name":"torichancapgo","email":"tori@capgo.app"}},"homepage":"https://capgo.app/docs/plugins/live-activities/","keywords":["capacitor","plugin","native","ios","live-activities","dynamic-island"],"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+https://github.com/Cap-go/capacitor-live-activities.git","type":"git"},"_npmVersion":"11.19.1","description":"Manage iOS Live Activities from Capacitor","directories":{},"maintainers":[{"name":"riderx","email":"martin.donadieu@hey.com"},{"name":"torichancapgo","email":"tori@capgo.app"}],"_nodeVersion":"24.20.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"devDependencies":{"eslint":"^8.57.1","rimraf":"^6.1.0","rollup":"^4.53.2","prettier":"^3.6.2","swiftlint":"^2.0.0","typescript":"^5.9.3","@types/node":"^24.10.1","@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","eslint-plugin-import":"^2.31.0","prettier-plugin-java":"^2.7.7","prettier-pretty-check":"^0.2.0","@ionic/prettier-config":"^4.0.0","@ionic/swiftlint-config":"^2.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/capacitor-live-activities_1.2.0_1789600477258_0.7128589030384616"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-04T22:25:22.754Z","modified":"2026-09-16T23:14:37.610Z","1.1.1":"2026-06-04T22:25:23.102Z","1.1.2":"2026-06-16T09:33:27.256Z","1.1.3":"2026-06-16T17:26:03.875Z","1.1.4":"2026-06-25T13:47:17.189Z","1.2.0":"2026-09-16T23:14:37.352Z"},"bugs":{"url":"https://github.com/Cap-go/capacitor-live-activities/issues"},"author":{"name":"Martin Donadieu","email":"martin@capgo.app"},"license":"MPL-2.0","homepage":"https://capgo.app/docs/plugins/live-activities/","keywords":["capacitor","plugin","native","ios","live-activities","dynamic-island"],"repository":{"url":"git+https://github.com/Cap-go/capacitor-live-activities.git","type":"git"},"description":"Manage iOS Live Activities from Capacitor","maintainers":[{"name":"riderx","email":"martin.donadieu@hey.com"},{"name":"torichancapgo","email":"tori@capgo.app"}],"readme":"# @capgo/capacitor-live-activities\n<a href=\"https://capgo.app/\"><img src=\"https://capgo.app/readme-banner.svg?repo=Cap-go/capacitor-live-activities\" alt=\"Capgo - Instant updates for Capacitor\" /></a>\n\n<div align=\"center\">\n  <h2><a href=\"https://capgo.app/?ref=plugin_live_activities\"> ➡️ Get Instant updates for your App with Capgo</a></h2>\n  <h2><a href=\"https://capgo.app/consulting/?ref=plugin_live_activities\"> Missing a feature? We'll build the plugin for you 💪</a></h2>\n</div>\n\nManage iOS Live Activities from Capacitor with a powerful JSON-based layout system.\n\n## Demo\n\n<figure>\n  <img src=\"./assets/demo.webp\" alt=\"Animated Live Activities demo showing lock screen and Dynamic Island updates from Capacitor\" width=\"300\" />\n  <figcaption>Live Activity and Dynamic Island updates</figcaption>\n</figure>\n\n## Why Capacitor Live Activities?\n\n- **iOS 16.1+ Live Activities** - Full integration with Apple's Live Activities framework\n- **Dynamic Island Support** - Seamless integration with iPhone 14 Pro+ Dynamic Island\n- **JSON Layout System** - Build complex layouts declaratively without Swift code\n- **Real-time Updates** - Update your activities dynamically from your app\n- **Image Management** - Save and use images in your Live Activities via App Groups\n- **Cross-platform Safe** - Graceful fallbacks on Android and web\n\nEssential for delivery tracking apps, sports scores, ride-sharing, timers, and any app needing real-time lock screen updates.\n\n## Documentation\n\nThe most complete doc is available here: https://capgo.app/docs/plugins/live-activities/\n\n## Compatibility\n\n| Plugin version | Capacitor compatibility | Maintained |\n| -------------- | ----------------------- | ---------- |\n| v8.\\*.\\*       | v8.\\*.\\*                | ✅          |\n| v7.\\*.\\*       | v7.\\*.\\*                | On demand   |\n| v6.\\*.\\*       | v6.\\*.\\*                | ❌          |\n| v5.\\*.\\*       | v5.\\*.\\*                | ❌          |\n\n> **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.\n\n## Install\n\nYou can use our AI-Assisted Setup to install the plugin. Add the Capgo skills to your AI tool using the following command:\n\n```bash\nnpx skills add https://github.com/cap-go/capacitor-skills --skill capacitor-plugins\n```\n\nThen use the following prompt:\n\n```text\nUse the `capacitor-plugins` skill from `cap-go/capacitor-skills` to install the `@capgo/capacitor-live-activities` 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\nbun add @capgo/capacitor-live-activities\nbunx cap sync\n```\n\n## Requirements\n\n- **iOS 16.1+** - Live Activities require iOS 16.1 or later\n- **Widget Extension** - You must create a Widget Extension target in Xcode\n- **App Groups** - Required for sharing data between app and widget\n\n## iOS Setup\n\n### 1. Create Widget Extension\n\nIn Xcode:\n1. File → New → Target\n2. Select \"Widget Extension\"\n3. Name it exactly: `LiveActivities`\n4. Uncheck \"Include Configuration Intent\"\n\n### 2. Configure App Groups\n\n1. Select your main app target → Signing & Capabilities\n2. Add \"App Groups\" capability\n3. Create group: `group.YOUR_BUNDLE_ID.liveactivities`\n4. Add the same App Group to your Widget Extension target\n\n### 3. Enable Live Activities in Info.plist\n\nAdd to your app's Info.plist:\n```xml\n<key>NSSupportsLiveActivities</key>\n<true/>\n```\n\n### 4. Create the Widget Bundle\n\nIn your Widget Extension, create `LiveActivitiesBundle.swift`:\n\n```swift\nimport WidgetKit\nimport SwiftUI\n\n@main\nstruct LiveActivitiesBundle: WidgetBundle {\n    var body: some Widget {\n        // Your Live Activity widget goes here\n        LiveActivityWidget()\n    }\n}\n```\n\n## Usage Examples\n\n### Check Support\n\n```typescript\nimport { CapgoLiveActivities } from '@capgo/capacitor-live-activities';\n\nconst checkSupport = async () => {\n  const { supported, reason } = await CapgoLiveActivities.areActivitiesSupported();\n  if (supported) {\n    console.log('Live Activities are supported!');\n  } else {\n    console.log('Not supported:', reason);\n  }\n};\n```\n\n### Start a Delivery Tracking Activity\n\n```typescript\nimport { CapgoLiveActivities } from '@capgo/capacitor-live-activities';\n\nconst startDeliveryActivity = async () => {\n  const { activityId } = await CapgoLiveActivities.startActivity({\n    layout: {\n      type: 'container',\n      direction: 'vertical',\n      spacing: 8,\n      children: [\n        {\n          type: 'container',\n          direction: 'horizontal',\n          children: [\n            { type: 'image', source: 'sfSymbol', value: 'box.truck.fill', width: 24, height: 24, tintColor: '#007AFF' },\n            { type: 'text', content: 'Order #{{orderNumber}}', fontSize: 16, fontWeight: 'bold' }\n          ]\n        },\n        { type: 'text', content: '{{status}}', fontSize: 14, color: '#666666' },\n        { type: 'progress', value: 'progress', tint: '#34C759' }\n      ]\n    },\n    dynamicIslandLayout: {\n      expanded: {\n        leading: { type: 'image', source: 'sfSymbol', value: 'box.truck.fill', tintColor: '#007AFF' },\n        trailing: { type: 'text', content: '{{eta}}', fontWeight: 'semibold' },\n        center: { type: 'text', content: '{{status}}', fontSize: 14 },\n        bottom: { type: 'progress', value: 'progress', tint: '#34C759' }\n      },\n      compactLeading: { type: 'image', source: 'sfSymbol', value: 'box.truck.fill' },\n      compactTrailing: { type: 'text', content: '{{eta}}' },\n      minimal: { type: 'image', source: 'sfSymbol', value: 'box.truck.fill' }\n    },\n    behavior: {\n      widgetUrl: 'myapp://order/12345'\n    },\n    data: {\n      orderNumber: '12345',\n      status: 'On the way',\n      eta: '10 min',\n      progress: 0.6\n    }\n  });\n\n  console.log('Started activity:', activityId);\n  return activityId;\n};\n```\n\n### Update an Activity\n\n```typescript\nconst updateActivity = async (activityId: string) => {\n  await CapgoLiveActivities.updateActivity({\n    activityId,\n    data: {\n      status: 'Arriving soon!',\n      eta: '2 min',\n      progress: 0.9\n    },\n    alertConfiguration: {\n      title: 'Delivery Update',\n      body: 'Your order is almost there!'\n    }\n  });\n};\n```\n\n### End an Activity\n\n```typescript\nconst endActivity = async (activityId: string) => {\n  await CapgoLiveActivities.endActivity({\n    activityId,\n    data: {\n      status: 'Delivered!',\n      progress: 1.0\n    },\n    dismissalPolicy: 'after',\n    dismissAfter: Date.now() + 3600000 // Keep visible for 1 hour\n  });\n};\n```\n\n### Timer Example (Countdown)\n\n```typescript\nconst startTimerActivity = async () => {\n  const targetDate = Date.now() + 1800000; // 30 minutes from now\n\n  const { activityId } = await CapgoLiveActivities.startActivity({\n    layout: {\n      type: 'container',\n      direction: 'horizontal',\n      spacing: 16,\n      children: [\n        { type: 'image', source: 'sfSymbol', value: 'timer', width: 32, height: 32 },\n        {\n          type: 'container',\n          direction: 'vertical',\n          children: [\n            { type: 'text', content: '{{title}}', fontSize: 16, fontWeight: 'bold' },\n            { type: 'timer', targetDate: 'endTime', style: 'timer', fontSize: 24, fontWeight: 'bold', color: '#FF3B30' }\n          ]\n        }\n      ]\n    },\n    dynamicIslandLayout: {\n      expanded: {\n        center: { type: 'text', content: '{{title}}' },\n        bottom: { type: 'timer', targetDate: 'endTime', style: 'timer', fontSize: 32 }\n      },\n      compactLeading: { type: 'image', source: 'sfSymbol', value: 'timer' },\n      compactTrailing: { type: 'timer', targetDate: 'endTime', style: 'timer' },\n      minimal: { type: 'timer', targetDate: 'endTime', style: 'timer' }\n    },\n    data: {\n      title: 'Cooking Timer',\n      endTime: targetDate\n    }\n  });\n\n  return activityId;\n};\n```\n\n### Using Saved Images\n\n```typescript\n// Save an image first\nconst { imageName } = await CapgoLiveActivities.saveImage({\n  imageData: 'base64EncodedImageData...',\n  name: 'product-thumbnail',\n  compressionQuality: 0.8\n});\n\n// Use in activity layout\nconst { activityId } = await CapgoLiveActivities.startActivity({\n  layout: {\n    type: 'container',\n    direction: 'horizontal',\n    children: [\n      { type: 'image', source: 'saved', value: imageName, width: 48, height: 48, properties: { cornerRadius: 8 } },\n      { type: 'text', content: '{{productName}}', fontSize: 16 }\n    ]\n  },\n  // ... rest of config\n});\n\n// Cleanup when done\nawait CapgoLiveActivities.cleanupImages();\n```\n\n## Layout Elements\n\n### Container\nGroups child elements horizontally, vertically, or stacked.\n\n```typescript\n{\n  type: 'container',\n  direction: 'horizontal' | 'vertical' | 'zstack',\n  alignment: 'leading' | 'center' | 'trailing' | 'top' | 'bottom',\n  spacing: 8,\n  children: [/* ... */],\n  properties: { padding: 12, backgroundColor: '#F5F5F5', cornerRadius: 8 }\n}\n```\n\n### Text\nDisplays text with styling and variable interpolation.\n\n```typescript\n{\n  type: 'text',\n  content: 'Hello {{name}}!',\n  fontSize: 16,\n  fontWeight: 'bold',\n  color: '#000000',\n  alignment: 'center',\n  lineLimit: 2,\n  fontDesign: 'rounded'\n}\n```\n\n### Image\nDisplays images from various sources.\n\n```typescript\n// SF Symbol\n{ type: 'image', source: 'sfSymbol', value: 'star.fill', tintColor: '#FFD700' }\n\n// URL\n{ type: 'image', source: 'url', value: 'https://example.com/image.png', width: 48, height: 48 }\n\n// Saved image\n{ type: 'image', source: 'saved', value: 'my-saved-image' }\n\n// Asset from bundle\n{ type: 'image', source: 'asset', value: 'logo' }\n```\n\n### Progress\nShows a progress bar.\n\n```typescript\n{\n  type: 'progress',\n  value: 'progressValue', // Key in data object (0-1)\n  tint: '#34C759'\n}\n```\n\n### Timer\nDisplays a countdown or elapsed time.\n\n```typescript\n{\n  type: 'timer',\n  targetDate: 'endTime', // Key in data object (timestamp)\n  style: 'timer' | 'relative' | 'offset',\n  fontSize: 24,\n  color: '#FF3B30',\n  pausesOnReach: true\n}\n```\n\n### Gauge\nCircular progress indicator.\n\n```typescript\n{\n  type: 'gauge',\n  value: 'level', // Key in data (0-1)\n  style: 'accessoryCircular',\n  label: 'Battery',\n  tint: '#34C759'\n}\n```\n\n### Spacer\nFlexible space between elements.\n\n```typescript\n{ type: 'spacer', minLength: 8 }\n```\n\n## API\n\n<docgen-index>\n\n* [`areActivitiesSupported()`](#areactivitiessupported)\n* [`startActivity(...)`](#startactivity)\n* [`updateActivity(...)`](#updateactivity)\n* [`endActivity(...)`](#endactivity)\n* [`getAllActivities()`](#getallactivities)\n* [`saveImage(...)`](#saveimage)\n* [`removeImage(...)`](#removeimage)\n* [`listImages()`](#listimages)\n* [`cleanupImages()`](#cleanupimages)\n* [`getPluginVersion()`](#getpluginversion)\n* [`startTimerSequence(...)`](#starttimersequence)\n* [`pauseTimerSequence(...)`](#pausetimersequence)\n* [`resumeTimerSequence(...)`](#resumetimersequence)\n* [`stopTimerSequence(...)`](#stoptimersequence)\n* [`skipTimerStep(...)`](#skiptimerstep)\n* [`previousTimerStep(...)`](#previoustimerstep)\n* [`getTimerState(...)`](#gettimerstate)\n* [`addListener('timerSequenceEvent', ...)`](#addlistenertimersequenceevent-)\n* [Interfaces](#interfaces)\n* [Type Aliases](#type-aliases)\n\n</docgen-index>\n\n<docgen-api>\n<!--Update the source file JSDoc comments and rerun docgen to update the docs below-->\n\nCapacitor Live Activities Plugin interface for managing iOS Live Activities.\n\n### areActivitiesSupported()\n\n```typescript\nareActivitiesSupported() => Promise<AreActivitiesSupportedResult>\n```\n\nCheck if Live Activities are supported on this device.\nRequires iOS 16.1+ and device support.\n\n**Returns:** <code>Promise&lt;<a href=\"#areactivitiessupportedresult\">AreActivitiesSupportedResult</a>&gt;</code>\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### startActivity(...)\n\n```typescript\nstartActivity(options: StartActivityOptions) => Promise<StartActivityResult>\n```\n\nStart a new Live Activity with the specified layout and data.\n\n| Param         | Type                                                                  | Description                         |\n| ------------- | --------------------------------------------------------------------- | ----------------------------------- |\n| **`options`** | <code><a href=\"#startactivityoptions\">StartActivityOptions</a></code> | - Options for starting the activity |\n\n**Returns:** <code>Promise&lt;<a href=\"#startactivityresult\">StartActivityResult</a>&gt;</code>\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### updateActivity(...)\n\n```typescript\nupdateActivity(options: UpdateActivityOptions) => Promise<void>\n```\n\nUpdate an existing Live Activity with new data.\n\n| Param         | Type                                                                    | Description                         |\n| ------------- | ----------------------------------------------------------------------- | ----------------------------------- |\n| **`options`** | <code><a href=\"#updateactivityoptions\">UpdateActivityOptions</a></code> | - Options for updating the activity |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### endActivity(...)\n\n```typescript\nendActivity(options: EndActivityOptions) => Promise<void>\n```\n\nEnd a Live Activity.\n\n| Param         | Type                                                              | Description                       |\n| ------------- | ----------------------------------------------------------------- | --------------------------------- |\n| **`options`** | <code><a href=\"#endactivityoptions\">EndActivityOptions</a></code> | - Options for ending the activity |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### getAllActivities()\n\n```typescript\ngetAllActivities() => Promise<GetAllActivitiesResult>\n```\n\nGet all currently active Live Activities.\n\n**Returns:** <code>Promise&lt;<a href=\"#getallactivitiesresult\">GetAllActivitiesResult</a>&gt;</code>\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### saveImage(...)\n\n```typescript\nsaveImage(options: SaveImageOptions) => Promise<SaveImageResult>\n```\n\nSave an image to the shared App Group container for use in Live Activities.\nImages must be saved to the shared container to be accessible from the widget extension.\n\n| Param         | Type                                                          | Description                    |\n| ------------- | ------------------------------------------------------------- | ------------------------------ |\n| **`options`** | <code><a href=\"#saveimageoptions\">SaveImageOptions</a></code> | - Options for saving the image |\n\n**Returns:** <code>Promise&lt;<a href=\"#saveimageresult\">SaveImageResult</a>&gt;</code>\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### removeImage(...)\n\n```typescript\nremoveImage(options: RemoveImageOptions) => Promise<RemoveImageResult>\n```\n\nRemove a saved image from the shared container.\n\n| Param         | Type                                                              | Description                      |\n| ------------- | ----------------------------------------------------------------- | -------------------------------- |\n| **`options`** | <code><a href=\"#removeimageoptions\">RemoveImageOptions</a></code> | - Options for removing the image |\n\n**Returns:** <code>Promise&lt;<a href=\"#removeimageresult\">RemoveImageResult</a>&gt;</code>\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### listImages()\n\n```typescript\nlistImages() => Promise<ListImagesResult>\n```\n\nList all saved images in the shared container.\n\n**Returns:** <code>Promise&lt;<a href=\"#listimagesresult\">ListImagesResult</a>&gt;</code>\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### cleanupImages()\n\n```typescript\ncleanupImages() => Promise<void>\n```\n\nRemove all saved images from the shared container.\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### getPluginVersion()\n\n```typescript\ngetPluginVersion() => Promise<{ version: string; }>\n```\n\nGet the native Capacitor plugin version.\n\n**Returns:** <code>Promise&lt;{ version: string; }&gt;</code>\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### startTimerSequence(...)\n\n```typescript\nstartTimerSequence(options: TimerSequenceOptions) => Promise<TimerSequenceResult>\n```\n\nStart a timer sequence for workouts/sports.\nOn iOS: Shows in Live Activity and Dynamic Island\nOn Android: Shows as a foreground notification with timer\n\n| Param         | Type                                                                  | Description                    |\n| ------------- | --------------------------------------------------------------------- | ------------------------------ |\n| **`options`** | <code><a href=\"#timersequenceoptions\">TimerSequenceOptions</a></code> | - Timer sequence configuration |\n\n**Returns:** <code>Promise&lt;<a href=\"#timersequenceresult\">TimerSequenceResult</a>&gt;</code>\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### pauseTimerSequence(...)\n\n```typescript\npauseTimerSequence(options: { sequenceId: string; }) => Promise<void>\n```\n\nPause the timer sequence.\n\n| Param         | Type                                 | Description                          |\n| ------------- | ------------------------------------ | ------------------------------------ |\n| **`options`** | <code>{ sequenceId: string; }</code> | - Options containing the sequence ID |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### resumeTimerSequence(...)\n\n```typescript\nresumeTimerSequence(options: { sequenceId: string; }) => Promise<void>\n```\n\nResume a paused timer sequence.\n\n| Param         | Type                                 | Description                          |\n| ------------- | ------------------------------------ | ------------------------------------ |\n| **`options`** | <code>{ sequenceId: string; }</code> | - Options containing the sequence ID |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### stopTimerSequence(...)\n\n```typescript\nstopTimerSequence(options: { sequenceId: string; }) => Promise<void>\n```\n\nStop and dismiss the timer sequence.\n\n| Param         | Type                                 | Description                          |\n| ------------- | ------------------------------------ | ------------------------------------ |\n| **`options`** | <code>{ sequenceId: string; }</code> | - Options containing the sequence ID |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### skipTimerStep(...)\n\n```typescript\nskipTimerStep(options: { sequenceId: string; }) => Promise<void>\n```\n\nSkip to the next step in the sequence.\n\n| Param         | Type                                 | Description                          |\n| ------------- | ------------------------------------ | ------------------------------------ |\n| **`options`** | <code>{ sequenceId: string; }</code> | - Options containing the sequence ID |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### previousTimerStep(...)\n\n```typescript\npreviousTimerStep(options: { sequenceId: string; }) => Promise<void>\n```\n\nGo back to the previous step in the sequence.\n\n| Param         | Type                                 | Description                          |\n| ------------- | ------------------------------------ | ------------------------------------ |\n| **`options`** | <code>{ sequenceId: string; }</code> | - Options containing the sequence ID |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### getTimerState(...)\n\n```typescript\ngetTimerState(options: GetTimerStateOptions) => Promise<TimerSequenceState>\n```\n\nGet the current state of a timer sequence.\n\n| Param         | Type                                                                  | Description                          |\n| ------------- | --------------------------------------------------------------------- | ------------------------------------ |\n| **`options`** | <code><a href=\"#gettimerstateoptions\">GetTimerStateOptions</a></code> | - Options containing the sequence ID |\n\n**Returns:** <code>Promise&lt;<a href=\"#timersequencestate\">TimerSequenceState</a>&gt;</code>\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### addListener('timerSequenceEvent', ...)\n\n```typescript\naddListener(eventName: 'timerSequenceEvent', callback: TimerSequenceCallback) => Promise<{ remove: () => Promise<void>; }>\n```\n\nAdd a listener for timer sequence events.\nEvents include: stepChange, complete, tick, paused, resumed, stopped, loopComplete\n\n| Param           | Type                                                                    | Description                                 |\n| --------------- | ----------------------------------------------------------------------- | ------------------------------------------- |\n| **`eventName`** | <code>'timerSequenceEvent'</code>                                       | - The event name to listen for              |\n| **`callback`**  | <code><a href=\"#timersequencecallback\">TimerSequenceCallback</a></code> | - Callback function that receives the event |\n\n**Returns:** <code>Promise&lt;{ remove: () =&gt; Promise&lt;void&gt;; }&gt;</code>\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### Interfaces\n\n\n#### AreActivitiesSupportedResult\n\nResult of checking if activities are supported\n\n| Prop            | Type                 | Description                                          |\n| --------------- | -------------------- | ---------------------------------------------------- |\n| **`supported`** | <code>boolean</code> | Whether Live Activities are supported on this device |\n| **`reason`**    | <code>string</code>  | Reason if not supported                              |\n\n\n#### StartActivityResult\n\nResult of starting an activity\n\n| Prop             | Type                | Description                |\n| ---------------- | ------------------- | -------------------------- |\n| **`activityId`** | <code>string</code> | Unique activity identifier |\n\n\n#### StartActivityOptions\n\nOptions for starting a Live Activity\n\n| Prop                      | Type                                                                      | Description                                              |\n| ------------------------- | ------------------------------------------------------------------------- | -------------------------------------------------------- |\n| **`layout`**              | <code><a href=\"#activitylayout\">ActivityLayout</a></code>                 | Main activity layout (lock screen widget)                |\n| **`dynamicIslandLayout`** | <code><a href=\"#dynamicislandlayout\">DynamicIslandLayout</a></code>       | Dynamic Island layout configuration                      |\n| **`behavior`**            | <code><a href=\"#liveactivitiesbehavior\">LiveActivitiesBehavior</a></code> | Activity behavior settings                               |\n| **`data`**                | <code><a href=\"#record\">Record</a>&lt;string, unknown&gt;</code>          | Dynamic data for the activity                            |\n| **`staleDate`**           | <code>number</code>                                                       | Stale date timestamp (activity becomes stale after this) |\n| **`relevanceScore`**      | <code>number</code>                                                       | Relevance score for activity ordering (0-100)            |\n\n\n#### LayoutElementContainer\n\nContainer layout element for grouping child elements\n\n| Prop             | Type                                                                  | Description                |\n| ---------------- | --------------------------------------------------------------------- | -------------------------- |\n| **`type`**       | <code>'container'</code>                                              |                            |\n| **`direction`**  | <code>'horizontal' \\| 'vertical' \\| 'zstack'</code>                   | Layout direction           |\n| **`children`**   | <code>LayoutElement[]</code>                                          | Child elements             |\n| **`alignment`**  | <code>'leading' \\| 'center' \\| 'trailing' \\| 'top' \\| 'bottom'</code> | Alignment within container |\n| **`spacing`**    | <code>number</code>                                                   | Spacing between children   |\n| **`properties`** | <code><a href=\"#baselayoutproperties\">BaseLayoutProperties</a></code> | Container properties       |\n\n\n#### BaseLayoutProperties\n\nBase layout element properties\n\n| Prop                  | Type                                                                                           | Description                |\n| --------------------- | ---------------------------------------------------------------------------------------------- | -------------------------- |\n| **`padding`**         | <code>number \\| { top?: number; bottom?: number; leading?: number; trailing?: number; }</code> | Padding around the element |\n| **`backgroundColor`** | <code><a href=\"#colorstring\">ColorString</a></code>                                            | Background color           |\n| **`cornerRadius`**    | <code>number</code>                                                                            | Corner radius              |\n| **`width`**           | <code>number \\| 'infinity'</code>                                                              | Frame width                |\n| **`height`**          | <code>number</code>                                                                            | Frame height               |\n| **`opacity`**         | <code>number</code>                                                                            | Opacity (0-1)              |\n\n\n#### LayoutElementText\n\nText layout element\n\n| Prop             | Type                                                                                                                  | Description                                        |\n| ---------------- | --------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- |\n| **`type`**       | <code>'text'</code>                                                                                                   |                                                    |\n| **`content`**    | <code>string</code>                                                                                                   | Text content - supports {{variable}} interpolation |\n| **`fontSize`**   | <code>number</code>                                                                                                   | Font size                                          |\n| **`fontWeight`** | <code>'ultraLight' \\| 'thin' \\| 'light' \\| 'regular' \\| 'medium' \\| 'semibold' \\| 'bold' \\| 'heavy' \\| 'black'</code> | Font weight                                        |\n| **`color`**      | <code><a href=\"#colorstring\">ColorString</a></code>                                                                   | Text color                                         |\n| **`alignment`**  | <code>'leading' \\| 'center' \\| 'trailing'</code>                                                                      | Text alignment                                     |\n| **`lineLimit`**  | <code>number</code>                                                                                                   | Line limit                                         |\n| **`fontDesign`** | <code>'default' \\| 'monospaced' \\| 'rounded' \\| 'serif'</code>                                                        | Font design                                        |\n| **`properties`** | <code><a href=\"#baselayoutproperties\">BaseLayoutProperties</a></code>                                                 | Element properties                                 |\n\n\n#### LayoutElementImage\n\nImage layout element\n\n| Prop              | Type                                                                  | Description                                                                    |\n| ----------------- | --------------------------------------------------------------------- | ------------------------------------------------------------------------------ |\n| **`type`**        | <code>'image'</code>                                                  |                                                                                |\n| **`source`**      | <code>'url' \\| 'sfSymbol' \\| 'asset' \\| 'base64' \\| 'saved'</code>    | Image source type                                                              |\n| **`value`**       | <code>string</code>                                                   | Image value (URL, symbol name, asset name, base64 string, or saved image name) |\n| **`width`**       | <code>number</code>                                                   | Image width                                                                    |\n| **`height`**      | <code>number</code>                                                   | Image height                                                                   |\n| **`contentMode`** | <code>'fit' \\| 'fill'</code>                                          | Content mode                                                                   |\n| **`tintColor`**   | <code><a href=\"#colorstring\">ColorString</a></code>                   | Tint color for SF Symbols                                                      |\n| **`properties`**  | <code><a href=\"#baselayoutproperties\">BaseLayoutProperties</a></code> | Element properties                                                             |\n\n\n#### LayoutElementProgress\n\nProgress bar layout element\n\n| Prop             | Type                                                                  | Description                                      |\n| ---------------- | --------------------------------------------------------------------- | ------------------------------------------------ |\n| **`type`**       | <code>'progress'</code>                                               |                                                  |\n| **`value`**      | <code>string \\| number</code>                                         | Progress value key in data (0-1) or direct value |\n| **`total`**      | <code>string \\| number</code>                                         | Total value key in data or direct value          |\n| **`tint`**       | <code><a href=\"#colorstring\">ColorString</a></code>                   | Progress bar color                               |\n| **`properties`** | <code><a href=\"#baselayoutproperties\">BaseLayoutProperties</a></code> | Element properties                               |\n\n\n#### LayoutElementTimer\n\nTimer layout element for countdowns\n\n| Prop                | Type                                                                                                                  | Description                          |\n| ------------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------ |\n| **`type`**          | <code>'timer'</code>                                                                                                  |                                      |\n| **`targetDate`**    | <code>string \\| number</code>                                                                                         | Target date key in data or timestamp |\n| **`style`**         | <code>'timer' \\| 'relative' \\| 'offset'</code>                                                                        | Timer style                          |\n| **`pausesOnReach`** | <code>boolean</code>                                                                                                  | Pause when target reached            |\n| **`fontSize`**      | <code>number</code>                                                                                                   | Font size                            |\n| **`color`**         | <code><a href=\"#colorstring\">ColorString</a></code>                                                                   | Text color                           |\n| **`fontWeight`**    | <code>'ultraLight' \\| 'thin' \\| 'light' \\| 'regular' \\| 'medium' \\| 'semibold' \\| 'bold' \\| 'heavy' \\| 'black'</code> | Font weight                          |\n| **`properties`**    | <code><a href=\"#baselayoutproperties\">BaseLayoutProperties</a></code>                                                 | Element properties                   |\n\n\n#### LayoutElementSpacer\n\nSpacer layout element\n\n| Prop            | Type                  | Description    |\n| --------------- | --------------------- | -------------- |\n| **`type`**      | <code>'spacer'</code> |                |\n| **`minLength`** | <code>number</code>   | Minimum length |\n\n\n#### LayoutElementGauge\n\nGauge layout element for circular progress\n\n| Prop                    | Type                                                                                               | Description                                     |\n| ----------------------- | -------------------------------------------------------------------------------------------------- | ----------------------------------------------- |\n| **`type`**              | <code>'gauge'</code>                                                                               |                                                 |\n| **`value`**             | <code>string \\| number</code>                                                                      | Current value key in data or direct value (0-1) |\n| **`style`**             | <code>'automatic' \\| 'accessoryCircular' \\| 'accessoryCircularCapacity' \\| 'linearCapacity'</code> | Gauge style                                     |\n| **`label`**             | <code>string</code>                                                                                | Label text                                      |\n| **`currentValueLabel`** | <code>string</code>                                                                                | Current value label                             |\n| **`minimumValueLabel`** | <code>string</code>                                                                                | Minimum value label                             |\n| **`maximumValueLabel`** | <code>string</code>                                                                                | Maximum value label                             |\n| **`tint`**              | <code><a href=\"#colorstring\">ColorString</a></code>                                                | Tint color                                      |\n| **`properties`**        | <code><a href=\"#baselayoutproperties\">BaseLayoutProperties</a></code>                              | Element properties                              |\n\n\n#### DynamicIslandLayout\n\nDynamic Island layout configuration\n\n| Prop                  | Type                                                                                | Description                  |\n| --------------------- | ----------------------------------------------------------------------------------- | ---------------------------- |\n| **`expanded`**        | <code><a href=\"#dynamicislandexpandedlayout\">DynamicIslandExpandedLayout</a></code> | Expanded state layout        |\n| **`compactLeading`**  | <code><a href=\"#layoutelement\">LayoutElement</a></code>                             | Compact leading content      |\n| **`compactTrailing`** | <code><a href=\"#layoutelement\">LayoutElement</a></code>                             | Compact trailing content     |\n| **`minimal`**         | <code><a href=\"#layoutelement\">LayoutElement</a></code>                             | Minimal presentation content |\n\n\n#### DynamicIslandExpandedLayout\n\nDynamic Island expanded layout configuration\n\n| Prop           | Type                                                    | Description             |\n| -------------- | ------------------------------------------------------- | ----------------------- |\n| **`leading`**  | <code><a href=\"#layoutelement\">LayoutElement</a></code> | Leading region content  |\n| **`trailing`** | <code><a href=\"#layoutelement\">LayoutElement</a></code> | Trailing region content |\n| **`center`**   | <code><a href=\"#layoutelement\">LayoutElement</a></code> | Center region content   |\n| **`bottom`**   | <code><a href=\"#layoutelement\">LayoutElement</a></code> | Bottom region content   |\n\n\n#### LiveActivitiesBehavior\n\nLive Activity behavior configuration\n\n| Prop                              | Type                                                | Description                    |\n| --------------------------------- | --------------------------------------------------- | ------------------------------ |\n| **`widgetUrl`**                   | <code>string</code>                                 | Widget URL for deep linking    |\n| **`backgroundTint`**              | <code><a href=\"#colorstring\">ColorString</a></code> | Background tint color          |\n| **`systemActionForegroundColor`** | <code><a href=\"#colorstring\">ColorString</a></code> | System action foreground color |\n| **`keyLineTint`**                 | <code><a href=\"#colorstring\">ColorString</a></code> | Key line tint color            |\n\n\n#### UpdateActivityOptions\n\nOptions for updating a Live Activity\n\n| Prop                     | Type                                                                              | Description                        |\n| ------------------------ | --------------------------------------------------------------------------------- | ---------------------------------- |\n| **`activityId`**         | <code>string</code>                                                               | Activity ID to update              |\n| **`data`**               | <code><a href=\"#record\">Record</a>&lt;string, unknown&gt;</code>                  | Updated data                       |\n| **`alertConfiguration`** | <code><a href=\"#activityalertconfiguration\">ActivityAlertConfiguration</a></code> | Optional alert to show with update |\n| **`staleDate`**          | <code>number</code>                                                               | Updated stale date                 |\n| **`relevanceScore`**     | <code>number</code>                                                               | Updated relevance score            |\n\n\n#### ActivityAlertConfiguration\n\nAlert configuration for activity updates\n\n| Prop        | Type                | Description           |\n| ----------- | ------------------- | --------------------- |\n| **`title`** | <code>string</code> | Alert title           |\n| **`body`**  | <code>string</code> | Alert body            |\n| **`sound`** | <code>string</code> | Sound name (optional) |\n\n\n#### EndActivityOptions\n\nOptions for ending a Live Activity\n\n| Prop                  | Type                                                             | Description                                               |\n| --------------------- | ---------------------------------------------------------------- | --------------------------------------------------------- |\n| **`activityId`**      | <code>string</code>                                              | Activity ID to end                                        |\n| **`data`**            | <code><a href=\"#record\">Record</a>&lt;string, unknown&gt;</code> | Final data to display                                     |\n| **`dismissalPolicy`** | <code>'default' \\| 'immediate' \\| 'after'</code>                 | Dismissal policy                                          |\n| **`dismissAfter`**    | <code>number</code>                                              | Dismiss after timestamp (when dismissalPolicy is 'after') |\n\n\n#### GetAllActivitiesResult\n\nResult of getAllActivities\n\n| Prop             | Type                        | Description        |\n| ---------------- | --------------------------- | ------------------ |\n| **`activities`** | <code>ActivityInfo[]</code> | List of activities |\n\n\n#### ActivityInfo\n\nActivity info returned from getAllActivities\n\n| Prop             | Type                                                             | Description            |\n| ---------------- | ---------------------------------------------------------------- | ---------------------- |\n| **`activityId`** | <code>string</code>                                              | Activity ID            |\n| **`state`**      | <code>'active' \\| 'ended' \\| 'dismissed' \\| 'stale'</code>       | Current activity state |\n| **`startDate`**  | <code>number</code>                                              | Activity start date    |\n| **`data`**       | <code><a href=\"#record\">Record</a>&lt;string, unknown&gt;</code> | Current data           |\n\n\n#### SaveImageResult\n\nResult of saving an image\n\n| Prop            | Type                 | Description                     |\n| --------------- | -------------------- | ------------------------------- |\n| **`success`**   | <code>boolean</code> | Whether the save was successful |\n| **`imageName`** | <code>string</code>  | Saved image name                |\n\n\n#### SaveImageOptions\n\nOptions for saving an image\n\n| Prop                     | Type                | Description                                 |\n| ------------------------ | ------------------- | ------------------------------------------- |\n| **`imageData`**          | <code>string</code> | Base64 encoded image data                   |\n| **`name`**               | <code>string</code> | Name to save the image as                   |\n| **`compressionQuality`** | <code>number</code> | JPEG compression quality (0-1, default 0.8) |\n\n\n#### RemoveImageResult\n\nResult of removing an image\n\n| Prop          | Type                 | Description                        |\n| ------------- | -------------------- | ---------------------------------- |\n| **`success`** | <code>boolean</code> | Whether the removal was successful |\n\n\n#### RemoveImageOptions\n\nOptions for removing an image\n\n| Prop       | Type                | Description                 |\n| ---------- | ------------------- | --------------------------- |\n| **`name`** | <code>string</code> | Name of the image to remove |\n\n\n#### ListImagesResult\n\nResult of listing images\n\n| Prop         | Type                  | Description               |\n| ------------ | --------------------- | ------------------------- |\n| **`images`** | <code>string[]</code> | List of saved image names |\n\n\n#### TimerSequenceResult\n\nResult of starting a timer sequence\n\n| Prop             | Type                | Description                |\n| ---------------- | ------------------- | -------------------------- |\n| **`sequenceId`** | <code>string</code> | Unique sequence identifier |\n\n\n#### TimerSequenceOptions\n\nOptions for starting a timer sequence\n\n| Prop                 | Type                     | Description                                                     |\n| -------------------- | ------------------------ | --------------------------------------------------------------- |\n| **`steps`**          | <code>TimerStep[]</code> | Array of steps in the sequence                                  |\n| **`title`**          | <code>string</code>      | Overall title for the sequence (e.g., \"HIIT Workout\", \"Tabata\") |\n| **`loop`**           | <code>boolean</code>     | Whether to loop the sequence when complete                      |\n| **`loopCount`**      | <code>number</code>      | Number of times to loop (if loop is true, 0 means infinite)     |\n| **`soundEnabled`**   | <code>boolean</code>     | Play sound on step change (default: true)                       |\n| **`vibrateEnabled`** | <code>boolean</code>     | Vibrate on step change (default: true)                          |\n| **`countdownBeeps`** | <code>boolean</code>     | Play countdown beeps in last 3 seconds (default: true)          |\n| **`tapUrl`**         | <code>string</code>      | Deep link URL when tapping the notification/activity            |\n| **`keepScreenOn`**   | <code>boolean</code>     | Keep screen on during timer (Android only, default: false)      |\n\n\n#### TimerStep\n\nA single step in a timer sequence (e.g., workout interval)\n\n| Prop           | Type                                                                | Description                                                                   |\n| -------------- | ------------------------------------------------------------------- | ----------------------------------------------------------------------------- |\n| **`duration`** | <code>number</code>                                                 | Duration of this step in seconds                                              |\n| **`title`**    | <code>string</code>                                                 | Title/instruction for this step (e.g., \"Push-ups\", \"Rest\")                    |\n| **`subtitle`** | <code>string</code>                                                 | Optional subtitle (e.g., \"20 reps\", \"High intensity\")                         |\n| **`color`**    | <code>string</code>                                                 | Color for this step (hex color, e.g., \"#FF0000\" for work, \"#00FF00\" for rest) |\n| **`icon`**     | <code>string</code>                                                 | Optional icon (SF Symbol name on iOS, material icon name on Android)          |\n| **`sound`**    | <code>'beep' \\| 'bell' \\| 'whistle' \\| 'countdown' \\| 'none'</code> | Optional sound to play when step starts                                       |\n\n\n#### TimerSequenceState\n\nCurrent state of a timer sequence\n\n| Prop                        | Type                                            | Description                                  |\n| --------------------------- | ----------------------------------------------- | -------------------------------------------- |\n| **`sequenceId`**            | <code>string</code>                             | Sequence ID                                  |\n| **`isRunning`**             | <code>boolean</code>                            | Whether the sequence is running              |\n| **`isPaused`**              | <code>boolean</code>                            | Whether the sequence is paused               |\n| **`isComplete`**            | <code>boolean</code>                            | Whether the sequence is complete             |\n| **`currentStepIndex`**      | <code>number</code>                             | Current step index (0-based)                 |\n| **`totalSteps`**            | <code>number</code>                             | Total number of steps                        |\n| **`currentStep`**           | <code><a href=\"#timerstep\">TimerStep</a></code> | Current step info                            |\n| **`remainingSeconds`**      | <code>number</code>                             | Remaining seconds in current step            |\n| **`totalRemainingSeconds`** | <code>number</code>                             | Total remaining seconds for entire sequence  |\n| **`elapsedSeconds`**        | <code>number</code>                             | Total elapsed seconds                        |\n| **`currentLoop`**           | <code>number</code>                             | Current loop iteration (1-based, if looping) |\n| **`totalLoops`**            | <code>number</code>                             | Total loops (0 if infinite or not looping)   |\n\n\n#### GetTimerStateOptions\n\nOptions for getting timer state\n\n| Prop             | Type                | Description                  |\n| ---------------- | ------------------- | ---------------------------- |\n| **`sequenceId`** | <code>string</code> | Sequence ID to get state for |\n\n\n#### TimerSequenceEvent\n\nEvent data for timer sequence events\n\n| Prop             | Type                                                                                                      | Description                       |\n| ---------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------- |\n| **`type`**       | <code>'stepChange' \\| 'complete' \\| 'tick' \\| 'paused' \\| 'resumed' \\| 'stopped' \\| 'loopComplete'</code> | Event type                        |\n| **`sequenceId`** | <code>string</code>                                                                                       | Sequence ID                       |\n| **`state`**      | <code><a href=\"#timersequencestate\">TimerSequenceState</a></code>                                         | Current state when event occurred |\n\n\n### Type Aliases\n\n\n#### ActivityLayout\n\nLayout for the main activity view (lock screen widget)\n\n<code><a href=\"#layoutelement\">LayoutElement</a></code>\n\n\n#### LayoutElement\n\nUnion type for all layout elements\n\n<code><a href=\"#layoutelementcontainer\">LayoutElementContainer</a> | <a href=\"#layoutelementtext\">LayoutElementText</a> | <a href=\"#layoutelementimage\">LayoutElementImage</a> | <a href=\"#layoutelementprogress\">LayoutElementProgress</a> | <a href=\"#layoutelementtimer\">LayoutElementTimer</a> | <a href=\"#layoutelementspacer\">LayoutElementSpacer</a> | <a href=\"#layoutelementgauge\">LayoutElementGauge</a></code>\n\n\n#### ColorString\n\nColor string type - supports hex colors and system colors\n\n<code>string</code>\n\n\n#### Record\n\nConstruct a type with a set of properties K of type T\n\n<code>{\r [P in K]: T;\r }</code>\n\n\n#### TimerSequenceCallback\n\nCallback type for timer sequence events\n\n<code>(event: <a href=\"#timersequenceevent\">TimerSequenceEvent</a>): void</code>\n\n</docgen-api>\n\n## Credits\n\nInspired by [ludufre/capacitor-live-activities](https://github.com/ludufre/capacitor-live-activities) with a simplified API and Capgo integration.\n","readmeFilename":"README.md"}