{"id":50450239,"url":"https://github.com/Cap-go/capacitor-live-activities","last_synced_at":"2026-06-17T16:01:18.186Z","repository":{"id":362574978,"uuid":"1141574307","full_name":"Cap-go/capacitor-live-activities","owner":"Cap-go","description":"Manage iOS Live Activities from Capacitor","archived":false,"fork":false,"pushed_at":"2026-06-16T09:32:24.000Z","size":311,"stargazers_count":4,"open_issues_count":1,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-16T11:12:21.489Z","etag":null,"topics":["capacitor","capacitor-plugin"],"latest_commit_sha":null,"homepage":"https://capgo.app/docs/plugins/live-activities/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Cap-go.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":"Cap-go","patreon":null,"open_collective":"capgo","ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2026-01-25T03:01:59.000Z","updated_at":"2026-06-16T09:33:20.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Cap-go/capacitor-live-activities","commit_stats":null,"previous_names":["cap-go/capacitor-live-activities"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/Cap-go/capacitor-live-activities","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cap-go%2Fcapacitor-live-activities","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cap-go%2Fcapacitor-live-activities/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cap-go%2Fcapacitor-live-activities/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cap-go%2Fcapacitor-live-activities/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Cap-go","download_url":"https://codeload.github.com/Cap-go/capacitor-live-activities/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cap-go%2Fcapacitor-live-activities/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34453446,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-17T02:00:05.408Z","response_time":127,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["capacitor","capacitor-plugin"],"created_at":"2026-06-01T00:00:37.769Z","updated_at":"2026-06-17T16:01:18.179Z","avatar_url":"https://github.com/Cap-go.png","language":"TypeScript","funding_links":["https://github.com/sponsors/Cap-go","https://opencollective.com/capgo"],"categories":["[Capgo plugins](https://capgo.app/)"],"sub_categories":["UI \u0026 Display"],"readme":"# @capgo/capacitor-live-activities\n\u003ca href=\"https://capgo.app/\"\u003e\u003cimg src=\"https://capgo.app/readme-banner.svg?repo=Cap-go/capacitor-live-activities\" alt=\"Capgo - Instant updates for Capacitor\" /\u003e\u003c/a\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003e\u003ca href=\"https://capgo.app/?ref=plugin_live_activities\"\u003e ➡️ Get Instant updates for your App with Capgo\u003c/a\u003e\u003c/h2\u003e\n  \u003ch2\u003e\u003ca href=\"https://capgo.app/consulting/?ref=plugin_live_activities\"\u003e Missing a feature? We'll build the plugin for you 💪\u003c/a\u003e\u003c/h2\u003e\n\u003c/div\u003e\n\nManage iOS Live Activities from Capacitor with a powerful JSON-based layout system.\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\u003e **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 \u0026 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\u003ckey\u003eNSSupportsLiveActivities\u003c/key\u003e\n\u003ctrue/\u003e\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 () =\u003e {\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 () =\u003e {\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) =\u003e {\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) =\u003e {\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 () =\u003e {\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\u003cdocgen-index\u003e\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\u003c/docgen-index\u003e\n\n\u003cdocgen-api\u003e\n\u003c!--Update the source file JSDoc comments and rerun docgen to update the docs below--\u003e\n\nCapacitor Live Activities Plugin interface for managing iOS Live Activities.\n\n### areActivitiesSupported()\n\n```typescript\nareActivitiesSupported() =\u003e Promise\u003cAreActivitiesSupportedResult\u003e\n```\n\nCheck if Live Activities are supported on this device.\nRequires iOS 16.1+ and device support.\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;\u003ca href=\"#areactivitiessupportedresult\"\u003eAreActivitiesSupportedResult\u003c/a\u003e\u0026gt;\u003c/code\u003e\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### startActivity(...)\n\n```typescript\nstartActivity(options: StartActivityOptions) =\u003e Promise\u003cStartActivityResult\u003e\n```\n\nStart a new Live Activity with the specified layout and data.\n\n| Param         | Type                                                                  | Description                         |\n| ------------- | --------------------------------------------------------------------- | ----------------------------------- |\n| **`options`** | \u003ccode\u003e\u003ca href=\"#startactivityoptions\"\u003eStartActivityOptions\u003c/a\u003e\u003c/code\u003e | - Options for starting the activity |\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;\u003ca href=\"#startactivityresult\"\u003eStartActivityResult\u003c/a\u003e\u0026gt;\u003c/code\u003e\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### updateActivity(...)\n\n```typescript\nupdateActivity(options: UpdateActivityOptions) =\u003e Promise\u003cvoid\u003e\n```\n\nUpdate an existing Live Activity with new data.\n\n| Param         | Type                                                                    | Description                         |\n| ------------- | ----------------------------------------------------------------------- | ----------------------------------- |\n| **`options`** | \u003ccode\u003e\u003ca href=\"#updateactivityoptions\"\u003eUpdateActivityOptions\u003c/a\u003e\u003c/code\u003e | - Options for updating the activity |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### endActivity(...)\n\n```typescript\nendActivity(options: EndActivityOptions) =\u003e Promise\u003cvoid\u003e\n```\n\nEnd a Live Activity.\n\n| Param         | Type                                                              | Description                       |\n| ------------- | ----------------------------------------------------------------- | --------------------------------- |\n| **`options`** | \u003ccode\u003e\u003ca href=\"#endactivityoptions\"\u003eEndActivityOptions\u003c/a\u003e\u003c/code\u003e | - Options for ending the activity |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### getAllActivities()\n\n```typescript\ngetAllActivities() =\u003e Promise\u003cGetAllActivitiesResult\u003e\n```\n\nGet all currently active Live Activities.\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;\u003ca href=\"#getallactivitiesresult\"\u003eGetAllActivitiesResult\u003c/a\u003e\u0026gt;\u003c/code\u003e\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### saveImage(...)\n\n```typescript\nsaveImage(options: SaveImageOptions) =\u003e Promise\u003cSaveImageResult\u003e\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`** | \u003ccode\u003e\u003ca href=\"#saveimageoptions\"\u003eSaveImageOptions\u003c/a\u003e\u003c/code\u003e | - Options for saving the image |\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;\u003ca href=\"#saveimageresult\"\u003eSaveImageResult\u003c/a\u003e\u0026gt;\u003c/code\u003e\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### removeImage(...)\n\n```typescript\nremoveImage(options: RemoveImageOptions) =\u003e Promise\u003cRemoveImageResult\u003e\n```\n\nRemove a saved image from the shared container.\n\n| Param         | Type                                                              | Description                      |\n| ------------- | ----------------------------------------------------------------- | -------------------------------- |\n| **`options`** | \u003ccode\u003e\u003ca href=\"#removeimageoptions\"\u003eRemoveImageOptions\u003c/a\u003e\u003c/code\u003e | - Options for removing the image |\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;\u003ca href=\"#removeimageresult\"\u003eRemoveImageResult\u003c/a\u003e\u0026gt;\u003c/code\u003e\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### listImages()\n\n```typescript\nlistImages() =\u003e Promise\u003cListImagesResult\u003e\n```\n\nList all saved images in the shared container.\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;\u003ca href=\"#listimagesresult\"\u003eListImagesResult\u003c/a\u003e\u0026gt;\u003c/code\u003e\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### cleanupImages()\n\n```typescript\ncleanupImages() =\u003e Promise\u003cvoid\u003e\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() =\u003e Promise\u003c{ version: string; }\u003e\n```\n\nGet the native Capacitor plugin version.\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;{ version: string; }\u0026gt;\u003c/code\u003e\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### startTimerSequence(...)\n\n```typescript\nstartTimerSequence(options: TimerSequenceOptions) =\u003e Promise\u003cTimerSequenceResult\u003e\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`** | \u003ccode\u003e\u003ca href=\"#timersequenceoptions\"\u003eTimerSequenceOptions\u003c/a\u003e\u003c/code\u003e | - Timer sequence configuration |\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;\u003ca href=\"#timersequenceresult\"\u003eTimerSequenceResult\u003c/a\u003e\u0026gt;\u003c/code\u003e\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### pauseTimerSequence(...)\n\n```typescript\npauseTimerSequence(options: { sequenceId: string; }) =\u003e Promise\u003cvoid\u003e\n```\n\nPause the timer sequence.\n\n| Param         | Type                                 | Description                          |\n| ------------- | ------------------------------------ | ------------------------------------ |\n| **`options`** | \u003ccode\u003e{ sequenceId: string; }\u003c/code\u003e | - Options containing the sequence ID |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### resumeTimerSequence(...)\n\n```typescript\nresumeTimerSequence(options: { sequenceId: string; }) =\u003e Promise\u003cvoid\u003e\n```\n\nResume a paused timer sequence.\n\n| Param         | Type                                 | Description                          |\n| ------------- | ------------------------------------ | ------------------------------------ |\n| **`options`** | \u003ccode\u003e{ sequenceId: string; }\u003c/code\u003e | - Options containing the sequence ID |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### stopTimerSequence(...)\n\n```typescript\nstopTimerSequence(options: { sequenceId: string; }) =\u003e Promise\u003cvoid\u003e\n```\n\nStop and dismiss the timer sequence.\n\n| Param         | Type                                 | Description                          |\n| ------------- | ------------------------------------ | ------------------------------------ |\n| **`options`** | \u003ccode\u003e{ sequenceId: string; }\u003c/code\u003e | - Options containing the sequence ID |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### skipTimerStep(...)\n\n```typescript\nskipTimerStep(options: { sequenceId: string; }) =\u003e Promise\u003cvoid\u003e\n```\n\nSkip to the next step in the sequence.\n\n| Param         | Type                                 | Description                          |\n| ------------- | ------------------------------------ | ------------------------------------ |\n| **`options`** | \u003ccode\u003e{ sequenceId: string; }\u003c/code\u003e | - Options containing the sequence ID |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### previousTimerStep(...)\n\n```typescript\npreviousTimerStep(options: { sequenceId: string; }) =\u003e Promise\u003cvoid\u003e\n```\n\nGo back to the previous step in the sequence.\n\n| Param         | Type                                 | Description                          |\n| ------------- | ------------------------------------ | ------------------------------------ |\n| **`options`** | \u003ccode\u003e{ sequenceId: string; }\u003c/code\u003e | - Options containing the sequence ID |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### getTimerState(...)\n\n```typescript\ngetTimerState(options: GetTimerStateOptions) =\u003e Promise\u003cTimerSequenceState\u003e\n```\n\nGet the current state of a timer sequence.\n\n| Param         | Type                                                                  | Description                          |\n| ------------- | --------------------------------------------------------------------- | ------------------------------------ |\n| **`options`** | \u003ccode\u003e\u003ca href=\"#gettimerstateoptions\"\u003eGetTimerStateOptions\u003c/a\u003e\u003c/code\u003e | - Options containing the sequence ID |\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;\u003ca href=\"#timersequencestate\"\u003eTimerSequenceState\u003c/a\u003e\u0026gt;\u003c/code\u003e\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### addListener('timerSequenceEvent', ...)\n\n```typescript\naddListener(eventName: 'timerSequenceEvent', callback: TimerSequenceCallback) =\u003e Promise\u003c{ remove: () =\u003e Promise\u003cvoid\u003e; }\u003e\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`** | \u003ccode\u003e'timerSequenceEvent'\u003c/code\u003e                                       | - The event name to listen for              |\n| **`callback`**  | \u003ccode\u003e\u003ca href=\"#timersequencecallback\"\u003eTimerSequenceCallback\u003c/a\u003e\u003c/code\u003e | - Callback function that receives the event |\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;{ remove: () =\u0026gt; Promise\u0026lt;void\u0026gt;; }\u0026gt;\u003c/code\u003e\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`** | \u003ccode\u003eboolean\u003c/code\u003e | Whether Live Activities are supported on this device |\n| **`reason`**    | \u003ccode\u003estring\u003c/code\u003e  | Reason if not supported                              |\n\n\n#### StartActivityResult\n\nResult of starting an activity\n\n| Prop             | Type                | Description                |\n| ---------------- | ------------------- | -------------------------- |\n| **`activityId`** | \u003ccode\u003estring\u003c/code\u003e | Unique activity identifier |\n\n\n#### StartActivityOptions\n\nOptions for starting a Live Activity\n\n| Prop                      | Type                                                                      | Description                                              |\n| ------------------------- | ------------------------------------------------------------------------- | -------------------------------------------------------- |\n| **`layout`**              | \u003ccode\u003e\u003ca href=\"#activitylayout\"\u003eActivityLayout\u003c/a\u003e\u003c/code\u003e                 | Main activity layout (lock screen widget)                |\n| **`dynamicIslandLayout`** | \u003ccode\u003e\u003ca href=\"#dynamicislandlayout\"\u003eDynamicIslandLayout\u003c/a\u003e\u003c/code\u003e       | Dynamic Island layout configuration                      |\n| **`behavior`**            | \u003ccode\u003e\u003ca href=\"#liveactivitiesbehavior\"\u003eLiveActivitiesBehavior\u003c/a\u003e\u003c/code\u003e | Activity behavior settings                               |\n| **`data`**                | \u003ccode\u003e\u003ca href=\"#record\"\u003eRecord\u003c/a\u003e\u0026lt;string, unknown\u0026gt;\u003c/code\u003e          | Dynamic data for the activity                            |\n| **`staleDate`**           | \u003ccode\u003enumber\u003c/code\u003e                                                       | Stale date timestamp (activity becomes stale after this) |\n| **`relevanceScore`**      | \u003ccode\u003enumber\u003c/code\u003e                                                       | 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`**       | \u003ccode\u003e'container'\u003c/code\u003e                                              |                            |\n| **`direction`**  | \u003ccode\u003e'horizontal' \\| 'vertical' \\| 'zstack'\u003c/code\u003e                   | Layout direction           |\n| **`children`**   | \u003ccode\u003eLayoutElement[]\u003c/code\u003e                                          | Child elements             |\n| **`alignment`**  | \u003ccode\u003e'leading' \\| 'center' \\| 'trailing' \\| 'top' \\| 'bottom'\u003c/code\u003e | Alignment within container |\n| **`spacing`**    | \u003ccode\u003enumber\u003c/code\u003e                                                   | Spacing between children   |\n| **`properties`** | \u003ccode\u003e\u003ca href=\"#baselayoutproperties\"\u003eBaseLayoutProperties\u003c/a\u003e\u003c/code\u003e | Container properties       |\n\n\n#### BaseLayoutProperties\n\nBase layout element properties\n\n| Prop                  | Type                                                                                           | Description                |\n| --------------------- | ---------------------------------------------------------------------------------------------- | -------------------------- |\n| **`padding`**         | \u003ccode\u003enumber \\| { top?: number; bottom?: number; leading?: number; trailing?: number; }\u003c/code\u003e | Padding around the element |\n| **`backgroundColor`** | \u003ccode\u003e\u003ca href=\"#colorstring\"\u003eColorString\u003c/a\u003e\u003c/code\u003e                                            | Background color           |\n| **`cornerRadius`**    | \u003ccode\u003enumber\u003c/code\u003e                                                                            | Corner radius              |\n| **`width`**           | \u003ccode\u003enumber \\| 'infinity'\u003c/code\u003e                                                              | Frame width                |\n| **`height`**          | \u003ccode\u003enumber\u003c/code\u003e                                                                            | Frame height               |\n| **`opacity`**         | \u003ccode\u003enumber\u003c/code\u003e                                                                            | Opacity (0-1)              |\n\n\n#### LayoutElementText\n\nText layout element\n\n| Prop             | Type                                                                                                                  | Description                                        |\n| ---------------- | --------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- |\n| **`type`**       | \u003ccode\u003e'text'\u003c/code\u003e                                                                                                   |                                                    |\n| **`content`**    | \u003ccode\u003estring\u003c/code\u003e                                                                                                   | Text content - supports {{variable}} interpolation |\n| **`fontSize`**   | \u003ccode\u003enumber\u003c/code\u003e                                                                                                   | Font size                                          |\n| **`fontWeight`** | \u003ccode\u003e'ultraLight' \\| 'thin' \\| 'light' \\| 'regular' \\| 'medium' \\| 'semibold' \\| 'bold' \\| 'heavy' \\| 'black'\u003c/code\u003e | Font weight                                        |\n| **`color`**      | \u003ccode\u003e\u003ca href=\"#colorstring\"\u003eColorString\u003c/a\u003e\u003c/code\u003e                                                                   | Text color                                         |\n| **`alignment`**  | \u003ccode\u003e'leading' \\| 'center' \\| 'trailing'\u003c/code\u003e                                                                      | Text alignment                                     |\n| **`lineLimit`**  | \u003ccode\u003enumber\u003c/code\u003e                                                                                                   | Line limit                                         |\n| **`fontDesign`** | \u003ccode\u003e'default' \\| 'monospaced' \\| 'rounded' \\| 'serif'\u003c/code\u003e                                                        | Font design                                        |\n| **`properties`** | \u003ccode\u003e\u003ca href=\"#baselayoutproperties\"\u003eBaseLayoutProperties\u003c/a\u003e\u003c/code\u003e                                                 | Element properties                                 |\n\n\n#### LayoutElementImage\n\nImage layout element\n\n| Prop              | Type                                                                  | Description                                                                    |\n| ----------------- | --------------------------------------------------------------------- | ------------------------------------------------------------------------------ |\n| **`type`**        | \u003ccode\u003e'image'\u003c/code\u003e                                                  |                                                                                |\n| **`source`**      | \u003ccode\u003e'url' \\| 'sfSymbol' \\| 'asset' \\| 'base64' \\| 'saved'\u003c/code\u003e    | Image source type                                                              |\n| **`value`**       | \u003ccode\u003estring\u003c/code\u003e                                                   | Image value (URL, symbol name, asset name, base64 string, or saved image name) |\n| **`width`**       | \u003ccode\u003enumber\u003c/code\u003e                                                   | Image width                                                                    |\n| **`height`**      | \u003ccode\u003enumber\u003c/code\u003e                                                   | Image height                                                                   |\n| **`contentMode`** | \u003ccode\u003e'fit' \\| 'fill'\u003c/code\u003e                                          | Content mode                                                                   |\n| **`tintColor`**   | \u003ccode\u003e\u003ca href=\"#colorstring\"\u003eColorString\u003c/a\u003e\u003c/code\u003e                   | Tint color for SF Symbols                                                      |\n| **`properties`**  | \u003ccode\u003e\u003ca href=\"#baselayoutproperties\"\u003eBaseLayoutProperties\u003c/a\u003e\u003c/code\u003e | Element properties                                                             |\n\n\n#### LayoutElementProgress\n\nProgress bar layout element\n\n| Prop             | Type                                                                  | Description                                      |\n| ---------------- | --------------------------------------------------------------------- | ------------------------------------------------ |\n| **`type`**       | \u003ccode\u003e'progress'\u003c/code\u003e                                               |                                                  |\n| **`value`**      | \u003ccode\u003estring \\| number\u003c/code\u003e                                         | Progress value key in data (0-1) or direct value |\n| **`total`**      | \u003ccode\u003estring \\| number\u003c/code\u003e                                         | Total value key in data or direct value          |\n| **`tint`**       | \u003ccode\u003e\u003ca href=\"#colorstring\"\u003eColorString\u003c/a\u003e\u003c/code\u003e                   | Progress bar color                               |\n| **`properties`** | \u003ccode\u003e\u003ca href=\"#baselayoutproperties\"\u003eBaseLayoutProperties\u003c/a\u003e\u003c/code\u003e | Element properties                               |\n\n\n#### LayoutElementTimer\n\nTimer layout element for countdowns\n\n| Prop                | Type                                                                                                                  | Description                          |\n| ------------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------ |\n| **`type`**          | \u003ccode\u003e'timer'\u003c/code\u003e                                                                                                  |                                      |\n| **`targetDate`**    | \u003ccode\u003estring \\| number\u003c/code\u003e                                                                                         | Target date key in data or timestamp |\n| **`style`**         | \u003ccode\u003e'timer' \\| 'relative' \\| 'offset'\u003c/code\u003e                                                                        | Timer style                          |\n| **`pausesOnReach`** | \u003ccode\u003eboolean\u003c/code\u003e                                                                                                  | Pause when target reached            |\n| **`fontSize`**      | \u003ccode\u003enumber\u003c/code\u003e                                                                                                   | Font size                            |\n| **`color`**         | \u003ccode\u003e\u003ca href=\"#colorstring\"\u003eColorString\u003c/a\u003e\u003c/code\u003e                                                                   | Text color                           |\n| **`fontWeight`**    | \u003ccode\u003e'ultraLight' \\| 'thin' \\| 'light' \\| 'regular' \\| 'medium' \\| 'semibold' \\| 'bold' \\| 'heavy' \\| 'black'\u003c/code\u003e | Font weight                          |\n| **`properties`**    | \u003ccode\u003e\u003ca href=\"#baselayoutproperties\"\u003eBaseLayoutProperties\u003c/a\u003e\u003c/code\u003e                                                 | Element properties                   |\n\n\n#### LayoutElementSpacer\n\nSpacer layout element\n\n| Prop            | Type                  | Description    |\n| --------------- | --------------------- | -------------- |\n| **`type`**      | \u003ccode\u003e'spacer'\u003c/code\u003e |                |\n| **`minLength`** | \u003ccode\u003enumber\u003c/code\u003e   | Minimum length |\n\n\n#### LayoutElementGauge\n\nGauge layout element for circular progress\n\n| Prop                    | Type                                                                                               | Description                                     |\n| ----------------------- | -------------------------------------------------------------------------------------------------- | ----------------------------------------------- |\n| **`type`**              | \u003ccode\u003e'gauge'\u003c/code\u003e                                                                               |                                                 |\n| **`value`**             | \u003ccode\u003estring \\| number\u003c/code\u003e                                                                      | Current value key in data or direct value (0-1) |\n| **`style`**             | \u003ccode\u003e'automatic' \\| 'accessoryCircular' \\| 'accessoryCircularCapacity' \\| 'linearCapacity'\u003c/code\u003e | Gauge style                                     |\n| **`label`**             | \u003ccode\u003estring\u003c/code\u003e                                                                                | Label text                                      |\n| **`currentValueLabel`** | \u003ccode\u003estring\u003c/code\u003e                                                                                | Current value label                             |\n| **`minimumValueLabel`** | \u003ccode\u003estring\u003c/code\u003e                                                                                | Minimum value label                             |\n| **`maximumValueLabel`** | \u003ccode\u003estring\u003c/code\u003e                                                                                | Maximum value label                             |\n| **`tint`**              | \u003ccode\u003e\u003ca href=\"#colorstring\"\u003eColorString\u003c/a\u003e\u003c/code\u003e                                                | Tint color                                      |\n| **`properties`**        | \u003ccode\u003e\u003ca href=\"#baselayoutproperties\"\u003eBaseLayoutProperties\u003c/a\u003e\u003c/code\u003e                              | Element properties                              |\n\n\n#### DynamicIslandLayout\n\nDynamic Island layout configuration\n\n| Prop                  | Type                                                                                | Description                  |\n| --------------------- | ----------------------------------------------------------------------------------- | ---------------------------- |\n| **`expanded`**        | \u003ccode\u003e\u003ca href=\"#dynamicislandexpandedlayout\"\u003eDynamicIslandExpandedLayout\u003c/a\u003e\u003c/code\u003e | Expanded state layout        |\n| **`compactLeading`**  | \u003ccode\u003e\u003ca href=\"#layoutelement\"\u003eLayoutElement\u003c/a\u003e\u003c/code\u003e                             | Compact leading content      |\n| **`compactTrailing`** | \u003ccode\u003e\u003ca href=\"#layoutelement\"\u003eLayoutElement\u003c/a\u003e\u003c/code\u003e                             | Compact trailing content     |\n| **`minimal`**         | \u003ccode\u003e\u003ca href=\"#layoutelement\"\u003eLayoutElement\u003c/a\u003e\u003c/code\u003e                             | Minimal presentation content |\n\n\n#### DynamicIslandExpandedLayout\n\nDynamic Island expanded layout configuration\n\n| Prop           | Type                                                    | Description             |\n| -------------- | ------------------------------------------------------- | ----------------------- |\n| **`leading`**  | \u003ccode\u003e\u003ca href=\"#layoutelement\"\u003eLayoutElement\u003c/a\u003e\u003c/code\u003e | Leading region content  |\n| **`trailing`** | \u003ccode\u003e\u003ca href=\"#layoutelement\"\u003eLayoutElement\u003c/a\u003e\u003c/code\u003e | Trailing region content |\n| **`center`**   | \u003ccode\u003e\u003ca href=\"#layoutelement\"\u003eLayoutElement\u003c/a\u003e\u003c/code\u003e | Center region content   |\n| **`bottom`**   | \u003ccode\u003e\u003ca href=\"#layoutelement\"\u003eLayoutElement\u003c/a\u003e\u003c/code\u003e | Bottom region content   |\n\n\n#### LiveActivitiesBehavior\n\nLive Activity behavior configuration\n\n| Prop                              | Type                                                | Description                    |\n| --------------------------------- | --------------------------------------------------- | ------------------------------ |\n| **`widgetUrl`**                   | \u003ccode\u003estring\u003c/code\u003e                                 | Widget URL for deep linking    |\n| **`backgroundTint`**              | \u003ccode\u003e\u003ca href=\"#colorstring\"\u003eColorString\u003c/a\u003e\u003c/code\u003e | Background tint color          |\n| **`systemActionForegroundColor`** | \u003ccode\u003e\u003ca href=\"#colorstring\"\u003eColorString\u003c/a\u003e\u003c/code\u003e | System action foreground color |\n| **`keyLineTint`**                 | \u003ccode\u003e\u003ca href=\"#colorstring\"\u003eColorString\u003c/a\u003e\u003c/code\u003e | Key line tint color            |\n\n\n#### UpdateActivityOptions\n\nOptions for updating a Live Activity\n\n| Prop                     | Type                                                                              | Description                        |\n| ------------------------ | --------------------------------------------------------------------------------- | ---------------------------------- |\n| **`activityId`**         | \u003ccode\u003estring\u003c/code\u003e                                                               | Activity ID to update              |\n| **`data`**               | \u003ccode\u003e\u003ca href=\"#record\"\u003eRecord\u003c/a\u003e\u0026lt;string, unknown\u0026gt;\u003c/code\u003e                  | Updated data                       |\n| **`alertConfiguration`** | \u003ccode\u003e\u003ca href=\"#activityalertconfiguration\"\u003eActivityAlertConfiguration\u003c/a\u003e\u003c/code\u003e | Optional alert to show with update |\n| **`staleDate`**          | \u003ccode\u003enumber\u003c/code\u003e                                                               | Updated stale date                 |\n| **`relevanceScore`**     | \u003ccode\u003enumber\u003c/code\u003e                                                               | Updated relevance score            |\n\n\n#### ActivityAlertConfiguration\n\nAlert configuration for activity updates\n\n| Prop        | Type                | Description           |\n| ----------- | ------------------- | --------------------- |\n| **`title`** | \u003ccode\u003estring\u003c/code\u003e | Alert title           |\n| **`body`**  | \u003ccode\u003estring\u003c/code\u003e | Alert body            |\n| **`sound`** | \u003ccode\u003estring\u003c/code\u003e | Sound name (optional) |\n\n\n#### EndActivityOptions\n\nOptions for ending a Live Activity\n\n| Prop                  | Type                                                             | Description                                               |\n| --------------------- | ---------------------------------------------------------------- | --------------------------------------------------------- |\n| **`activityId`**      | \u003ccode\u003estring\u003c/code\u003e                                              | Activity ID to end                                        |\n| **`data`**            | \u003ccode\u003e\u003ca href=\"#record\"\u003eRecord\u003c/a\u003e\u0026lt;string, unknown\u0026gt;\u003c/code\u003e | Final data to display                                     |\n| **`dismissalPolicy`** | \u003ccode\u003e'default' \\| 'immediate' \\| 'after'\u003c/code\u003e                 | Dismissal policy                                          |\n| **`dismissAfter`**    | \u003ccode\u003enumber\u003c/code\u003e                                              | Dismiss after timestamp (when dismissalPolicy is 'after') |\n\n\n#### GetAllActivitiesResult\n\nResult of getAllActivities\n\n| Prop             | Type                        | Description        |\n| ---------------- | --------------------------- | ------------------ |\n| **`activities`** | \u003ccode\u003eActivityInfo[]\u003c/code\u003e | List of activities |\n\n\n#### ActivityInfo\n\nActivity info returned from getAllActivities\n\n| Prop             | Type                                                             | Description            |\n| ---------------- | ---------------------------------------------------------------- | ---------------------- |\n| **`activityId`** | \u003ccode\u003estring\u003c/code\u003e                                              | Activity ID            |\n| **`state`**      | \u003ccode\u003e'active' \\| 'ended' \\| 'dismissed' \\| 'stale'\u003c/code\u003e       | Current activity state |\n| **`startDate`**  | \u003ccode\u003enumber\u003c/code\u003e                                              | Activity start date    |\n| **`data`**       | \u003ccode\u003e\u003ca href=\"#record\"\u003eRecord\u003c/a\u003e\u0026lt;string, unknown\u0026gt;\u003c/code\u003e | Current data           |\n\n\n#### SaveImageResult\n\nResult of saving an image\n\n| Prop            | Type                 | Description                     |\n| --------------- | -------------------- | ------------------------------- |\n| **`success`**   | \u003ccode\u003eboolean\u003c/code\u003e | Whether the save was successful |\n| **`imageName`** | \u003ccode\u003estring\u003c/code\u003e  | Saved image name                |\n\n\n#### SaveImageOptions\n\nOptions for saving an image\n\n| Prop                     | Type                | Description                                 |\n| ------------------------ | ------------------- | ------------------------------------------- |\n| **`imageData`**          | \u003ccode\u003estring\u003c/code\u003e | Base64 encoded image data                   |\n| **`name`**               | \u003ccode\u003estring\u003c/code\u003e | Name to save the image as                   |\n| **`compressionQuality`** | \u003ccode\u003enumber\u003c/code\u003e | 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`** | \u003ccode\u003eboolean\u003c/code\u003e | Whether the removal was successful |\n\n\n#### RemoveImageOptions\n\nOptions for removing an image\n\n| Prop       | Type                | Description                 |\n| ---------- | ------------------- | --------------------------- |\n| **`name`** | \u003ccode\u003estring\u003c/code\u003e | Name of the image to remove |\n\n\n#### ListImagesResult\n\nResult of listing images\n\n| Prop         | Type                  | Description               |\n| ------------ | --------------------- | ------------------------- |\n| **`images`** | \u003ccode\u003estring[]\u003c/code\u003e | List of saved image names |\n\n\n#### TimerSequenceResult\n\nResult of starting a timer sequence\n\n| Prop             | Type                | Description                |\n| ---------------- | ------------------- | -------------------------- |\n| **`sequenceId`** | \u003ccode\u003estring\u003c/code\u003e | Unique sequence identifier |\n\n\n#### TimerSequenceOptions\n\nOptions for starting a timer sequence\n\n| Prop                 | Type                     | Description                                                     |\n| -------------------- | ------------------------ | --------------------------------------------------------------- |\n| **`steps`**          | \u003ccode\u003eTimerStep[]\u003c/code\u003e | Array of steps in the sequence                                  |\n| **`title`**          | \u003ccode\u003estring\u003c/code\u003e      | Overall title for the sequence (e.g., \"HIIT Workout\", \"Tabata\") |\n| **`loop`**           | \u003ccode\u003eboolean\u003c/code\u003e     | Whether to loop the sequence when complete                      |\n| **`loopCount`**      | \u003ccode\u003enumber\u003c/code\u003e      | Number of times to loop (if loop is true, 0 means infinite)     |\n| **`soundEnabled`**   | \u003ccode\u003eboolean\u003c/code\u003e     | Play sound on step change (default: true)                       |\n| **`vibrateEnabled`** | \u003ccode\u003eboolean\u003c/code\u003e     | Vibrate on step change (default: true)                          |\n| **`countdownBeeps`** | \u003ccode\u003eboolean\u003c/code\u003e     | Play countdown beeps in last 3 seconds (default: true)          |\n| **`tapUrl`**         | \u003ccode\u003estring\u003c/code\u003e      | Deep link URL when tapping the notification/activity            |\n| **`keepScreenOn`**   | \u003ccode\u003eboolean\u003c/code\u003e     | 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`** | \u003ccode\u003enumber\u003c/code\u003e                                                 | Duration of this step in seconds                                              |\n| **`title`**    | \u003ccode\u003estring\u003c/code\u003e                                                 | Title/instruction for this step (e.g., \"Push-ups\", \"Rest\")                    |\n| **`subtitle`** | \u003ccode\u003estring\u003c/code\u003e                                                 | Optional subtitle (e.g., \"20 reps\", \"High intensity\")                         |\n| **`color`**    | \u003ccode\u003estring\u003c/code\u003e                                                 | Color for this step (hex color, e.g., \"#FF0000\" for work, \"#00FF00\" for rest) |\n| **`icon`**     | \u003ccode\u003estring\u003c/code\u003e                                                 | Optional icon (SF Symbol name on iOS, material icon name on Android)          |\n| **`sound`**    | \u003ccode\u003e'beep' \\| 'bell' \\| 'whistle' \\| 'countdown' \\| 'none'\u003c/code\u003e | 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`**            | \u003ccode\u003estring\u003c/code\u003e                             | Sequence ID                                  |\n| **`isRunning`**             | \u003ccode\u003eboolean\u003c/code\u003e                            | Whether the sequence is running              |\n| **`isPaused`**              | \u003ccode\u003eboolean\u003c/code\u003e                            | Whether the sequence is paused               |\n| **`isComplete`**            | \u003ccode\u003eboolean\u003c/code\u003e                            | Whether the sequence is complete             |\n| **`currentStepIndex`**      | \u003ccode\u003enumber\u003c/code\u003e                             | Current step index (0-based)                 |\n| **`totalSteps`**            | \u003ccode\u003enumber\u003c/code\u003e                             | Total number of steps                        |\n| **`currentStep`**           | \u003ccode\u003e\u003ca href=\"#timerstep\"\u003eTimerStep\u003c/a\u003e\u003c/code\u003e | Current step info                            |\n| **`remainingSeconds`**      | \u003ccode\u003enumber\u003c/code\u003e                             | Remaining seconds in current step            |\n| **`totalRemainingSeconds`** | \u003ccode\u003enumber\u003c/code\u003e                             | Total remaining seconds for entire sequence  |\n| **`elapsedSeconds`**        | \u003ccode\u003enumber\u003c/code\u003e                             | Total elapsed seconds                        |\n| **`currentLoop`**           | \u003ccode\u003enumber\u003c/code\u003e                             | Current loop iteration (1-based, if looping) |\n| **`totalLoops`**            | \u003ccode\u003enumber\u003c/code\u003e                             | 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`** | \u003ccode\u003estring\u003c/code\u003e | 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`**       | \u003ccode\u003e'stepChange' \\| 'complete' \\| 'tick' \\| 'paused' \\| 'resumed' \\| 'stopped' \\| 'loopComplete'\u003c/code\u003e | Event type                        |\n| **`sequenceId`** | \u003ccode\u003estring\u003c/code\u003e                                                                                       | Sequence ID                       |\n| **`state`**      | \u003ccode\u003e\u003ca href=\"#timersequencestate\"\u003eTimerSequenceState\u003c/a\u003e\u003c/code\u003e                                         | 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\u003ccode\u003e\u003ca href=\"#layoutelement\"\u003eLayoutElement\u003c/a\u003e\u003c/code\u003e\n\n\n#### LayoutElement\n\nUnion type for all layout elements\n\n\u003ccode\u003e\u003ca href=\"#layoutelementcontainer\"\u003eLayoutElementContainer\u003c/a\u003e | \u003ca href=\"#layoutelementtext\"\u003eLayoutElementText\u003c/a\u003e | \u003ca href=\"#layoutelementimage\"\u003eLayoutElementImage\u003c/a\u003e | \u003ca href=\"#layoutelementprogress\"\u003eLayoutElementProgress\u003c/a\u003e | \u003ca href=\"#layoutelementtimer\"\u003eLayoutElementTimer\u003c/a\u003e | \u003ca href=\"#layoutelementspacer\"\u003eLayoutElementSpacer\u003c/a\u003e | \u003ca href=\"#layoutelementgauge\"\u003eLayoutElementGauge\u003c/a\u003e\u003c/code\u003e\n\n\n#### ColorString\n\nColor string type - supports hex colors and system colors\n\n\u003ccode\u003estring\u003c/code\u003e\n\n\n#### Record\n\nConstruct a type with a set of properties K of type T\n\n\u003ccode\u003e{\r [P in K]: T;\r }\u003c/code\u003e\n\n\n#### TimerSequenceCallback\n\nCallback type for timer sequence events\n\n\u003ccode\u003e(event: \u003ca href=\"#timersequenceevent\"\u003eTimerSequenceEvent\u003c/a\u003e): void\u003c/code\u003e\n\n\u003c/docgen-api\u003e\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","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCap-go%2Fcapacitor-live-activities","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FCap-go%2Fcapacitor-live-activities","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCap-go%2Fcapacitor-live-activities/lists"}