Agenda incorrectly marks reminders 31+ days out as being deleted

What I did:

  1. Create a checklist item and \remind(today)
  2. View the task in Reminders and reschedule it to 31 or more days in the future

What happened: Agenda shows the deleted reminder icon (image)

What I expected: Agenda shows the normal incomplete reminder icon (image)


I suppose I’ve learned something new about Agenda’s performance decisions, which is that it only syncs reminders that are scheduled within the next 30 days. This explains why some of my reminders appear to go missing from within Agenda.

Anyway, I feel this is a bug – Agenda is reporting that the reminder no longer exists, when it clearly does. Of course, I’ve disagreed with Agenda’s opinion on whether a reminder exists before :slight_smile:

I’ve just never seen anything documented that says “a reminder icon means that the reminder exists on a list that agenda syncs and is due within the next 30 days.” My understanding of the “reminder missing” icon is that Agenda can no longer find the reminder in Reminders, not that it’s been a) moved off a list that Agenda syncs (fine) b) changed to an undated reminder (I disagree with Agenda opinion, but fine I guess) or c) scheduled more than 30 days out (I really disagree with Agenda opinion here and don’t see how it makes sense)

Bottom line: I don’t think Agenda should be lying to me about whether a Reminder exists.

Edit: Well now I’m just confused as to the rule. I created a reminder for (2/25) and Agenda tracks it fine. The last reschedule date where it shows as available is 3/12 - if I set it to 3/13 from within Reminders then it goes gray. So I have no idea how Agenda is deciding whether the reminder still exists or not.

AFAIK there is no policy about reminders only being kept for 30 days in advance. My guess is that this is simply a bug or some false logic. We no doubt do optimize in various ways, and in your case it probably happened to be a 30 day window, but I don’t think it was a constraint by design.

Will definitely look into it. Thanks!

The problem here is that Apple doesn’t give us a way to get a log of all transactions, i.e. we can’t get a list that says: since you checked Wednesday last week, the user deleted reminder X, moved reminder Y to Z, renamed reminder A, etc. And on top of this, the identifiers of a reminder is not guaranteed to stay the same. In other words, the system Apple gives here stinks. In part this has to do with the legacy calendar formats underlying the whole system (most of these don’t support stable identifiers themselves), but Apple could have done a better job here. Alas.

So what we are forced to do is to fetch the current set of reminders and assume that those that are no longer found have been deleted, and as much as possible deduce a moved reminder from deletes + inserts. It’s messy I’m afraid. And given that some people might have a LOT of reminders, it’s also not a matter of just fetching all reminders each time Agenda starts or every X minutes, that would give major performance issues.

Having said all this, with each iteration we learn, we’ve now rewritten the whole system three times based on everything we learned after the previous attempt. It’s on my list to go for another round somewhere this year, trying to fix or workaround some of the shortcomings and trying to accommodate some of the frequent feature requests. But these are pretty significant amounts of works, and other things are more important to get to first.

Anyway, just wanted to share this insight that at least when it comes to events and reminders, a lot has little to do with opinion or bugs, but rather with the limitations we have to deal with. In that respect I think Agenda is one of the few apps that is integrating with the reminders app so deeply without it trying to be a stereotypical todo/reminder app itself, which does mean having to accept a bunch of scenarios that are hard to address or force some unexpected limits from the perspective of the user.

Even this is not completely true, although the limits have gotten less strict, certainly up until a few iOS releases in the past, by default only a limited set of past and future reminders and events would sync to your iOS devices. And as explained in my previous post, from Agenda’s perspective when these past reminders are removed during sync there’s no way to discriminate between it being the system that truncates things or the user having actually deleted the reminder.

Oh wow! Okay. Thank you for sharing that information. Clearly I do not understand the inner workings of Apple Reminders. I assumed that an Apple Reminder was a record with an ID and properties, and that I’m simply updating the date on that record. But it sounds like that’s not the case – that Apple may change the ID (which is… odd) and so you use some sort of heuristic to correlate Apple Reminders info with what Agenda stores. Or as you point out in your follow post, it doesn’t necessarily sync everything.

Exactly. And with recurring reminders it becomes an order of magnitude more complex even :stuck_out_tongue_winking_eye:

1 Like