NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #2751 most downloaded on pub.dev
Provides a easy-to-use flutter interface to access & modify native device calendars (iOS & Android)
Last release 14 days ago
24 Sep 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 27 of 27 stable releases
Nothing withdrawn
no release was ever pulled
2 years old
30 releases · first in 2025
One column per month.
Release 2.4.1 by @AlexisChoupault in #125 : move eventide in a distinct folder
Full Changelog: v2.4.0...v2.4.1
Nothing published for this version
Migrate Android build to Kotlin DSL & upgrade to AGP 9 by @AlexisChoupault in #123
Full Changelog: v2.3.0...v2.4.0
Nothing published for this version
Edit feature for calendars and events by @AlexisChoupault in #113
Full Changelog: v2.2.1...v2.3.0
Fix createEventThroughNativePlatform on Android by enforcing ICS compatibility. IcsEventManager.generateIcsContent had three RFC 5545 violations.
Full Changelog: v2.2.0...v2.2.1
createEventInDefaultCalendar & createEventThroughNativePlatform - using ical format by @AlexisChoupault in #104
Full Changelog: v2.1.1...v2.2.0
createEventInDefaultCalendar & createEventThroughNativePlatform on Android :: using ical format under the hoodIssue#101 all day flag in create event through native platform by @AlexisChoupault in #102
Full Changelog: v2.1.0...v2.1.1
CalendarContract.EXTRA_EVENT_ALL_DAY and not CalendarContract.Events.ALL_DAY2.1.0 by @AlexisChoupault in #100
com.google will result in a clean Google account.nameFix sourceType comparison by @AlexisChoupault in #99
fix Issue#88 & #89 - better account handling by @AlexisChoupault in #92
Full Changelog: v1.0.2...v2.0.0
localAccountName (String) replaced with account (ETAccount?)
createCalendar(title: 'Work', color: Colors.red, localAccountName: 'My App')createCalendar(title: 'Work', color: Colors.red, account: myAccount)account is null, calendar is created in default account/sourcefromLocalAccountName (String) replaced with account (ETAccount?)
retrieveCalendars(fromLocalAccountName: 'My App')retrieveCalendars(account: myAccount)retrieveAccounts() to get all available accounts (Google, Exchange, local, etc.)
Iterable<ETAccount> with account details for better account management// OLD API (v1.x)
final calendars = await eventide.retrieveCalendars(fromLocalAccountName: 'My App');
await eventide.createCalendar(title: 'Work', color: Colors.red, localAccountName: 'My App');
// NEW API (v2.0)
final accounts = await eventide.retrieveAccounts();
final myAccount = accounts.firstWhere((acc) => acc.name == 'My App');
final calendars = await eventide.retrieveCalendars(account: myAccount);
await eventide.createCalendar(title: 'Work', color: Colors.red, account: myAccount);
startDate and endDate in retrieveEvents() methodList occurrences are now Iterablelocation to ETEvent by @StoneyDevevent creation and retrieval now handles url on android by @AlexisChoupault in #86
Full Changelog: v1.0.1...v1.0.2
createEventThroughNativePlatform() flexibility
Restored example app by @AlexisChoupault in #83
example/more-complex/ folder.fix wrong allDay attribute Boolean to Int cast in event creation by @AlexisChoupault in #67
Full Changelog: v0.10.2...v1.0.0
AndroidManifest.xml. Apps must now declare needed permissions based on their usage:
android.permission.READ_CALENDAR for reading calendars/eventsandroid.permission.WRITE_CALENDAR for creating/modifying calendars/eventscreateEventInDefaultCalendar() or createEventThroughNativePlatform() (use system Intent)createEventInDefaultCalendar() now uses system Intent to open calendar app directly (no permissions needed)createEventThroughNativePlatform() for platform-native event creation
createEventInDefaultCalendar())ETUserCanceledException: User canceled event creation in native platformETPresentationException: Event creation view cannot be presentedETNotSupportedByPlatform exceptionallDay attribute Boolean to Int cast in event creationRestore ETNotSupportedByPlatform by @AlexisChoupault in #76
Full Changelog: v1.0.0...v1.0.0+1
createAttendee() and removeAttendee() methods on iOS.Nothing published for this version
Android fix: createEventInDefaultCalendar() did not retrieve any default calendar when there was multiple primary calendars. Now also returns any writ
createEventInDefaultCalendar() did not retrieve any default calendar when there was multiple primary calendars. Now also returns any writable calendar when there is no primary calendarsFixed DateTime UTC handling in createEvent(), createEventInDefaultCalendar() and retrieveEvents() by systemically calling dateTime.toUtc()
createEvent(), createEventInDefaultCalendar() and retrieveEvents() by systemically calling dateTime.toUtc()Changed signature of createEventInDefaultCalendar to not return the created event as the event will not be editable
Fix double (write-only and full) permission prompt issue on iOS by creating reminders in the same method channel as the event creation
Removed retrieveDefaultCalendar because it did not make sense to return a virtual calendar on iOS (error-prone)
Removed final clause on Eventide class because it prevented it from being mocked
iOS 17 Support: Added support for iOS 17 write-only calendar access
retrieveDefaultCalendar() now prompts for write-only access on iOS 17+Breaking Change: localAccountName is now mandatory when creating calendars
localAccountName is now mandatory when creating calendarsDependencies: Removed dependency to equatable
Attendees Support: Retrieve attendees through events (Android & iOS)
iOS Enhancement: Added Swift Package Manager support
Reminders: Create reminders alongside event creation
Build Fix: Resolved Gradle issue by targeting JVM 17
ETAccount class with name and type properties (Issue #8)
name = EKSource.sourceIdentifier, type = EKSource.sourceTypename = CalendarContract.Calendars.ACCOUNT_NAME, type = CalendarContract.Calendars.ACCOUNT_TYPECalendar Management: Create, retrieve, and delete calendars
Initial Release 🎉
Core features:
Your coding agent can read these notes before it upgrades. Set up the MCP server →