Skip to content

Recurring tasks

A recurring task never leaves your list. Completing an occurrence advances its due date instead of marking the task done.

Set a rule by typing it into the task name (Water plants every 3 days) or by giving the task one through the API. A rule always requires a due date; clearing the due date clears the rule.

Every rule starts with every. The every! variant is described below.

Rule Meaning
every day Daily
every week Weekly
every month Monthly
every year Yearly
every 3 days Every three days
every 2 weeks Fortnightly
every 6 months Every six months
every other day Same as every 2 days
every other week Same as every 2 weeks
every other month Same as every 2 months

every 1 week is normalised to every week. Only days, weeks and months take a count; every 2 years is not a rule.

Rule Meaning
every mondayevery sunday That weekday, weekly
every mon, every tue, … Three-letter forms work too
every weekday Monday to Friday
every other friday Fortnightly, keeping the original fortnight
Rule Meaning
every 1stevery 31st That day each month
every last day The last day of each month

Day-of-month rules clamp to the length of the month: every 31st lands on 30 April and 28 February, then returns to the 31st in a 31-day month. The anchor never drifts, because each step is counted from the original month rather than from the clamped date.

Multi-weekday rules (every mon, wed), positional rules (every 2nd tuesday), time-of-day rules and yearly counts are not supported. If Conatus does not recognise a phrase, it is left in the task name and no rule is set.

The next occurrence is always strictly after the current due date and never in the past. An overdue weekly task does not replay every date it missed. It jumps forward to the next occurrence that is in the future.

every other <weekday> is the exception that preserves parity: the fortnight is anchored on the original due date, so a long-overdue fortnightly task catches up to the next date that keeps the same alternate-week rhythm, rather than resetting to “next Friday from today”.

Prefixing with ! restarts the schedule from the day you complete it, instead of stepping from the old due date:

Change the water filter every! 3 months

Complete that two weeks late and the next occurrence is three months from today, not from the date it was originally due. Use it for anything where the interval since you last did it is what matters.

All recurrence maths is calendar-date arithmetic on YYYY-MM-DD strings. A due time is stored separately and is never shifted, so a daylight-saving transition cannot move an occurrence by a day. every day at 07:00 stays at 07:00 wall clock on both sides of the change.

A recurring task can have a Repeat ends date, set from the task view. It is inclusive: an occurrence falling exactly on the end date is valid.

When completing an occurrence would advance past the end date, the task is completed for real instead. It leaves the list and appears on Completed. Undo handles both cases: it restores the previous due date for a normal occurrence, or un-completes the final one.

The end date cannot be earlier than the due date, and cannot be set on a task with no repeat rule.

Recurring completions are written to the server immediately, unlike ordinary completions which wait out the undo toast. The row stays on screen with its new date, and the toast offers a real inverse rather than cancelling a write that has not happened yet.

  • The due chip shows a repeat icon next to the date, with the rule as its accessible label.
  • The task view shows the rule and the end date in the Repeats rail row.
  • Project templates carry repeat rules across, since they are dateless.
  • Todoist imports translate recurring due strings into Conatus rules where the grammar matches; anything unrecognised is flagged for review during the import preview.