
Repeats are the dullest feature in any reminder app and the most fragile. As long as it is “every day at eight” everything is obvious. Say “every 31st” and you are into calendar arithmetic that even large apps get wrong.
Four repeat types that cover almost everyone
Daily. Medication, stretching, water. The most common one, and the most useless if you attach it to something you actually do every other day.
Weekdays. A type of its own rather than “weekly with five boxes ticked”, because it gets asked for more than anything else: standups, the commute, lunch.
Weekly on chosen days. Tuesday and Thursday for training. Sunday for calling your parents.
Monthly and yearly. Meter readings, insurance, the car service, birthdays.
Everything else - “every three days”, “the second Tuesday of the month”, “on even weeks” - exists, but almost nobody needs it. An app that puts that builder on the first screen makes life harder for everyone in order to serve a handful of people.
What to do on the 31st when there is no 31st
You set a reminder for the 31st. February arrives. There is no 31st of February. The app has three options, and they produce different lives.
Skip the month. Technically honest, practically awful: the rent reminder vanished in exactly the month you needed it.
Move it forward to 1 March. Also bad: the payment crosses a month boundary, and now you have one month with two payments and one with none.
Move it to the last day of the month. This is the only option that matches what the person meant. When someone says “the 31st”, they nearly always mean “at the end of the month”. That is how reminders in KIPRI behave: 31 January, 28 February, 31 March. The calendar recurrence standard, RFC 5545, does something else, by the way: it says an impossible date such as 30 February is simply skipped, and “last day of the month” is a separate rule. So the same repeat can behave differently from one calendar to another.
29 February deserves its own note. An event that fires once every four years looks logical to a programmer and hurtful to a person: if it is a birthday, it needs greeting every year. The right answer is 28 February in non-leap years, and nothing else.
“Every two weeks” and “every Tuesday” are not the same thing
The difference shows up the moment a repeat slips once.
“Every Tuesday” is anchored to a weekday. Miss one and the next is still a Tuesday; the grid holds.
“Every 14 days” is anchored to the last occurrence. Which raises the real question: counted from the scheduled time, or from the moment you actually ticked it off? For a haircut the second is right (you went four days late, so the next one shifts too). For paying a bill the first is right; the bill does not adjust to your schedule.
Apps rarely say which one they implement. You can find out in a single cycle: tick a recurring item a day after it was due and see where the next date lands.
If what you need is exactly an every-two-weeks repeat, or Tuesdays and Thursdays, you can put it together in the recurring reminder builder: it shows the next dates and gives you a file for your phone calendar.
A missed repeat must not pile up
The phone sat dead for three days. The app starts and works out that in the meantime three daily reminders, two weekly ones and a bill were supposed to fire.
Showing all six is the worst possible move. The person gets a shade full of overdue items and clears the whole thing with one swipe, including the one that actually mattered.
The sane behaviour is one fresh notification for the current cycle, with the rest marked as missed inside the app, where they can be looked at calmly. The past is not recoverable; today still is.
What is actually worth repeating
Repeats fit things with an external rhythm: payments, meter readings, medication, bin day, watering, calls home, renewing subscriptions and documents.
Repeats fit badly on things with an internal rhythm: “clear the inbox”, “tidy up”, “do some Spanish”. A reminder like that fires whether or not you did it yesterday, and within two weeks you stop reading it. That is what habits with a streak counter are for: they count the doing, not the arrival of a time.
The distinction is simple. A reminder says “now”. A habit asks “did you”. Confuse the two and you get a daily ping you have trained yourself to ignore within a week.
See for yourself
When a reminder for this date fires
| Last day of the month | RFC 5545 |
|---|
The left column is what people usually mean. The right one is what a calendar following the standard to the letter does by default.
Did this help?
Thanks, that is the best answer. If it helped, it may help someone else too.
Thanks for saying so. Tell us what was missing and we will add it: [email protected]
