File: calendar.md | Updated: 11/15/2025
Hide navigation
Search
Ctrl K
Home Guides EAS Reference Learn
Reference version
SDK 54
Archive Expo Snack Discord and Forums Newsletter
A library that provides an API for interacting with the device's system calendars, events, reminders, and associated records.
Android
iOS
Bundled version:
~15.0.7
Copy page
expo-calendar provides an API for interacting with the device's system calendars, events, reminders, and associated records.
Additionally, it provides methods to launch the system-provided calendar UI
to allow user view or edit events. On Android, these methods start the system calendar app using an Intent. On iOS, they present either EKEventViewController
or EKEventEditViewController
as a modal.
Terminal
Copy
-Β npx expo install expo-calendar
If you are installing this in an existing React Native app
, make sure to install expo
in your project.
You can configure expo-calendar using its built-in config plugin
if you use config plugins in your project (Continuous Native Generation (CNG)
). The plugin allows you to configure various properties that cannot be set at runtime and require building a new app binary to take effect. If your app does not use CNG, then you'll need to manually configure the library.
app.json
Copy
{ "expo": { "plugins": [ [ "expo-calendar", { "calendarPermission": "The app needs to access your calendar." } ] ] } }
| Name | Default | Description |
| --- | --- | --- |
| calendarPermission | "Allow $(PRODUCT_NAME) to access your calendar" | Only for:β<br><br>iOS<br><br> <br><br>A string to set the NSCalendarsUsageDescription<br> permission message. |
| remindersPermission | "Allow $(PRODUCT_NAME) to access your reminders" | Only for:β<br><br>iOS<br><br> <br><br>A string to set the NSRemindersUsageDescription<br> permission message. |
Are you using this library in an existing React Native app?
If you're not using Continuous Native Generation (CNG ) (you're using native android and ios projects manually), then you need to configure following permissions in your native projects:
For Android, add android.permission.READ_CALENDAR and android.permission.WRITE_CALENDAR permissions to your project's android/app/src/main/AndroidManifest.xml:
<uses-permission android:name="android.permission.READ_CALENDAR" /> <uses-permission android:name="android.permission.WRITE_CALENDAR" />
For iOS, add NSCalendarsUsageDescription and NSRemindersUsageDescription to your project's ios/[app]/Info.plist:
<key>NSCalendarsUsageDescription</key> <string>Allow $(PRODUCT_NAME) to access your calendar</string> <key>NSRemindersUsageDescription</key> <string>Allow $(PRODUCT_NAME) to access your reminders</string>
Basic Calendar usage
Copy
Open in Snack
import { useEffect } from 'react'; import { StyleSheet, View, Text, Button, Platform } from 'react-native'; import * as Calendar from 'expo-calendar'; export default function App() { useEffect(() => { (async () => { const { status } = await Calendar.requestCalendarPermissionsAsync(); if (status === 'granted') { const calendars = await Calendar.getCalendarsAsync(Calendar.EntityTypes.EVENT); console.log('Here are all your calendars:'); console.log({ calendars }); } })(); }, []); return ( <View style={styles.container}> <Text>Calendar Module Example</Text> <Button title="Create a new calendar" onPress={createCalendar} /> </View> ); } async function getDefaultCalendarSource() { const defaultCalendar = await Calendar.getDefaultCalendarAsync(); return defaultCalendar.source; } async function createCalendar() { const defaultCalendarSource = Platform.OS === 'ios' ? await getDefaultCalendarSource() : { isLocalAccount: true, name: 'Expo Calendar' }; const newCalendarID = await Calendar.createCalendarAsync({ title: 'Expo Calendar', color: 'blue', entityType: Calendar.EntityTypes.EVENT, sourceId: defaultCalendarSource.id, source: defaultCalendarSource, name: 'internalCalendarName', ownerAccount: 'personal', accessLevel: Calendar.CalendarAccessLevel.OWNER, }); console.log(`Your new calendar ID is: ${newCalendarID}`); } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#fff', alignItems: 'center', justifyContent: 'space-around', }, });
Show More
import * as Calendar from 'expo-calendar';
Launching system-provided calendar dialogs
createEventInCalendarAsync(eventData, presentationOptions)| Parameter | Type | Description |
| --- | --- | --- |
| eventData(optional) | [Omit](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys) <[Partial](https://www.typescriptlang.org/docs/handbook/utility-types.html#partialtype) <[Event](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#event) >, 'id'> | A map of details for the event to be created.<br><br>Default:{} |
| presentationOptions(optional) | [PresentationOptions](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#presentationoptions) | Configuration that influences how the calendar UI is presented. |
Launches the calendar UI provided by the OS to create a new event.
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <[DialogEventResult](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#dialogeventresult) >
A promise which resolves with information about the dialog result.
editEventInCalendarAsync(params, presentationOptions)| Parameter | Type |
| --- | --- |
| params | [CalendarDialogParams](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#calendardialogparams) |
| presentationOptions(optional) | [PresentationOptions](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#presentationoptions) |
Launches the calendar UI provided by the OS to edit or delete an event. On Android, this is the same as openEventInCalendarAsync.
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <[DialogEventResult](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#dialogeventresult) >
A promise which resolves with information about the dialog result.
Deprecated Use
openEventInCalendarAsyncinstead.
openEventInCalendar(id)Only for:β
Android
| Parameter | Type | Description |
| --- | --- | --- |
| id | string | ID of the event to open. |
Sends an intent to open the specified event in the OS Calendar app.
Returns:
void
openEventInCalendarAsync(params, presentationOptions)| Parameter | Type |
| --- | --- |
| params | [CalendarDialogParams](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#calendardialogparams) |
| presentationOptions(optional) | [OpenEventPresentationOptions](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#openeventpresentationoptions) |
Launches the calendar UI provided by the OS to preview an event.
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <[OpenEventDialogResult](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#openeventdialogresult) >
A promise which resolves with information about the dialog result.
useCalendarPermissions(options)| Parameter | Type |
| --- | --- |
| options(optional) | PermissionHookOptions<object> |
Check or request permissions to access the calendar. This uses both getCalendarPermissionsAsync and requestCalendarPermissionsAsync to interact with the permissions.
Returns:
[null | PermissionResponse, RequestPermissionMethod<PermissionResponse>, GetPermissionMethod<PermissionResponse>]
Example
const [status, requestPermission] = Calendar.useCalendarPermissions();
useRemindersPermissions(options)| Parameter | Type |
| --- | --- |
| options(optional) | PermissionHookOptions<object> |
Check or request permissions to access reminders. This uses both getRemindersPermissionsAsync and requestRemindersPermissionsAsync to interact with the permissions.
Returns:
[null | PermissionResponse, RequestPermissionMethod<PermissionResponse>, GetPermissionMethod<PermissionResponse>]
Example
const [status, requestPermission] = Calendar.useRemindersPermissions();
Calendar.createAttendeeAsync(eventId, details)Only for:β
Android
| Parameter | Type | Description |
| --- | --- | --- |
| eventId | string | ID of the event to add this attendee to. |
| details(optional) | [Partial](https://www.typescriptlang.org/docs/handbook/utility-types.html#partialtype) <[Attendee](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#attendee) > | A map of details for the attendee to be created.<br><br>Default:{} |
Creates a new attendee record and adds it to the specified event. Note that if eventId specifies a recurring event, this will add the attendee to every instance of the event.
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <string>
A string representing the ID of the newly created attendee record.
Calendar.createCalendarAsync(details)| Parameter | Type | Description |
| --- | --- | --- |
| details(optional) | [Partial](https://www.typescriptlang.org/docs/handbook/utility-types.html#partialtype) <[Calendar](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#calendar) > | A map of details for the calendar to be created.<br><br>Default:{} |
Creates a new calendar on the device, allowing events to be added later and displayed in the OS Calendar app.
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <string>
A string representing the ID of the newly created calendar.
Calendar.createEventAsync(calendarId, eventData)| Parameter | Type | Description |
| --- | --- | --- |
| calendarId | string | ID of the calendar to create this event in. |
| eventData(optional) | [Omit](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys) <[Partial](https://www.typescriptlang.org/docs/handbook/utility-types.html#partialtype) <[Event](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#event) >, 'id' \| 'organizer'> | A map of details for the event to be created.<br><br>Default:{} |
Creates a new event on the specified calendar.
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <string>
A promise which fulfils with a string representing the ID of the newly created event.
Calendar.createReminderAsync(calendarId, reminder)Only for:β
iOS
| Parameter | Type | Description |
| --- | --- | --- |
| calendarId | null \| string | ID of the calendar to create this reminder in (or null to add the calendar to the OS-specified default calendar for reminders). |
| reminder(optional) | [Reminder](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#reminder) | A map of details for the reminder to be created<br><br>Default:{} |
Creates a new reminder on the specified calendar.
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <string>
A promise which fulfils with a string representing the ID of the newly created reminder.
Calendar.deleteAttendeeAsync(id)Only for:β
Android
| Parameter | Type | Description |
| --- | --- | --- |
| id | string | ID of the attendee to delete. |
Deletes an existing attendee record from the device. Use with caution.
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <void>
Calendar.deleteCalendarAsync(id)| Parameter | Type | Description |
| --- | --- | --- |
| id | string | ID of the calendar to delete. |
Deletes an existing calendar and all associated events/reminders/attendees from the device. Use with caution.
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <void>
Calendar.deleteEventAsync(id, recurringEventOptions)| Parameter | Type | Description |
| --- | --- | --- |
| id | string | ID of the event to be deleted. |
| recurringEventOptions(optional) | [RecurringEventOptions](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#recurringeventoptions) | A map of options for recurring events.<br><br>Default:{} |
Deletes an existing event from the device. Use with caution.
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <void>
Calendar.deleteReminderAsync(id)Only for:β
iOS
| Parameter | Type | Description |
| --- | --- | --- |
| id | string | ID of the reminder to be deleted. |
Deletes an existing reminder from the device. Use with caution.
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <void>
Calendar.getAttendeesForEventAsync(id, recurringEventOptions)| Parameter | Type | Description |
| --- | --- | --- |
| id | string | ID of the event to return attendees for. |
| recurringEventOptions(optional) | [RecurringEventOptions](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#recurringeventoptions) | A map of options for recurring events.<br><br>Default:{} |
Gets all attendees for a given event (or instance of a recurring event).
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <[Attendee[]](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#attendee) >
A promise which fulfils with an array of Attendee
associated with the specified event.
Calendar.getCalendarPermissionsAsync()Checks user's permissions for accessing user's calendars.
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <PermissionResponse>
A promise that resolves to an object of type PermissionResponse
.
Calendar.getCalendarsAsync(entityType)| Parameter | Type | Description |
| --- | --- | --- |
| entityType(optional) | string | iOS Only. Not required, but if defined, filters the returned calendars to a specific entity type. Possible values are Calendar.EntityTypes.EVENT (for calendars shown in the Calendar app) and Calendar.EntityTypes.REMINDER (for the Reminders app).<br><br>> Note: If not defined, you will need both permissions: CALENDAR and REMINDERS. |
Gets an array of calendar objects with details about the different calendars stored on the device.
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <[Calendar[]](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#calendar) >
An array of calendar objects matching the provided entity type (if provided).
Calendar.getDefaultCalendarAsync()Only for:β
iOS
Gets an instance of the default calendar object.
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <[Calendar](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#calendar) >
A promise resolving to the Calendar object that is the user's default calendar.
Calendar.getEventAsync(id, recurringEventOptions)| Parameter | Type | Description |
| --- | --- | --- |
| id | string | ID of the event to return. |
| recurringEventOptions(optional) | [RecurringEventOptions](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#recurringeventoptions) | A map of options for recurring events.<br><br>Default:{} |
Returns a specific event selected by ID. If a specific instance of a recurring event is desired, the start date of this instance must also be provided, as instances of recurring events do not have their own unique and stable IDs on either iOS or Android.
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <[Event](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#event) >
A promise which fulfils with an Event
object matching the provided criteria, if one exists.
Calendar.getEventsAsync(calendarIds, startDate, endDate)| Parameter | Type | Description |
| --- | --- | --- |
| calendarIds | string[] | Array of IDs of calendars to search for events in. |
| startDate | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | Beginning of time period to search for events in. |
| endDate | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | End of time period to search for events in. |
Returns all events in a given set of calendars over a specified time period. The filtering has slightly different behavior per-platform - on iOS, all events that overlap at all with the [startDate, endDate] interval are returned, whereas on Android, only events that begin on or after the startDate and end on or before the endDate will be returned.
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <[Event[]](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#event) >
A promise which fulfils with an array of Event
objects matching the search criteria.
Calendar.getReminderAsync(id)Only for:β
iOS
| Parameter | Type | Description |
| --- | --- | --- |
| id | string | ID of the reminder to return. |
Returns a specific reminder selected by ID.
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <[Reminder](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#reminder) >
A promise which fulfils with a Reminder
matching the provided ID, if one exists.
Calendar.getRemindersAsync(calendarIds, status, startDate, endDate)Only for:β
iOS
| Parameter | Type | Description |
| --- | --- | --- |
| calendarIds | (null \| string)[] | Array of IDs of calendars to search for reminders in. |
| status | null \| [ReminderStatus](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#reminderstatus) | One of Calendar.ReminderStatus.COMPLETED or Calendar.ReminderStatus.INCOMPLETE. |
| startDate | null \| [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | Beginning of time period to search for reminders in. Required if status is defined. |
| endDate | null \| [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | End of time period to search for reminders in. Required if status is defined. |
Returns a list of reminders matching the provided criteria. If startDate and endDate are defined, returns all reminders that overlap at all with the [startDate, endDate] interval - i.e. all reminders that end after the startDate or begin before the endDate.
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <[Reminder[]](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#reminder) >
A promise which fulfils with an array of Reminder
objects matching the search criteria.
Calendar.getRemindersPermissionsAsync()Only for:β
iOS
Checks user's permissions for accessing user's reminders.
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <PermissionResponse>
A promise that resolves to an object of type PermissionResponse
.
Calendar.getSourceAsync(id)Only for:β
iOS
| Parameter | Type | Description |
| --- | --- | --- |
| id | string | ID of the source to return. |
Returns a specific source selected by ID.
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <[Source](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#source) >
A promise which fulfils with an array of Source
object matching the provided ID, if one exists.
Calendar.getSourcesAsync()Only for:β
iOS
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <[Source[]](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#source) >
A promise which fulfils with an array of Source
objects all sources for calendars stored on the device.
Calendar.isAvailableAsync()Returns whether the Calendar API is enabled on the current device. This does not check the app permissions.
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <boolean>
Async boolean, indicating whether the Calendar API is available on the current device. Currently, this resolves true on iOS and Android only.
Calendar.requestCalendarPermissionsAsync()Asks the user to grant permissions for accessing user's calendars.
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <PermissionResponse>
A promise that resolves to an object of type PermissionResponse
.
Deprecated Use
requestCalendarPermissionsAsync()instead.
Calendar.requestPermissionsAsync()Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <PermissionResponse>
Calendar.requestRemindersPermissionsAsync()Only for:β
iOS
Asks the user to grant permissions for accessing user's reminders.
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <PermissionResponse>
A promise that resolves to an object of type PermissionResponse
.
Calendar.updateAttendeeAsync(id, details)Only for:β
Android
| Parameter | Type | Description |
| --- | --- | --- |
| id | string | ID of the attendee record to be updated. |
| details(optional) | [Partial](https://www.typescriptlang.org/docs/handbook/utility-types.html#partialtype) <[Attendee](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#attendee) > | A map of properties to be updated.<br><br>Default:{} |
Updates an existing attendee record. To remove a property, explicitly set it to null in details.
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <string>
Calendar.updateCalendarAsync(id, details)| Parameter | Type | Description |
| --- | --- | --- |
| id | string | ID of the calendar to update. |
| details(optional) | [Partial](https://www.typescriptlang.org/docs/handbook/utility-types.html#partialtype) <[Calendar](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#calendar) > | A map of properties to be updated.<br><br>Default:{} |
Updates the provided details of an existing calendar stored on the device. To remove a property, explicitly set it to null in details.
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <string>
Calendar.updateEventAsync(id, details, recurringEventOptions)| Parameter | Type | Description |
| --- | --- | --- |
| id | string | ID of the event to be updated. |
| details(optional) | [Omit](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys) <[Partial](https://www.typescriptlang.org/docs/handbook/utility-types.html#partialtype) <[Event](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#event) >, 'id'> | A map of properties to be updated.<br><br>Default:{} |
| recurringEventOptions(optional) | [RecurringEventOptions](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#recurringeventoptions) | A map of options for recurring events.<br><br>Default:{} |
Updates the provided details of an existing calendar stored on the device. To remove a property, explicitly set it to null in details.
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <string>
Calendar.updateReminderAsync(id, details)Only for:β
iOS
| Parameter | Type | Description |
| --- | --- | --- |
| id | string | ID of the reminder to be updated. |
| details(optional) | [Reminder](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#reminder) | A map of properties to be updated.<br><br>Default:{} |
Updates the provided details of an existing reminder stored on the device. To remove a property, explicitly set it to null in details.
Returns:
[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <string>
AlarmA method for having the OS automatically remind the user about a calendar item.
| Property | Type | Description |
| --- | --- | --- |
| absoluteDate(optional) | string | Only for:β<br><br>iOS<br><br> <br><br>Date object or string representing an absolute time the alarm should occur. Overrides relativeOffset and structuredLocation if specified alongside either. |
| method(optional) | [AlarmMethod](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#alarmmethod) | Only for:β<br><br>Android<br><br> <br><br>Method of alerting the user that this alarm should use. On iOS this is always a notification. |
| relativeOffset(optional) | number | Number of minutes from the startDate of the calendar item that the alarm should occur. Use negative values to have the alarm occur before the startDate. |
| structuredLocation(optional) | [AlarmLocation](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#alarmlocation) | - |
AlarmLocation| Property | Type | Description |
| --- | --- | --- |
| coords(optional) | { latitude: number, longitude: number } | - |
| proximity(optional) | string | - |
| radius(optional) | number | - |
| title(optional) | string | Only for:β<br><br>iOS<br><br> <br><br>- |
AttendeeA person or entity that is associated with an event by being invited or fulfilling some other role.
| Property | Type | Description |
| --- | --- | --- |
| email(optional) | string | Only for:β<br><br>Android<br><br> <br><br>Email address of the attendee. |
| id(optional) | string | Only for:β<br><br>Android<br><br> <br><br>Internal ID that represents this attendee on the device. |
| isCurrentUser(optional) | boolean | Only for:β<br><br>iOS<br><br> <br><br>Indicates whether or not this attendee is the current OS user. |
| name | string | Displayed name of the attendee. |
| role | [AttendeeRole](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#attendeerole) | Role of the attendee at the event. |
| status | [AttendeeStatus](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#attendeestatus) | Status of the attendee in relation to the event. |
| type | [AttendeeType](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#attendeetype) | Type of the attendee. |
| url(optional) | string | Only for:β<br><br>iOS<br><br> <br><br>URL for the attendee. |
CalendarA calendar record upon which events (or, on iOS, reminders) can be stored. Settings here apply to the calendar as a whole and how its events are displayed in the OS calendar app.
| Property | Type | Description |
| --- | --- | --- |
| accessLevel(optional) | [CalendarAccessLevel](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#calendaraccesslevel) | Only for:β<br><br>Android<br><br> <br><br>Level of access that the user has for the calendar. |
| allowedAttendeeTypes(optional) | [AttendeeType[]](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#attendeetype) | Only for:β<br><br>Android<br><br> <br><br>Attendee types that this calendar supports. |
| allowedAvailabilities | [Availability[]](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#availability) | Availability types that this calendar supports. |
| allowedReminders(optional) | [AlarmMethod[]](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#alarmmethod) | Only for:β<br><br>Android<br><br> <br><br>Alarm methods that this calendar supports. |
| allowsModifications | boolean | Boolean value that determines whether this calendar can be modified. |
| color | string | Color used to display this calendar's events. |
| entityType(optional) | [EntityTypes](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#entitytypes) | Only for:β<br><br>iOS<br><br> <br><br>Whether the calendar is used in the Calendar or Reminders OS app. |
| id | string | Internal ID that represents this calendar on the device. |
| isPrimary(optional) | boolean | Only for:β<br><br>Android<br><br> <br><br>Boolean value indicating whether this is the device's primary calendar. |
| isSynced(optional) | boolean | Only for:β<br><br>Android<br><br> <br><br>Indicates whether this calendar is synced and its events stored on the device. Unexpected behavior may occur if this is not set to true. |
| isVisible(optional) | boolean | Only for:β<br><br>Android<br><br> <br><br>Indicates whether the OS displays events on this calendar. |
| name(optional) | string \| null | Only for:β<br><br>Android<br><br> <br><br>Internal system name of the calendar. |
| ownerAccount(optional) | string | Only for:β<br><br>Android<br><br> <br><br>Name for the account that owns this calendar. |
| source | [Source](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#source) | Object representing the source to be used for the calendar. |
| sourceId(optional) | string | Only for:β<br><br>iOS<br><br> <br><br>ID of the source to be used for the calendar. Likely the same as the source for any other locally stored calendars. |
| timeZone(optional) | string | Only for:β<br><br>Android<br><br> <br><br>Time zone for the calendar. |
| title | string | Visible name of the calendar. |
| type(optional) | [CalendarType](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#calendartype) | Only for:β<br><br>iOS<br><br> <br><br>Type of calendar this object represents. |
CalendarDialogParams| Property | Type | Description |
| --- | --- | --- |
| id | string | ID of the event to be presented in the calendar UI. |
| instanceStartDate(optional) | string \| [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | Only for:β<br><br>iOS<br><br> <br><br>Date object representing the start time of the desired instance, if looking for a single instance of a recurring event. If this is not provided and id represents a recurring event, the first instance of that event will be returned by default. |
DaysOfTheWeekOnly for:β
iOS
| Property | Type | Description |
| --- | --- | --- |
| dayOfTheWeek | [DayOfTheWeek](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#dayoftheweek) | Sunday to Saturday - DayOfTheWeek enum. |
| weekNumber(optional) | number | -53 to 53 (0 ignores this field, and a negative indicates a value from the end of the range). |
DialogEventResultThe result of presenting a calendar dialog for creating or editing an event.
| Property | Type | Description |
| --- | --- | --- |
| action | [Extract](https://www.typescriptlang.org/docs/handbook/utility-types.html#extracttype-union) <[CalendarDialogResultActions](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#calendardialogresultactions) , 'done' \| 'saved' \| 'canceled' \| 'deleted'> | How user responded to the dialog. On Android, this is always done (Android doesn't provide enough information to determine the user's action - the user may have canceled the dialog, saved or deleted the event).<br><br>On iOS, it can be saved, canceled or deleted. |
| id | string \| null | The ID of the event that was created or edited. On Android, this is always null.<br><br>On iOS, this is a string when permissions are granted and user confirms the creation or editing of an event. Otherwise, it's null. |
EventAn event record, or a single instance of a recurring event. On iOS, used in the Calendar app.
| Property | Type | Description |
| --- | --- | --- |
| accessLevel(optional) | [EventAccessLevel](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#eventaccesslevel) | Only for:β<br><br>Android<br><br> <br><br>User's access level for the event. |
| alarms | [Alarm[]](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#alarm) | Array of Alarm objects which control automated reminders to the user. |
| allDay | boolean | Whether the event is displayed as an all-day event on the calendar |
| availability | [Availability](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#availability) | The availability setting for the event. |
| calendarId | string | ID of the calendar that contains this event. |
| creationDate(optional) | string \| [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | Only for:β<br><br>iOS<br><br> <br><br>Date when the event record was created. |
| endDate | string \| [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | Date object or string representing the time when the event ends. |
| endTimeZone(optional) | string | Only for:β<br><br>Android<br><br> <br><br>Time zone for the event end time. |
| guestsCanInviteOthers(optional) | boolean | Only for:β<br><br>Android<br><br> <br><br>Whether invited guests can invite other guests. |
| guestsCanModify(optional) | boolean | Only for:β<br><br>Android<br><br> <br><br>Whether invited guests can modify the details of the event. |
| guestsCanSeeGuests(optional) | boolean | Only for:β<br><br>Android<br><br> <br><br>Whether invited guests can see other guests. |
| id | string | Internal ID that represents this event on the device. |
| instanceId(optional) | string | Only for:β<br><br>Android<br><br> <br><br>For instances of recurring events, volatile ID representing this instance. Not guaranteed to always refer to the same instance. |
| isDetached(optional) | boolean | Only for:β<br><br>iOS<br><br> <br><br>Boolean value indicating whether or not the event is a detached (modified) instance of a recurring event. |
| lastModifiedDate(optional) | string \| [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | Only for:β<br><br>iOS<br><br> <br><br>Date when the event record was last modified. |
| location | string \| null | Location field of the event. |
| notes | string | Description or notes saved with the event. |
| organizer(optional) | [Organizer](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#organizer) | Only for:β<br><br>iOS<br><br> <br><br>Organizer of the event. This property is only available on events associated with calendars that are managed by a service ie. Google Calendar or iCloud. The organizer is read-only and cannot be set. |
| organizerEmail(optional) | string | Only for:β<br><br>Android<br><br> <br><br>Email address of the organizer of the event. |
| originalId(optional) | string | Only for:β<br><br>Android<br><br> <br><br>For detached (modified) instances of recurring events, the ID of the original recurring event. |
| originalStartDate(optional) | string \| [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | Only for:β<br><br>iOS<br><br> <br><br>For recurring events, the start date for the first (original) instance of the event. |
| recurrenceRule | [RecurrenceRule](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#recurrencerule) \| null | Object representing rules for recurring or repeating events. Set to null for one-time events. |
| startDate | string \| [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | Date object or string representing the time when the event starts. |
| status | [EventStatus](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#eventstatus) | Status of the event. |
| timeZone | string | Time zone the event is scheduled in. |
| title | string | Visible name of the event. |
| url(optional) | string | Only for:β<br><br>iOS<br><br> <br><br>URL for the event. |
OpenEventDialogResultThe result of presenting the calendar dialog for opening (viewing) an event.
| Property | Type | Description |
| --- | --- | --- |
| action | [Extract](https://www.typescriptlang.org/docs/handbook/utility-types.html#extracttype-union) <[CalendarDialogResultActions](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#calendardialogresultactions) , 'done' \| 'canceled' \| 'deleted' \| 'responded'> | Indicates how user responded to the dialog. On Android, the action is always done. On iOS, it can be done, canceled, deleted or responded. |
OpenEventPresentationOptionsType: [PresentationOptions](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#presentationoptions) extended by:
| Property | Type | Description |
| --- | --- | --- |
| allowsCalendarPreview(optional) | boolean | Only for:β<br><br>iOS<br><br> <br><br>Determines whether event can be shown in calendar day view preview. This property applies only to invitations.<br><br>Default:false |
| allowsEditing(optional) | boolean | Only for:β<br><br>iOS<br><br> <br><br>Whether to allow the user to edit the previewed event. This property applies only to events in calendars created by the user.<br><br>Note that if the user edits the event, the returned action is the one that user performs last. For example, when user previews the event, confirms some edits and finally dismisses the dialog, the event is edited, but response is canceled.<br><br>Default:false |
PermissionExpirationLiteral Type: union
Permission expiration time. Currently, all permissions are granted permanently.
Acceptable values are: 'never' | number
PermissionHookOptionsLiteral Type: union
Acceptable values are: PermissionHookBehavior | Options
PermissionResponseAn object obtained by permissions get and request functions.
| Property | Type | Description |
| --- | --- | --- |
| canAskAgain | boolean | Indicates if user can be asked again for specific permission. If not, one should be directed to the Settings app in order to enable/disable the permission. |
| expires | [PermissionExpiration](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#permissionexpiration) | Determines time when the permission expires. |
| granted | boolean | A convenience boolean that indicates if the permission is granted. |
| status | [PermissionStatus](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#permissionstatus) | Determines the status of the permission. |
PresentationOptions| Property | Type | Description |
| --- | --- | --- |
| startNewActivityTask(optional) | boolean | Only for:β<br><br>Android<br><br> <br><br>Whether to launch the Activity as a new task<br>. If true, the promise resolves with 'done' action immediately after opening the calendar activity.<br><br>Default:true |
RecurrenceRuleA recurrence rule for events or reminders, allowing the same calendar item to recur multiple times. This type is based on the iOS interface which is in turn based on the iCal RFC so you can refer to those to learn more about this potentially complex interface.
Not all the combinations make sense. For example, when frequency is DAILY, setting daysOfTheMonth makes no sense.
| Property | Type | Description |
| --- | --- | --- |
| daysOfTheMonth(optional) | number[] | Only for:β<br><br>iOS<br><br> <br><br>The days of the month this event occurs on. -31 to 31 (not including 0). Negative indicates a value from the end of the range. This field is only valid for Calendar.Frequency.Monthly. |
| daysOfTheWeek(optional) | [DaysOfTheWeek[]](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#daysoftheweek) | Only for:β<br><br>iOS<br><br> <br><br>The days of the week the event should recur on. An array of DaysOfTheWeek<br> object. |
| daysOfTheYear(optional) | number[] | Only for:β<br><br>iOS<br><br> <br><br>The days of the year this event occurs on. -366 to 366 (not including 0). Negative indicates a value from the end of the range. This field is only valid for Calendar.Frequency.Yearly. |
| endDate(optional) | string \| [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | Date on which the calendar item should stop recurring; overrides occurrence if both are specified. |
| frequency | [Frequency](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#frequency) | How often the calendar item should recur. |
| interval(optional) | number | Interval at which the calendar item should recur. For example, an interval: 2 with frequency: DAILY would yield an event that recurs every other day.<br><br>Default:1 |
| monthsOfTheYear(optional) | [MonthOfTheYear[]](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#monthoftheyear) | Only for:β<br><br>iOS<br><br> <br><br>The months this event occurs on. This field is only valid for Calendar.Frequency.Yearly. |
| occurrence(optional) | number | Number of times the calendar item should recur before stopping. |
| setPositions(optional) | number[] | Only for:β<br><br>iOS<br><br> <br><br>TAn array of numbers that filters which recurrences to include. For example, for an event that recurs every Monday, passing 2 here will make it recur every other Monday. -366 to 366 (not including 0). Negative indicates a value from the end of the range. This field is only valid for Calendar.Frequency.Yearly. |
| weeksOfTheYear(optional) | number[] | Only for:β<br><br>iOS<br><br> <br><br>The weeks of the year this event occurs on. -53 to 53 (not including 0). Negative indicates a value from the end of the range. This field is only valid for Calendar.Frequency.Yearly. |
RecurringEventOptionsOnly for:β
iOS
| Property | Type | Description |
| --- | --- | --- |
| futureEvents(optional) | boolean | Whether future events in the recurring series should also be updated. If true, will apply the given changes to the recurring instance specified by instanceStartDate and all future events in the series. If false, will only apply the given changes to the instance specified by instanceStartDate. |
| instanceStartDate(optional) | string \| [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | Date object representing the start time of the desired instance, if looking for a single instance of a recurring event. If this is not provided and id represents a recurring event, the first instance of that event will be returned by default. |
ReminderOnly for:β
iOS
A reminder record, used in the iOS Reminders app. No direct analog on Android.
| Property | Type | Description |
| --- | --- | --- |
| alarms(optional) | [Alarm[]](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#alarm) | Array of Alarm objects which control automated alarms to the user about the task. |
| calendarId(optional) | string | ID of the calendar that contains this reminder. |
| completed(optional) | boolean | Indicates whether or not the task has been completed. |
| completionDate(optional) | string \| [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | Date object or string representing the date of completion, if completed is true. Setting this property of a nonnull Date will automatically set the reminder's completed value to true. |
| creationDate(optional) | string \| [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | Date when the reminder record was created. |
| dueDate(optional) | string \| [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | Date object or string representing the time when the reminder task is due. |
| id(optional) | string | Internal ID that represents this reminder on the device. |
| lastModifiedDate(optional) | string \| [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | Date when the reminder record was last modified. |
| location(optional) | string | Location field of the reminder |
| notes(optional) | string | Description or notes saved with the reminder. |
| recurrenceRule(optional) | [RecurrenceRule](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#recurrencerule) \| null | Object representing rules for recurring or repeated reminders. null for one-time tasks. |
| startDate(optional) | string \| [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | Date object or string representing the start date of the reminder task. |
| timeZone(optional) | string | Time zone the reminder is scheduled in. |
| title(optional) | string | Visible name of the reminder. |
| url(optional) | string | URL for the reminder. |
SourceA source account that owns a particular calendar. Expo apps will typically not need to interact with Source objects.
| Property | Type | Description |
| --- | --- | --- |
| id(optional) | string | Only for:β<br><br>iOS<br><br> <br><br>Internal ID that represents this source on the device. |
| isLocalAccount(optional) | boolean | Only for:β<br><br>Android<br><br> <br><br>Whether this source is the local phone account. Must be true if type is undefined. |
| name | string | Name for the account that owns this calendar and was used to sync the calendar to the device. |
| type | string \| [SourceType](https://docs.expo.dev/versions/v54.0.0/sdk/calendar#sourcetype) | Type of the account that owns this calendar and was used to sync it to the device. If isLocalAccount is falsy then this must be defined, and must match an account on the device along with name, or the OS will delete the calendar. On iOS, one of SourceType<br>s. |
AlarmMethodOnly for:β
Android
ALARMAlarmMethod.ALARM οΌ "alarm"
ALERTAlarmMethod.ALERT οΌ "alert"
DEFAULTAlarmMethod.DEFAULT οΌ "default"
EMAILAlarmMethod.EMAIL οΌ "email"
SMSAlarmMethod.SMS οΌ "sms"
AttendeeRoleATTENDEEOnly for:β
Android
AttendeeRole.ATTENDEE οΌ "attendee"
CHAIROnly for:β
iOS
AttendeeRole.CHAIR οΌ "chair"
NONEOnly for:β
Android
AttendeeRole.NONE οΌ "none"
NON_PARTICIPANTOnly for:β
iOS
AttendeeRole.NON_PARTICIPANT οΌ "nonParticipant"
OPTIONALOnly for:β
iOS
AttendeeRole.OPTIONAL οΌ "optional"
ORGANIZEROnly for:β
Android
AttendeeRole.ORGANIZER οΌ "organizer"
PERFORMEROnly for:β
Android
AttendeeRole.PERFORMER οΌ "performer"
REQUIREDOnly for:β
iOS
AttendeeRole.REQUIRED οΌ "required"
SPEAKEROnly for:β
Android
AttendeeRole.SPEAKER οΌ "speaker"
UNKNOWNOnly for:β
iOS
AttendeeRole.UNKNOWN οΌ "unknown"
AttendeeStatusACCEPTEDAttendeeStatus.ACCEPTED οΌ "accepted"
COMPLETEDOnly for:β
iOS
AttendeeStatus.COMPLETED οΌ "completed"
DECLINEDAttendeeStatus.DECLINED οΌ "declined"
DELEGATEDOnly for:β
iOS
AttendeeStatus.DELEGATED οΌ "delegated"
IN_PROCESSOnly for:β
iOS
AttendeeStatus.IN_PROCESS οΌ "inProcess"
INVITEDOnly for:β
Android
AttendeeStatus.INVITED οΌ "invited"
NONEOnly for:β
Android
AttendeeStatus.NONE οΌ "none"
PENDINGOnly for:β
iOS
AttendeeStatus.PENDING οΌ "pending"
TENTATIVEAttendeeStatus.TENTATIVE οΌ "tentative"
UNKNOWNOnly for:β
iOS
AttendeeStatus.UNKNOWN οΌ "unknown"
AttendeeTypeGROUPOnly for:β
iOS
AttendeeType.GROUP οΌ "group"
NONEOnly for:β
Android
AttendeeType.NONE οΌ "none"
OPTIONALOnly for:β
Android
AttendeeType.OPTIONAL οΌ "optional"
PERSONOnly for:β
iOS
AttendeeType.PERSON οΌ "person"
REQUIREDOnly for:β
Android
AttendeeType.REQUIRED οΌ "required"
RESOURCEAttendeeType.RESOURCE οΌ "resource"
ROOMOnly for:β
iOS
AttendeeType.ROOM οΌ "room"
UNKNOWNOnly for:β
iOS
AttendeeType.UNKNOWN οΌ "unknown"
AvailabilityBUSYAvailability.BUSY οΌ "busy"
FREEAvailability.FREE οΌ "free"
NOT_SUPPORTEDOnly for:β
iOS
Availability.NOT_SUPPORTED οΌ "notSupported"
TENTATIVEAvailability.TENTATIVE οΌ "tentative"
UNAVAILABLEOnly for:β
iOS
Availability.UNAVAILABLE οΌ "unavailable"
CalendarAccessLevelOnly for:β
Android
CONTRIBUTORCalendarAccessLevel.CONTRIBUTOR οΌ "contributor"
EDITORCalendarAccessLevel.EDITOR οΌ "editor"
FREEBUSYCalendarAccessLevel.FREEBUSY οΌ "freebusy"
NONECalendarAccessLevel.NONE οΌ "none"
OVERRIDECalendarAccessLevel.OVERRIDE οΌ "override"
OWNERCalendarAccessLevel.OWNER οΌ "owner"
READCalendarAccessLevel.READ οΌ "read"
RESPONDCalendarAccessLevel.RESPOND οΌ "respond"
ROOTCalendarAccessLevel.ROOT οΌ "root"
CalendarDialogResultActionsEnum containing all possible user responses to the calendar UI dialogs. Depending on what dialog is presented, a subset of the values applies.
canceledOnly for:β
iOS
CalendarDialogResultActions.canceled οΌ "canceled"
The user canceled or dismissed the dialog.
deletedOnly for:β
iOS
CalendarDialogResultActions.deleted οΌ "deleted"
The user deleted the event.
doneCalendarDialogResultActions.done οΌ "done"
On Android, this is the only possible result because the OS doesn't provide enough information to determine the user's action - the user may have canceled the dialog, modified the event, or deleted it.
On iOS, this means the user simply closed the dialog.
respondedOnly for:β
iOS
CalendarDialogResultActions.responded οΌ "responded"
The user responded to and saved a pending event invitation.
savedOnly for:β
iOS
CalendarDialogResultActions.saved οΌ "saved"
The user saved a new event or modified an existing one.
CalendarTypeOnly for:β
iOS
BIRTHDAYSCalendarType.BIRTHDAYS οΌ "birthdays"
CALDAVCalendarType.CALDAV οΌ "caldav"
EXCHANGECalendarType.EXCHANGE οΌ "exchange"
LOCALCalendarType.LOCAL οΌ "local"
SUBSCRIBEDCalendarType.SUBSCRIBED οΌ "subscribed"
UNKNOWNCalendarType.UNKNOWN οΌ "unknown"
DayOfTheWeekOnly for:β
iOS
SundayDayOfTheWeek.Sunday οΌ 1
MondayDayOfTheWeek.Monday οΌ 2
TuesdayDayOfTheWeek.Tuesday οΌ 3
WednesdayDayOfTheWeek.Wednesday οΌ 4
ThursdayDayOfTheWeek.Thursday οΌ 5
FridayDayOfTheWeek.Friday οΌ 6
SaturdayDayOfTheWeek.Saturday οΌ 7
EntityTypesplatform ios
EVENTEntityTypes.EVENT οΌ "event"
REMINDEREntityTypes.REMINDER οΌ "reminder"
EventAccessLevelOnly for:β
Android
CONFIDENTIALEventAccessLevel.CONFIDENTIAL οΌ "confidential"
DEFAULTEventAccessLevel.DEFAULT οΌ "default"
PRIVATEEventAccessLevel.PRIVATE οΌ "private"
PUBLICEventAccessLevel.PUBLIC οΌ "public"
EventStatusCANCELEDEventStatus.CANCELED οΌ "canceled"
CONFIRMEDEventStatus.CONFIRMED οΌ "confirmed"
NONEEventStatus.NONE οΌ "none"
TENTATIVEEventStatus.TENTATIVE οΌ "tentative"
FrequencyDAILYFrequency.DAILY οΌ "daily"
MONTHLYFrequency.MONTHLY οΌ "monthly"
WEEKLYFrequency.WEEKLY οΌ "weekly"
YEARLYFrequency.YEARLY οΌ "yearly"
MonthOfTheYearOnly for:β
iOS
JanuaryMonthOfTheYear.January οΌ 1
FebruaryMonthOfTheYear.February οΌ 2
MarchMonthOfTheYear.March οΌ 3
AprilMonthOfTheYear.April οΌ 4
MayMonthOfTheYear.May οΌ 5
JuneMonthOfTheYear.June οΌ 6
JulyMonthOfTheYear.July οΌ 7
AugustMonthOfTheYear.August οΌ 8
SeptemberMonthOfTheYear.September οΌ 9
OctoberMonthOfTheYear.October οΌ 10
NovemberMonthOfTheYear.November οΌ 11
DecemberMonthOfTheYear.December οΌ 12
PermissionStatusDENIEDPermissionStatus.DENIED οΌ "denied"
User has denied the permission.
GRANTEDPermissionStatus.GRANTED οΌ "granted"
User has granted the permission.
UNDETERMINEDPermissionStatus.UNDETERMINED οΌ "undetermined"
User hasn't granted or denied the permission yet.
ReminderStatusOnly for:β
iOS
COMPLETEDReminderStatus.COMPLETED οΌ "completed"
INCOMPLETEReminderStatus.INCOMPLETE οΌ "incomplete"
SourceTypeOnly for:β
iOS
BIRTHDAYSSourceType.BIRTHDAYS οΌ "birthdays"
CALDAVSourceType.CALDAV οΌ "caldav"
EXCHANGESourceType.EXCHANGE οΌ "exchange"
LOCALSourceType.LOCAL οΌ "local"
MOBILEMESourceType.MOBILEME οΌ "mobileme"
SUBSCRIBEDSourceType.SUBSCRIBED οΌ "subscribed"
If you only intend to use the system-provided calendar UI , you don't need to request any permissions.
Otherwise, you must add the following permissions to your app.json inside the expo.android.permissions
array.
| Android Permission | Description |
| --- | --- |
| READ_CALENDAR | Allows an application to read the user's calendar data. |
| WRITE_CALENDAR | Allows an application to write the user's calendar data. |
If you only intend to create events using system-provided calendar UI with createEventInCalendarAsync
, you don't need to request permissions.
The following usage description keys are used by this library:
| Info.plist Key | Description |
| --- | --- |
| NSCalendarsUsageDescription | A message that tells the user why the app is requesting access to the userβs calendar data. |
| NSRemindersUsageDescription | A message that tells the user why the app is requesting access to the userβs reminders. |