https://github.com/ebarooni/capacitor-calendar
A capacitor plugin for managing calendar events on iOS and Android, with reminders support on iOS.
https://github.com/ebarooni/capacitor-calendar
android angular calendar capacitor capacitor-plugin eventkit ionic ios kotlin native reminders swift typescript
Last synced: 3 months ago
JSON representation
A capacitor plugin for managing calendar events on iOS and Android, with reminders support on iOS.
- Host: GitHub
- URL: https://github.com/ebarooni/capacitor-calendar
- Owner: ebarooni
- License: mit
- Created: 2024-02-02T22:13:27.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2025-03-07T15:57:54.000Z (about 1 year ago)
- Last Synced: 2025-05-09T21:14:24.864Z (11 months ago)
- Topics: android, angular, calendar, capacitor, capacitor-plugin, eventkit, ionic, ios, kotlin, native, reminders, swift, typescript
- Language: Swift
- Homepage: https://ebarooni.github.io/capacitor-calendar/
- Size: 5.8 MB
- Stars: 52
- Watchers: 4
- Forks: 9
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
- awesome-capacitorjs - @ebarooni/capacitor-calendar - Capacitor plugin for interacting with calendar and reminders. (Plugins / Community Plugins)
- awesome-capacitor - Capacitor Calendar - A plugin for interacting with calendar and reminders. (Other plugins / Specialized Hardware)
README
A capacitor plugin for managing calendar events on iOS and Android, with reminders support on iOS.
## Table of Contents
- [Installation](#installation)
- [Demo](#demo)
- [Setup](#setup)
- [Documentation](#documentation)
- [Changelog](#changelog)
- [API](#api)
- [Contributing](#contributing)
- [License](#license)
## Installation
```bash
npm install @ebarooni/capacitor-calendar
npx cap sync
```
## Demo
| iOS 26 | Android 16 |
| :-----------------------------: | :---------------------------------: |
|  |  |
## Setup
This plugin requires additional platform-specific configuration. Follow the official guides:
- **iOS:** [Migrating to the Latest Calendar Access Levels](https://developer.apple.com/documentation/technotes/tn3152-migrating-to-the-latest-calendar-access-levels)
- **Android:** [Calendar Provider User Permissions](https://developer.android.com/identity/providers/calendar-provider#manifest)
## Documentation
For comprehensive usage examples, detailed explanations, and API references, check out:
- **[Online documentation](https://ebarooni.github.io/capacitor-calendar/)**
- **[Type definitions & examples](src/definitions.ts)**
## Changelog
See [CHANGELOG.md](CHANGELOG.md) for the latest updates and release history.
> [!NOTE]
> Version 7.1.0 introduces breaking changes.
## API
- [`checkPermission(...)`](#checkpermission)
- [`checkAllPermissions()`](#checkallpermissions)
- [`requestPermission(...)`](#requestpermission)
- [`requestAllPermissions()`](#requestallpermissions)
- [`requestWriteOnlyCalendarAccess()`](#requestwriteonlycalendaraccess)
- [`requestReadOnlyCalendarAccess()`](#requestreadonlycalendaraccess)
- [`requestFullCalendarAccess()`](#requestfullcalendaraccess)
- [`requestFullRemindersAccess()`](#requestfullremindersaccess)
- [`createEventWithPrompt(...)`](#createeventwithprompt)
- [`modifyEventWithPrompt(...)`](#modifyeventwithprompt)
- [`createEvent(...)`](#createevent)
- [`modifyEvent(...)`](#modifyevent)
- [`deleteEventsById(...)`](#deleteeventsbyid)
- [`deleteEvent(...)`](#deleteevent)
- [`deleteEventWithPrompt(...)`](#deleteeventwithprompt)
- [`listEventsInRange(...)`](#listeventsinrange)
- [`commit()`](#commit)
- [`selectCalendarsWithPrompt(...)`](#selectcalendarswithprompt)
- [`fetchAllCalendarSources()`](#fetchallcalendarsources)
- [`listCalendars()`](#listcalendars)
- [`getDefaultCalendar()`](#getdefaultcalendar)
- [`openCalendar(...)`](#opencalendar)
- [`createCalendar(...)`](#createcalendar)
- [`deleteCalendar(...)`](#deletecalendar)
- [`modifyCalendar(...)`](#modifycalendar)
- [`fetchAllRemindersSources()`](#fetchallreminderssources)
- [`openReminders()`](#openreminders)
- [`getDefaultRemindersList()`](#getdefaultreminderslist)
- [`getRemindersLists()`](#getreminderslists)
- [`createReminder(...)`](#createreminder)
- [`deleteRemindersById(...)`](#deleteremindersbyid)
- [`deleteReminder(...)`](#deletereminder)
- [`modifyReminder(...)`](#modifyreminder)
- [`getReminderById(...)`](#getreminderbyid)
- [`getRemindersFromLists(...)`](#getremindersfromlists)
- [`deleteReminderWithPrompt(...)`](#deletereminderwithprompt)
- [Interfaces](#interfaces)
- [Type Aliases](#type-aliases)
- [Enums](#enums)
### checkPermission(...)
```typescript
checkPermission(options: { scope: CalendarPermissionScope; }) => Promise<{ result: PermissionState; }>
```
Retrieves the current permission state for a given scope.
| Param | Type |
| ------------- | --------------------------------------------------------------------------------------- |
| **`options`** | { scope: CalendarPermissionScope; } |
**Returns:** Promise<{ result: PermissionState; }>
**Since:** 0.1.0
**Platform:** Android, iOS
---
### checkAllPermissions()
```typescript
checkAllPermissions() => Promise<{ result: CheckAllPermissionsResult; }>
```
Retrieves the current state of all permissions.
**Returns:** Promise<{ result: CheckAllPermissionsResult; }>
**Since:** 0.1.0
**Platform:** Android, iOS
---
### requestPermission(...)
```typescript
requestPermission(options: { scope: CalendarPermissionScope; }) => Promise<{ result: PermissionState; }>
```
Requests permission for a given scope.
| Param | Type |
| ------------- | --------------------------------------------------------------------------------------- |
| **`options`** | { scope: CalendarPermissionScope; } |
**Returns:** Promise<{ result: PermissionState; }>
**Since:** 0.1.0
**Platform:** Android, iOS
---
### requestAllPermissions()
```typescript
requestAllPermissions() => Promise<{ result: RequestAllPermissionsResult; }>
```
Requests permission for all calendar and reminder permissions.
**Returns:** Promise<{ result: CheckAllPermissionsResult; }>
**Since:** 0.1.0
**Platform:** Android, iOS
---
### requestWriteOnlyCalendarAccess()
```typescript
requestWriteOnlyCalendarAccess() => Promise<{ result: PermissionState; }>
```
Requests write access to the calendar.
**Returns:** Promise<{ result: PermissionState; }>
**Since:** 5.4.0
**Platform:** Android, iOS
---
### requestReadOnlyCalendarAccess()
```typescript
requestReadOnlyCalendarAccess() => Promise<{ result: PermissionState; }>
```
Requests read access to the calendar.
**Returns:** Promise<{ result: PermissionState; }>
**Since:** 5.4.0
**Platform:** Android
---
### requestFullCalendarAccess()
```typescript
requestFullCalendarAccess() => Promise<{ result: PermissionState; }>
```
Requests read and write access to the calendar.
**Returns:** Promise<{ result: PermissionState; }>
**Since:** 5.4.0
**Platform:** Android, iOS
---
### requestFullRemindersAccess()
```typescript
requestFullRemindersAccess() => Promise<{ result: PermissionState; }>
```
Requests read and write access to the reminders.
**Returns:** Promise<{ result: PermissionState; }>
**Since:** 5.4.0
**Platform:** iOS
---
### createEventWithPrompt(...)
```typescript
createEventWithPrompt(options?: CreateEventWithPromptOptions | undefined) => Promise<{ id: string | null; }>
```
Opens the system calendar interface to create a new event.
On Android always returns `null`.
Fetch the events to find the ID of the newly created event.
| Param | Type |
| ------------- | ------------------------------------------------------------------------------------- |
| **`options`** | CreateEventWithPromptOptions |
**Returns:** Promise<{ id: string | null; }>
**Since:** 0.1.0
**Platform:** Android, iOS
---
### modifyEventWithPrompt(...)
```typescript
modifyEventWithPrompt(options: ModifyEventWithPromptOptions) => Promise<{ result: EventEditAction | null; }>
```
Opens a system calendar interface to modify an event.
On Android always returns `null`.
| Param | Type |
| ------------- | ------------------------------------------------------------------------------------- |
| **`options`** | ModifyEventWithPromptOptions |
**Returns:** Promise<{ result: EventEditAction | null; }>
**Since:** 6.6.0
**Platform:** Android, iOS
---
### createEvent(...)
```typescript
createEvent(options: CreateEventOptions) => Promise<{ id: string; }>
```
Creates an event in the calendar.
| Param | Type |
| ------------- | ----------------------------------------------------------------- |
| **`options`** | CreateEventOptions |
**Returns:** Promise<{ id: string; }>
**Since:** 0.4.0
**Platform:** iOS, Android
---
### modifyEvent(...)
```typescript
modifyEvent(options: ModifyEventOptions) => Promise
```
Modifies an event.
| Param | Type |
| ------------- | ----------------------------------------------------------------- |
| **`options`** | ModifyEventOptions |
**Since:** 6.6.0
**Platform:** Android, iOS
---
### deleteEventsById(...)
```typescript
deleteEventsById(options: DeleteEventsByIdOptions) => Promise<{ result: DeleteEventsByIdResult; }>
```
Deletes multiple events.
| Param | Type |
| ------------- | --------------------------------------------------------------------------- |
| **`options`** | DeleteEventsByIdOptions |
**Returns:** Promise<{ result: DeleteEventsByIdResult; }>
**Since:** 0.11.0
**Platform:** Android, iOS
---
### deleteEvent(...)
```typescript
deleteEvent(options: DeleteEventOptions) => Promise
```
Deletes an event.
| Param | Type |
| ------------- | ----------------------------------------------------------------- |
| **`options`** | DeleteEventOptions |
**Since:** 7.1.0
**Platform:** Android, iOS
---
### deleteEventWithPrompt(...)
```typescript
deleteEventWithPrompt(options: DeleteEventWithPromptOptions) => Promise<{ deleted: boolean; }>
```
Opens a dialog to delete an event.
| Param | Type |
| ------------- | ------------------------------------------------------------------------------------- |
| **`options`** | DeleteEventWithPromptOptions |
**Returns:** Promise<{ deleted: boolean; }>
**Since:** 7.1.0
**Platform:** Android, iOS
---
### listEventsInRange(...)
```typescript
listEventsInRange(options: ListEventsInRangeOptions) => Promise<{ result: CalendarEvent[]; }>
```
Retrieves the events within a date range.
| Param | Type |
| ------------- | ----------------------------------------------------------------------------- |
| **`options`** | ListEventsInRangeOptions |
**Returns:** Promise<{ result: CalendarEvent[]; }>
**Since:** 0.10.0
**Platform:** Android, iOS
---
### commit()
```typescript
commit() => Promise
```
Save the changes to the calendar.
**Since:** 7.1.0
**Platform:** iOS
---
### selectCalendarsWithPrompt(...)
```typescript
selectCalendarsWithPrompt(options?: SelectCalendarsWithPromptOptions | undefined) => Promise<{ result: Calendar[]; }>
```
Opens a system interface to choose one or multiple calendars.
| Param | Type |
| ------------- | --------------------------------------------------------------------------------------------- |
| **`options`** | SelectCalendarsWithPromptOptions |
**Returns:** Promise<{ result: Calendar[]; }>
**Since:** 0.2.0
**Platform:** iOS
---
### fetchAllCalendarSources()
```typescript
fetchAllCalendarSources() => Promise<{ result: CalendarSource[]; }>
```
Retrieves a list of calendar sources.
**Returns:** Promise<{ result: CalendarSource[]; }>
**Since:** 6.6.0
**Platform:** iOS
---
### listCalendars()
```typescript
listCalendars() => Promise<{ result: Calendar[]; }>
```
Retrieves a list of all available calendars.
**Returns:** Promise<{ result: Calendar[]; }>
**Since:** 7.1.0
**Platform:** Android, iOS
---
### getDefaultCalendar()
```typescript
getDefaultCalendar() => Promise<{ result: Calendar | null; }>
```
Retrieves the default calendar.
**Returns:** Promise<{ result: Calendar | null; }>
**Since:** 0.3.0
**Platform:** Android, iOS
---
### openCalendar(...)
```typescript
openCalendar(options?: OpenCalendarOptions | undefined) => Promise
```
Opens the calendar app.
| Param | Type |
| ------------- | ------------------------------------------------------------------- |
| **`options`** | OpenCalendarOptions |
**Since:** 7.1.0
**Platform:** Android, iOS
---
### createCalendar(...)
```typescript
createCalendar(options: CreateCalendarOptions) => Promise<{ id: string; }>
```
Creates a calendar.
| Param | Type |
| ------------- | ----------------------------------------------------------------------- |
| **`options`** | CreateCalendarOptions |
**Returns:** Promise<{ id: string; }>
**Since:** 5.2.0
**Platform:** Android, iOS
---
### deleteCalendar(...)
```typescript
deleteCalendar(options: DeleteCalendarOptions) => Promise
```
Deletes a calendar by id.
| Param | Type |
| ------------- | ----------------------------------------------------------------------- |
| **`options`** | DeleteCalendarOptions |
**Since:** 5.2.0
**Platform:** Android, iOS
---
### modifyCalendar(...)
```typescript
modifyCalendar(options: ModifyCalendarOptions) => Promise
```
Modifies a calendar with options.
| Param | Type |
| ------------- | ----------------------------------------------------------------------- |
| **`options`** | ModifyCalendarOptions |
**Since:** 7.2.0
**Platform:** Android, iOS
---
### fetchAllRemindersSources()
```typescript
fetchAllRemindersSources() => Promise<{ result: CalendarSource[]; }>
```
Retrieves a list of calendar sources.
**Returns:** Promise<{ result: CalendarSource[]; }>
**Since:** 6.6.0
**Platform:** iOS
---
### openReminders()
```typescript
openReminders() => Promise
```
Opens the reminders app.
**Since:** 7.1.0
**Platform:** iOS
---
### getDefaultRemindersList()
```typescript
getDefaultRemindersList() => Promise<{ result: RemindersList | null; }>
```
Retrieves the default reminders list.
**Returns:** Promise<{ result: Calendar | null; }>
**Since:** 7.1.0
**Platform:** iOS
---
### getRemindersLists()
```typescript
getRemindersLists() => Promise<{ result: RemindersList[]; }>
```
Retrieves all available reminders lists.
**Returns:** Promise<{ result: Calendar[]; }>
**Since:** 7.1.0
**Platform:** iOS
---
### createReminder(...)
```typescript
createReminder(options: CreateReminderOptions) => Promise<{ id: string; }>
```
Creates a reminder.
| Param | Type |
| ------------- | ----------------------------------------------------------------------- |
| **`options`** | CreateReminderOptions |
**Returns:** Promise<{ id: string; }>
**Since:** 0.5.0
**Platform:** iOS
---
### deleteRemindersById(...)
```typescript
deleteRemindersById(options: DeleteRemindersByIdOptions) => Promise<{ result: DeleteRemindersByIdResult; }>
```
Deletes multiple reminders.
| Param | Type |
| ------------- | --------------------------------------------------------------------------------- |
| **`options`** | DeleteRemindersByIdOptions |
**Returns:** Promise<{ result: DeleteRemindersByIdResult; }>
**Since:** 5.3.0
**Platform:** iOS
---
### deleteReminder(...)
```typescript
deleteReminder(options: DeleteReminderOptions) => Promise
```
Deletes a reminder.
| Param | Type |
| ------------- | ----------------------------------------------------------------------- |
| **`options`** | DeleteReminderOptions |
**Since:** 7.1.0
**Platform:** iOS
---
### modifyReminder(...)
```typescript
modifyReminder(options: ModifyReminderOptions) => Promise
```
Modifies a reminder.
| Param | Type |
| ------------- | ----------------------------------------------------------------------- |
| **`options`** | ModifyReminderOptions |
**Since:** 6.7.0
**Platform:** iOS
---
### getReminderById(...)
```typescript
getReminderById(options: GetReminderByIdOptions) => Promise<{ result: Reminder | null; }>
```
Retrieve a reminder by ID.
| Param | Type |
| ------------- | ------------------------------------------------------------------------- |
| **`options`** | GetReminderByIdOptions |
**Returns:** Promise<{ result: Reminder | null; }>
**Since:** 7.1.0
**Platform:** iOS
---
### getRemindersFromLists(...)
```typescript
getRemindersFromLists(options: GetRemindersFromListsOptions) => Promise<{ result: Reminder[]; }>
```
Retrieves reminders from multiple lists.
| Param | Type |
| ------------- | ------------------------------------------------------------------------------------- |
| **`options`** | GetRemindersFromListsOptions |
**Returns:** Promise<{ result: Reminder[]; }>
**Since:** 5.3.0
**Platform:** iOS
---
### deleteReminderWithPrompt(...)
```typescript
deleteReminderWithPrompt(options: DeleteReminderWithPromptOptions) => Promise<{ deleted: boolean; }>
```
Opens a dialog to delete a reminder.
| Param | Type |
| ------------- | ------------------------------------------------------------------------------------------- |
| **`options`** | DeleteReminderWithPromptOptions |
**Returns:** Promise<{ deleted: boolean; }>
**Since:** 7.2.0
**Platform:** iOS
---
### Interfaces
#### CreateEventWithPromptOptions
| Prop | Type | Description | Since | Platform |
| ------------------ | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----- | ------------ |
| **`alerts`** | number[] | Alert times in minutes relative to the event start. Use negative numbers for reminders before the start, and positive numbers for reminders after the start. On iOS only 2 alerts are supported. | 7.1.0 | iOS |
| **`availability`** | EventAvailability | | 7.1.0 | Android, iOS |
| **`calendarId`** | string | | 0.1.0 | iOS |
| **`description`** | string | | 7.1.0 | Android, iOS |
| **`endDate`** | number | | 0.1.0 | Android, iOS |
| **`invitees`** | string[] | An array of emails to invite. | 7.1.0 | Android |
| **`isAllDay`** | boolean | | 0.1.0 | Android, iOS |
| **`location`** | string | | 0.1.0 | Android, iOS |
| **`recurrence`** | EventRecurrenceRule | Rules for creating a recurring event. | 7.3.0 | Android, iOS |
| **`startDate`** | number | | 0.1.0 | Android, iOS |
| **`title`** | string | | 0.1.0 | Android, iOS |
| **`url`** | string | | 0.1.0 | iOS |
#### EventRecurrenceRule
| Prop | Type | Description | Default | Since | Platform |
| -------------------- | ------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ----- | ------------ |
| **`byMonth`** | number[] | Limits a yearly recurrence to specific months of the year. The values should be between 1 and 12. | | 7.1.0 | Android, iOS |
| **`byMonthDay`** | number[] | Limits a monthly recurrence to specific days of the month. The values should be between 1 and 31. | | 7.1.0 | Android, iOS |
| **`byWeekDay`** | number[] | Limits a weekly recurrence to specific weekdays. The values should be between 1 and 7. 1 means Monday and 7 means Sunday. | | 7.3.0 | Android, iOS |
| **`count`** | number | The total number of occurrences. If set, the recurrence ends after this many occurrences. If `count` is provided, `end` is ignored. | | 7.3.0 | Android, iOS |
| **`daysOfTheYear`** | number[] | Limits a yearly recurrence to specific days of the year (1 to 366). | | 7.3.0 | iOS |
| **`end`** | number | End date of the recurrence series as a Unix timestamp in milliseconds. | | 7.1.0 | Android, iOS |
| **`frequency`** | RecurrenceFrequency | How often the event repeats. | | 7.3.0 | Android, iOS |
| **`interval`** | number | The interval between recurrences. Use in combination with `frequency`. For example, a weekly event with an interval of 2, results in the event occurring every 2 weeks. | 1 | 7.3.0 | Android, iOS |
| **`weeksOfTheYear`** | number[] | Limits a yearly recurrence to specific ISO week numbers (1 to 53). | | 7.3.0 | iOS |
#### ModifyEventWithPromptOptions
| Prop | Type | Description | Since | Platform |
| ------------------ | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----- | ------------ |
| **`alerts`** | number[] | Alert times in minutes relative to the event start. Use negative numbers for reminders before the start, and positive numbers for reminders after the start. On iOS only 2 alerts are supported. | 7.1.0 | iOS |
| **`availability`** | EventAvailability | | 7.1.0 | Android, iOS |
| **`calendarId`** | string | | 0.1.0 | iOS |
| **`description`** | string | | 7.1.0 | Android, iOS |
| **`endDate`** | number | | 0.1.0 | Android, iOS |
| **`invitees`** | string[] | An array of emails to invite. | 7.1.0 | Android |
| **`isAllDay`** | boolean | | 0.1.0 | Android, iOS |
| **`location`** | string | | 0.1.0 | Android, iOS |
| **`recurrence`** | EventRecurrenceRule | Rules for creating a recurring event. | 7.3.0 | Android, iOS |
| **`startDate`** | number | | 0.1.0 | Android, iOS |
| **`title`** | string | | 0.1.0 | Android, iOS |
| **`url`** | string | | 0.1.0 | iOS |
| **`id`** | string | The ID of the event to be modified. | 7.1.0 | Android, iOS |
#### CreateEventOptions
| Prop | Type | Description | Default | Since | Platform |
| ------------------ | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------- | ----- | ------------ |
| **`alerts`** | number[] | Alert times in minutes relative to the event start. Use negative numbers for alerts before the start, and positive numbers for alerts after the start. | | 7.1.0 | Android, iOS |
| **`attendees`** | EventGuest[] | The event guests. | | 7.1.0 | Android |
| **`availability`** | EventAvailability | | | 7.1.0 | Android, iOS |
| **`calendarId`** | string | | | 0.1.0 | Android, iOS |
| **`color`** | string | | | 7.1.0 | Android |
| **`commit`** | boolean | Whether to save immediately (`true`) or batch changes for later (`false`). | true | 7.1.0 | iOS |
| **`description`** | string | | | 7.1.0 | Android, iOS |
| **`duration`** | string | Duration of the event in RFC2445 format. | | 7.1.0 | Android |
| **`endDate`** | number | | | 0.1.0 | Android, iOS |
| **`isAllDay`** | boolean | | | 0.1.0 | Android, iOS |
| **`location`** | string | | | 0.1.0 | Android, iOS |
| **`organizer`** | string | Email of the event organizer. | | 7.1.0 | Android |
| **`recurrence`** | EventRecurrenceRule | Rules for creating a recurring event. | | 7.3.0 | Android, iOS |
| **`startDate`** | number | | | 0.1.0 | Android, iOS |
| **`title`** | string | | | 0.4.0 | Android, iOS |
| **`url`** | string | | | 0.1.0 | iOS |
#### EventGuest
| Prop | Type | Since |
| ----------- | ------------------- | ----- |
| **`name`** | string | 7.1.0 |
| **`email`** | string | 7.1.0 |
#### ModifyEventOptions
| Prop | Type | Description | Default | Since | Platform |
| ------------------ | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------- | ----- | ------------ |
| **`alerts`** | number[] | Alert times in minutes relative to the event start. Use negative numbers for alerts before the start, and positive numbers for alerts after the start. | | 7.1.0 | Android, iOS |
| **`attendees`** | EventGuest[] | The event guests. | | 7.1.0 | Android |
| **`availability`** | EventAvailability | | | 7.1.0 | Android, iOS |
| **`calendarId`** | string | | | 0.1.0 | Android, iOS |
| **`color`** | string | | | 7.1.0 | Android |
| **`description`** | string | | | 7.1.0 | Android, iOS |
| **`duration`** | string | Duration of the event in RFC2445 format. | | 7.1.0 | Android |
| **`endDate`** | number | | | 0.1.0 | Android, iOS |
| **`id`** | string | The ID of the event to be modified. | | 7.1.0 | Android, iOS |
| **`isAllDay`** | boolean | | | 0.1.0 | Android, iOS |
| **`location`** | string | | | 0.1.0 | Android, iOS |
| **`recurrence`** | EventRecurrenceRule | Rules for creating a recurring event. | | 7.3.0 | Android, iOS |
| **`organizer`** | string | Email of the event organizer. | | 7.1.0 | Android |
| **`span`** | EventSpan | The span of modifications. | EventSpan.THIS_EVENT | | iOS |
| **`startDate`** | number | | | 0.1.0 | Android, iOS |
| **`title`** | string | | | 0.4.0 | Android, iOS |
| **`url`** | string | | | 0.1.0 | iOS |
#### DeleteEventsByIdResult
| Prop | Type | Since |
| ------------- | --------------------- | ----- |
| **`deleted`** | string[] | 7.1.0 |
| **`failed`** | string[] | 7.1.0 |
#### DeleteEventsByIdOptions
| Prop | Type | Description | Default | Since | Platform |
| ---------- | ----------------------------------------------- | --------------------- | --------------------------------- | ----- | -------- |
| **`ids`** | string[] | | | 7.1.0 | |
| **`span`** | EventSpan | The span of deletion. | EventSpan.THIS_EVENT | | iOS |
#### DeleteEventOptions
| Prop | Type | Description | Default | Since | Platform |
| ---------- | ----------------------------------------------- | --------------------- | --------------------------------- | ----- | -------- |
| **`id`** | string | | | 7.1.0 | |
| **`span`** | EventSpan | The span of deletion. | EventSpan.THIS_EVENT | | iOS |
#### DeleteEventWithPromptOptions
| Prop | Type | Description | Default | Since | Platform |
| ----------------------- | ----------------------------------------------- | ----------------------------------- | --------------------------------- | ----- | ------------ |
| **`id`** | string | | | 7.1.0 | |
| **`span`** | EventSpan | The span of deletion. | EventSpan.THIS_EVENT | | iOS |
| **`title`** | string | Title of the dialog. | | 7.1.0 | Android, iOS |
| **`message`** | string | Message of the dialog. | | 7.1.0 | Android, iOS |
| **`confirmButtonText`** | string | Text to show on the confirm button. | 'Delete' | 7.1.0 | Android, iOS |
| **`cancelButtonText`** | string | Text to show on the cancel button. | 'Cancel' | 7.1.0 | Android, iOS |
#### CalendarEvent
| Prop | Type | Description | Since | Platform |
| ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- | ----- | ------------ |
| **`id`** | string | | 7.1.0 | Android, iOS |
| **`title`** | string | | 7.1.0 | Android, iOS |
| **`calendarId`** | string \| null | | 7.1.0 | Android, iOS |
| **`location`** | string \| null | | 7.1.0 | Android, iOS |
| **`startDate`** | number | | 7.1.0 | Android, iOS |
| **`endDate`** | number | | 7.1.0 | Android, iOS |
| **`isAllDay`** | boolean | | 7.1.0 | Android, iOS |
| **`alerts`** | number[] | Alert times in minutes relative to the event start. | 7.1.0 | Android, iOS |
| **`url`** | string \| null | | 7.1.0 | iOS |
| **`description`** | string \| null | | 7.1.0 | Android, iOS |
| **`availability`** | EventAvailability \| null | | 7.1.0 | Android, iOS |
| **`organizer`** | string \| null | | 7.1.0 | Android, iOS |
| **`color`** | string \| null | | 7.1.0 | Android, iOS |
| **`duration`** | string \| null | | 7.1.0 | Android |
| **`isDetached`** | boolean \| null | | 7.1.0 | iOS |
| **`birthdayContactIdentifier`** | string \| null | | 7.1.0 | iOS |
| **`status`** | EventStatus \| null | | 7.1.0 | Android, iOS |
| **`creationDate`** | number \| null | | 7.1.0 | iOS |
| **`lastModifiedDate`** | number \| null | | 7.1.0 | iOS |
| **`attendees`** | { email: string \| null; name: string \| null; role: AttendeeRole \| null; status: AttendeeStatus \| null; type: AttendeeType \| null; }[] | | 7.1.0 | Android, iOS |
| **`timezone`** | string \| null | | 7.1.0 | Android, iOS |
#### ListEventsInRangeOptions
| Prop | Type | Description | Since |
| ---------- | ------------------- | ------------------------------ | ----- |
| **`from`** | number | The timestamp in milliseconds. | 7.1.0 |
| **`to`** | number | The timestamp in milliseconds. | 7.1.0 |
#### Calendar
| Prop | Type | Description | Since | Platform |
| -------------------------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------ | ----- | ------------ |
| **`id`** | string | | 7.1.0 | Android, iOS |
| **`title`** | string | | 7.1.0 | Android, iOS |
| **`internalTitle`** | string \| null | Internal name of the calendar (`CalendarContract.Calendars.NAME`). | 7.1.0 | Android |
| **`color`** | string | | 7.1.0 | Android, iOS |
| **`isImmutable`** | boolean \| null | | 7.1.0 | iOS |
| **`allowsContentModifications`** | boolean \| null | | 7.1.0 | iOS |
| **`type`** | CalendarType \| null | | 7.1.0 | iOS |
| **`isSubscribed`** | boolean \| null | | 7.1.0 | iOS |
| **`source`** | CalendarSource \| null | | 7.1.0 | iOS |
| **`visible`** | boolean \| null | Indicates if the events from this calendar should be shown. | 7.1.0 | Android |
| **`accountName`** | string \| null | The account under which the calendar is registered. | 7.1.0 | Android |
| **`ownerAccount`** | string \| null | The owner of the calendar. | 7.1.0 | Android |
| **`maxReminders`** | number \| null | Maximum number of reminders allowed per event. | 7.1.0 | Android |
| **`location`** | string \| null | | 7.1.0 | Android |
#### CalendarSource
| Prop | Type | Since |
| ----------- | ----------------------------------------------------------------- | ----- |
| **`type`** | CalendarSourceType | 7.1.0 |
| **`id`** | string | 7.1.0 |
| **`title`** | string | 7.1.0 |
#### SelectCalendarsWithPromptOptions
| Prop | Type | Description | Default | Since |
| ------------------ | ----------------------------------------------------------------------------------- | -------------------------- | ------------------------------------------------------ | ----- |
| **`displayStyle`** | CalendarChooserDisplayStyle | | CalendarChooserDisplayStyle.ALL_CALENDARS | 7.1.0 |
| **`multiple`** | boolean | Allow multiple selections. | false | 7.1.0 |
#### OpenCalendarOptions
| Prop | Type | Default | Since |
| ---------- | ------------------- | ----------------------- | ----- |
| **`date`** | number | Date.now() | 7.1.0 |
#### CreateCalendarOptions
| Prop | Type | Description | Since | Platform |
| ------------------ | ------------------- | ---------------------------------------------------------- | ----- | ------------ |
| **`title`** | string | | 5.2.0 | Android, iOS |
| **`color`** | string | The color of the calendar. Should be provided on Android. | 5.2.0 | Android, iOS |
| **`sourceId`** | string | | 5.2.0 | iOS |
| **`accountName`** | string | Only needed on Android. Typically set to an email address. | 7.1.0 | Android |
| **`ownerAccount`** | string | Only needed on Android. Typically set to an email address. | 7.1.0 | Android |
#### DeleteCalendarOptions
| Prop | Type | Since |
| -------- | ------------------- | ----- |
| **`id`** | string | 7.1.0 |
#### ModifyCalendarOptions
| Prop | Type | Since | Platform |
| ----------- | ------------------- | ----- | ------------ |
| **`id`** | string | 7.2.0 | Android, iOS |
| **`title`** | string | 7.2.0 | Android, iOS |
| **`color`** | string | 7.2.0 | Android, iOS |
#### CreateReminderOptions
| Prop | Type | Description | Since |
| -------------------- | --------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- |
| **`title`** | string | | 7.1.0 |
| **`listId`** | string | | 7.1.0 |
| **`priority`** | number | | 7.1.0 |
| **`isCompleted`** | boolean | | 7.1.0 |
| **`startDate`** | number | | 7.1.0 |
| **`dueDate`** | number | | 7.1.0 |
| **`completionDate`** | number | | 7.1.0 |
| **`notes`** | string | | 7.1.0 |
| **`url`** | string | | 7.1.0 |
| **`location`** | string | | 7.1.0 |
| **`recurrence`** | RecurrenceRule | | 7.1.0 |
| **`alerts`** | number[] | Alert times in minutes relative to the reminder start. Use negative numbers for alerts before the start, and positive numbers for alerts after the start. | 7.1.0 |
#### RecurrenceRule
| Prop | Type | Description | Since |
| --------------- | ------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ----- |
| **`frequency`** | RecurrenceFrequency | | 7.1.0 |
| **`interval`** | number | How often it repeats (e.g. 1 for every occurrence, 2 for every second occurrence). | 7.1.0 |
| **`end`** | number | Timestamp of when the recurrence ends. | 7.1.0 |
#### DeleteRemindersByIdResult
| Prop | Type | Since |
| ------------- | --------------------- | ----- |
| **`deleted`** | string[] | 7.1.0 |
| **`failed`** | string[] | 7.1.0 |
#### DeleteRemindersByIdOptions
| Prop | Type | Since |
| --------- | --------------------- | ----- |
| **`ids`** | string[] | 7.1.0 |
#### DeleteReminderOptions
| Prop | Type | Since |
| -------- | ------------------- | ----- |
| **`id`** | string | 7.1.0 |
#### ModifyReminderOptions
| Prop | Type | Description | Since |
| -------------------- | --------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- |
| **`id`** | string | | 7.1.0 |
| **`title`** | string | | 7.1.0 |
| **`listId`** | string | | 7.1.0 |
| **`priority`** | number | | 7.1.0 |
| **`isCompleted`** | boolean | | 7.1.0 |
| **`startDate`** | number | | 7.1.0 |
| **`dueDate`** | number | | 7.1.0 |
| **`completionDate`** | number | | 7.1.0 |
| **`notes`** | string | | 7.1.0 |
| **`url`** | string | | 7.1.0 |
| **`location`** | string | | 7.1.0 |
| **`recurrence`** | RecurrenceRule | | 7.1.0 |
| **`alerts`** | number[] | Alert times in minutes relative to the reminder start. Use negative numbers for alerts before the start, and positive numbers for alerts after the start. On iOS only 2 alerts are supported. | 7.1.0 |
#### Reminder
| Prop | Type | Since |
| -------------------- | ----------------------------- | ----- |
| **`id`** | string | 7.1.0 |
| **`title`** | string \| null | 7.1.0 |
| **`listId`** | string \| null | 7.1.0 |
| **`isCompleted`** | boolean | 7.1.0 |
| **`priority`** | number \| null | 7.1.0 |
| **`notes`** | string \| null | 7.1.0 |
| **`location`** | string \| null | 7.1.0 |
| **`url`** | string \| null | 7.1.0 |
| **`startDate`** | number \| null | 7.1.0 |
| **`dueDate`** | number \| null | 7.1.0 |
| **`completionDate`** | number \| null | 7.1.0 |
| **`recurrence`** | RecurrenceRule[] | 7.1.0 |
| **`alerts`** | number[] | 7.1.0 |
#### GetReminderByIdOptions
| Prop | Type | Since |
| -------- | ------------------- | ----- |
| **`id`** | string | 7.1.0 |
#### GetRemindersFromListsOptions
| Prop | Type | Since |
| ------------- | --------------------- | ----- |
| **`listIds`** | string[] | 7.1.0 |
#### DeleteReminderWithPromptOptions
| Prop | Type | Description | Default | Since |
| ----------------------- | ------------------- | ----------------------------------- | --------------------- | ----- |
| **`id`** | string | | | 7.2.0 |
| **`title`** | string | Title of the dialog. | | 7.2.0 |
| **`message`** | string | Message of the dialog. | | 7.2.0 |
| **`confirmButtonText`** | string | Text to show on the confirm button. | 'Delete' | 7.2.0 |
| **`cancelButtonText`** | string | Text to show on the cancel button. | 'Cancel' | 7.2.0 |
### Type Aliases
#### PermissionState
'prompt' | 'prompt-with-rationale' | 'granted' | 'denied'
#### CheckAllPermissionsResult
Record<CalendarPermissionScope,{' '}
PermissionState>
#### Record
Construct a type with a set of properties K of type T
{
[P in K]: T;
}
#### RequestAllPermissionsResult
#### RecurrenceFrequency
'daily' | 'weekly' | 'monthly' | 'yearly'
#### EventEditAction
'canceled' | 'saved' | 'deleted'
#### RemindersList
### Enums
#### CalendarPermissionScope
| Members | Value | Description | Since | Platform |
| --------------------- | ----------------------------- | ------------------------------------------------------------ | ----- | ------------ |
| **`READ_CALENDAR`** | 'readCalendar' | Permission required for reading calendar events. | 7.1.0 | Android, iOS |
| **`READ_REMINDERS`** | 'readReminders' | Permission required for reading reminders. | 7.1.0 | iOS |
| **`WRITE_CALENDAR`** | 'writeCalendar' | Permission required for adding or modifying calendar events. | 7.1.0 | Android, iOS |
| **`WRITE_REMINDERS`** | 'writeReminders' | Permission required for adding or modifying reminders. | 7.1.0 | iOS |
#### EventAvailability
| Members | Value | Since | Platform |
| ------------------- | --------------- | ----- | ------------ |
| **`NOT_SUPPORTED`** | -1 | 7.1.0 | iOS |
| **`BUSY`** | | 7.1.0 | Android, iOS |
| **`FREE`** | | 7.1.0 | Android, iOS |
| **`TENTATIVE`** | | 7.1.0 | Android, iOS |
| **`UNAVAILABLE`** | | 7.1.0 | iOS |
#### EventSpan
| Members | Since |
| ---------------------------- | ----- |
| **`THIS_EVENT`** | 7.1.0 |
| **`THIS_AND_FUTURE_EVENTS`** | 7.1.0 |
#### EventStatus
| Members | Value | Since | Platform |
| --------------- | ------------------------ | ----- | ------------ |
| **`NONE`** | 'none' | 7.1.0 | iOS |
| **`CONFIRMED`** | 'confirmed' | 7.1.0 | Android, iOS |
| **`TENTATIVE`** | 'tentative' | 7.1.0 | Android, iOS |
| **`CANCELED`** | 'canceled' | 7.1.0 | Android, iOS |
#### AttendeeRole
| Members | Value | Since | Platform |
| --------------------- | ----------------------------- | ----- | ------------ |
| **`UNKNOWN`** | 'unknown' | 7.1.0 | Android, iOS |
| **`REQUIRED`** | 'required' | 7.1.0 | iOS |
| **`OPTIONAL`** | 'optional' | 7.1.0 | iOS |
| **`CHAIR`** | 'chair' | 7.1.0 | iOS |
| **`NON_PARTICIPANT`** | 'nonParticipant' | 7.1.0 | Android, iOS |
| **`ATTENDEE`** | 'attendee' | 7.1.0 | Android |
| **`ORGANIZER`** | 'organizer' | 7.1.0 | Android |
| **`PERFORMER`** | 'performer' | 7.1.0 | Android |
| **`SPEAKER`** | 'speaker' | 7.1.0 | Android |
#### AttendeeStatus
| Members | Value | Since | Platform |
| ---------------- | ------------------------ | ----- | ------------ |
| **`NONE`** | 'none' | 7.1.0 | Android |
| **`ACCEPTED`** | 'accepted' | 7.1.0 | Android, iOS |
| **`DECLINED`** | 'declined' | 7.1.0 | Android, iOS |
| **`INVITED`** | 'invited' | 7.1.0 | Android |
| **`UNKNOWN`** | 'unknown' | 7.1.0 | iOS |
| **`PENDING`** | 'pending' | 7.1.0 | iOS |
| **`TENTATIVE`** | 'tentative' | 7.1.0 | Android, iOS |
| **`DELEGATED`** | 'delegated' | 7.1.0 | iOS |
| **`COMPLETED`** | 'completed' | 7.1.0 | iOS |
| **`IN_PROCESS`** | 'inProcess' | 7.1.0 | iOS |
#### AttendeeType
| Members | Value | Since | Platform |
| -------------- | ----------------------- | ----- | ------------ |
| **`UNKNOWN`** | 'unknown' | 7.1.0 | Android, iOS |
| **`PERSON`** | 'person' | 7.1.0 | iOS |
| **`ROOM`** | 'room' | 7.1.0 | iOS |
| **`RESOURCE`** | 'resource' | 7.1.0 | Android, iOS |
| **`GROUP`** | 'group' | 7.1.0 | iOS |
| **`REQUIRED`** | 'required' | 7.1.0 | Android |
| **`NONE`** | 'none' | 7.1.0 | Android |
| **`OPTIONAL`** | 'optional' | 7.1.0 | Android |
#### CalendarType
| Members | Since |
| ------------------ | ----- |
| **`LOCAL`** | 7.1.0 |
| **`CAL_DAV`** | 7.1.0 |
| **`EXCHANGE`** | 7.1.0 |
| **`SUBSCRIPTION`** | 7.1.0 |
| **`BIRTHDAY`** | 7.1.0 |
#### CalendarSourceType
| Members | Since |
| ---------------- | ----- |
| **`LOCAL`** | 7.1.0 |
| **`EXCHANGE`** | 7.1.0 |
| **`CAL_DAV`** | 7.1.0 |
| **`MOBILE_ME`** | 7.1.0 |
| **`SUBSCRIBED`** | 7.1.0 |
| **`BIRTHDAYS`** | 7.1.0 |
#### CalendarChooserDisplayStyle
| Members | Since |
| ----------------------------- | ----- |
| **`ALL_CALENDARS`** | 0.2.0 |
| **`WRITABLE_CALENDARS_ONLY`** | 0.2.0 |
## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
## License
This project is licensed under the **MIT License**. See [LICENSE](LICENSE) for details.