Hi everyone,
I'm building a task management app that layers on top of EventKit/Reminders. I'm also moderating /r/AppleReminders.
I see a confusion around the semantics of dates on both the developer side and on the user side.
I'm trying to map the standard productivity mental model to the EKReminder implementation and hitting some walls.
In productivity contexts, a task tends to have three distinct dates:
- Start Date: When the task becomes actionable — Don’t alert the user before this date.
- Notification: When the device should buzz/ping the user — Meaning that they can get started on the task.
- Due Date: Hard deadline — If the system works well, tasks are meant to rarely be past-deadline; productivity systems are about meeting deadlines rather than about missing them.
The EventKit Reality
Here is what I’m seeing in practice, and I’m hoping someone can correct me if I’m wrong:
startDateComponents | Docs say "start date of the task" | Seemingly unused? I can set it via API, but the Reminders app UI ignores it. It doesn't seem to trigger visibility in "Today" or Smart Lists. |
dueDateComponents | Docs say "date by which reminder should be completed" | Conflated. Acts as the "Date" you see in the list. It functions as the Start Date (shows in Today), Due Date (turns red tomorrow), AND Notification time (unless early alerts are set). |
alarms | Inherited from EKCalendarItem | seems to be used for the actual notifications, including "Early Reminders," but tightly coupled to the due date in the UI. |
My Questions:
- Is
startDateComponentseffectively a dead field? Is there any native behavior (Smart List filtering, sorting, visibility) that respects this field, or is it purely for metadata storage for third-party apps? - Smart List Logic: I was hoping to create a Smart List that shows "Actionable" items (i.e.,
Start Date <= Today). However, the Smart List filters only offer a generic "Date" field, which maps todueDateComponents. Has anyone successfully filtered bystartDateComponentsin a native Smart List? - Conflation: Is there any "blessed" way to set a Due Date that is distinct from the Notification time without fighting the system? (e.g. Due Friday, but remind me Wednesday).
Any insight into the intended semantics here would be huge. I'm trying to avoid fighting the framework, but the "One Date to Rule Them All" approach in the Reminders app is making it tricky to support separate Start/Due dates.
Thanks!