The most-requested feature nobody gets right
Recurring tasks look trivial. "Repeat this every Monday" is the kind of thing you'd expect any tracker to handle in its sleep. Yet it's one of the longest-running complaints in project management software. Redmine's request for native recurring issues has been open since 2008. Jira's has more than a decade of votes behind it and a marketplace of paid add-ons that exist purely to paper over the gap. ClickUp, Asana, Todoist, and Monday.com all ship something, and every one of them has a feedback board full of people describing the same handful of failures.
The pattern is consistent enough to be useful: recurring tasks tend to break in the same predictable ways no matter which tool you're in. This post walks through those failure modes, then shows how Specivo's recurring issues are designed to avoid each one.
TL;DR: Most trackers model recurrence as "create the next task only after you finish this one." That single decision causes overdue work to vanish, completion stats to lie, and future workload to be invisible. Specivo takes the opposite default: a recurring pattern generates independent issues on a schedule, overdue ones stack and stay visible, you choose what carries forward, and editing one occurrence doesn't rewrite history. It's project-owned (so it survives people leaving), timezone-correct, and controllable from the web UI, the REST API, or directly by an AI agent over MCP.
Why recurring tasks matter more than they look
The tasks that recur are usually the ones you can't afford to drop. On-call rotations. Monthly compliance reviews. Quarterly access audits. Weekly backup checks. Invoice runs. Certificate renewals. These are exactly the items where "we forgot to do it this cycle" is the expensive outcome. A recurring-task system isn't a convenience feature for those workflows. It's the control that guarantees the work exists at all.
That's why the small modeling decisions matter so much. When recurrence is an afterthought, the gaps show up precisely on the work you most needed it to catch.
Seven ways recurring tasks fail
1. The sequential model hides overdue work
The most common design is sequential: the next instance is created only after you mark the current one complete. Microsoft Planner does this by design. The result is that missed work never queues up. Skip a week of a daily task and there's no backlog to look at. The slate is silently clean. Asana users describe having to click through a task seven separate times to "catch up" a daily item that went overdue for a week, because each completion only advances the series by one.
If recurrence is supposed to guarantee that work happens, a model that quietly erases the work you missed is doing the opposite.
2. There's no "edit this one vs. all vs. future"
Everyone who's used a calendar app expects three choices when they edit a repeating event: just this occurrence, this and everything after, or the whole series. Most trackers don't offer it. ClickUp's request for calendar-style edit scoping has hundreds of votes and has sat open for years. Without it, a one-off change ("move this week's review to Thursday because of the holiday") either isn't possible or silently rewrites every past and future instance.
3. Due-date vs. completion-date anchoring confuses everyone
Should the next occurrence be measured from the scheduled date or from when you actually completed the last one? Both are valid, and tools tend to bury the choice. Todoist encodes it in punctuation, every vs. every!, so people tend to learn the difference by getting surprised. Complete a yearly task a day late under the wrong mode and you can skip an entire year.
4. Subtasks, checklists, and custom fields break on regeneration
This is where tracker-grade recurrence lives or dies, and it's where most tools fall down. In ClickUp, checklist items don't reset between cycles, and completed subtasks reappear already marked done, both long-standing and heavily-voted complaints. Asana won't let you have a recurring parent and recurring subtasks. Jira's clone-based automation skips subtasks and doesn't copy custom fields by default. So the new instance arrives half-formed: a checklist that's already "done," fields that are blank, relationships that didn't carry.
5. Future occurrences are invisible
If only the next instance exists, your calendar, your Gantt chart, and your workload view can only see one. A daily 30-minute task reads as 30 minutes of planned work, not ten hours a month. And you can't reassign someone's recurring load before they go on leave, because the instances they'd be holding don't exist yet. ClickUp's request to make future recurring instances visible in the calendar is one of the most-voted items on its board.
6. Skipping pollutes your completion data
When the only way to advance a series is to mark the current one "done," people mark things done that they didn't actually do, just to move forward. Now your completion metrics are fiction, and a manager can't tell a real completion from a "skip." A proper skip action, separate from completion, fixes this. Todoist has one and users cite it as an advantage; plenty of tools still don't.
7. The series dies when its owner leaves
In several tools, a recurring task is owned by the person who created it. When that person changes roles or leaves the company, the whole series silently stops, and there's often no way to find or transfer all of someone's recurring work. Wrike users have flagged this for years. For a team's compliance or on-call cadence, "it stopped because someone quit" is a serious failure.
How Specivo's recurring issues are designed
Specivo's recurring issues are built around a different default. Here's how each piece maps onto the failures above.
A pattern, not a magic task. A recurring pattern is a first-class entity: a template that lives separately from the issues it produces. Each generated issue is a normal, independent Specivo issue that links back to its pattern. Nothing depends on you completing the last one. (Fixes #1, #5.)
Fixed and flexible modes, stated plainly. You choose the anchoring behavior explicitly, in plain language, not punctuation:
- Fixed — the next occurrence is generated on schedule whether or not the previous one is done. Overdue instances stack and stay visible, so a missed cycle is something you can see and act on.
- Flexible — the next occurrence is generated only after the previous one closes, with a configurable base date (the scheduled date or the actual close date).
This is the due-date-vs-completion-date question, surfaced as a clear setting. (Fixes #3.)
Calendar-grade patterns, plus working days. Patterns use RFC 5545 (the iCalendar RRULE standard): frequency, interval, "2nd Tuesday of the month," "last business day," counts, and end dates all expressible. On top of the standard, Specivo adds first-class working-day handling to skip or shift around weekends and a holiday calendar, because the iCal standard has no clean way to say "not on a holiday." (Fixes the holiday and pattern-flexibility gaps.)
Timezone-correct by construction. Patterns anchor to a wall-clock time in a specific IANA timezone, so "09:00 local" stays 09:00 across daylight-saving transitions instead of drifting by an hour twice a year.
A visible look-ahead window. Instead of materializing only the next instance (invisible future) or infinite rows (storage bloat), Specivo generates upcoming occurrences within a configurable window. Your calendar, workload, and leave-coverage views have real instances to show and plan against. (Fixes #5.)
A generator that self-heals. Generation runs on a single periodic job that re-derives its window on every run. If the job misses a tick or the server restarts, the next run simply fills in whatever should exist, so nothing gets silently dropped. Idempotency is enforced at the database level, so the same occurrence is never created twice. This is the piece self-hosted teams care about most: cron-driven plugin approaches in other self-hosted trackers silently miss generations when the scheduler is down, with no catch-up. (Fixes the self-hosted reliability gap.)
Edit scope: this, this-and-future, or all. Per-occurrence edits are stored as exceptions against the pattern, so editing one instance doesn't rewrite the rest. The default is the safe one: changes apply to future instances only, leaving already-created issues untouched. (Fixes #2.)
A real skip. Skipping an occurrence is its own action. It doesn't count as a completion and doesn't pollute your stats. (Fixes #6.)
You choose what carries forward. Per pattern, you decide which fields copy to each new instance (description, assignee, custom fields, relations) while checklist and subtask completion, done-ratio, and status reset cleanly each cycle. A fresh instance arrives genuinely fresh. (Fixes #4.)
Assignee rotation. Patterns can rotate the assignee round-robin across a team, so an on-call or review duty cycles automatically instead of landing on one person forever. (Fixes #7.)
Project-owned, not person-owned. A recurring pattern belongs to the project, not to whoever created it. People can join and leave; the cadence keeps running. (Fixes #7.)
Driveable by humans and agents. Recurring patterns are exposed three ways: the web UI, the REST API, and native MCP tools. That last one matters: an AI agent (Claude or otherwise) can create, inspect, and manage recurring patterns directly and safely, the same way a person would. For teams building AI into their workflows, recurrence isn't a thing the bot has to fake by cloning issues; it's a first-class capability it can actually use.
How it compares
| Capability | ★ Specivo | Jira | Asana | ClickUp | Todoist |
|---|---|---|---|---|---|
| Independent instances on a schedule (overdue stacks) | ✓Yes | ~Add-on | ~Sequential | ~Partial | ~Sequential |
| Fixed and flexible anchoring, explicit | ✓Yes | ✕No | ✕No | ~Partial | ~Punctuation |
| Edit this / this-and-future / all | ✓Yes | ~Limited | ~Limited | ~Requested | ~Limited |
| Checklist / subtask reset on regeneration | ✓Yes | ~Manual | ~Limited | ~Requested | ✕n/a |
| Visible future occurrences for planning | ✓Yes | ~Limited | ~Limited | ~Requested | ~Limited |
| Skip without counting as completion | ✓Yes | ✕No | ~Requested | ~Limited | ✓Yes |
| Assignee rotation | ✓Yes | ✕No | ✕No | ✕No | ✕No |
| Project-owned (survives departures) | ✓Yes | ~Varies | ✕No | ~Varies | ✕n/a |
| Self-hosted, open-source | ✓Yes | ✕No | ✕No | ✕No | ✕No |
| Native AI-agent (MCP) control | ✓Yes | ✕No | ✕No | ✕No | ✕No |
Three workflows it's built for
On-call handoff. A weekly pattern with assignee rotation creates the on-call checklist every Monday at 09:00 in your team's timezone, cycling through the rota. Nobody owns the series personally, so it keeps running through reorgs.
Monthly compliance review. A fixed-mode pattern set to the last business day of each month, skipping holidays. If the generator misses a run, the next one catches up, so the review issue always exists even if the scheduler hiccupped. Carry-over copies the checklist template fresh each month, with completion reset.
Quarterly access audit. A flexible-mode pattern anchored to completion, so the next audit is scheduled a quarter after the last one actually closed. One occurrence runs long? Skip it explicitly rather than faking a completion, and your audit-completion record stays honest.
FAQ
What's the difference between fixed and flexible recurrence?
Fixed generates the next occurrence on schedule regardless of whether the previous one is done, so overdue items stack up and stay visible. Flexible generates the next one only after the previous one closes. Specivo lets you choose per pattern, in plain settings.
Can I edit a single occurrence of a recurring task without changing the whole series?
Yes. Edits can apply to a single occurrence, to this-and-future occurrences, or to the entire series. Single-occurrence changes are stored as exceptions, so they don't rewrite past or future instances. The default is "future only."
How do I skip one occurrence of a recurring task?
Use the skip action. It removes that single occurrence without marking it complete, so it doesn't inflate your completion metrics.
Why do recurring tasks create duplicates or stop appearing in other tools?
Usually because the tool either materializes instances without a uniqueness guarantee (duplicates) or only creates the next one after you complete the current (disappearing or overdue work). Specivo enforces uniqueness at the database level and generates a visible look-ahead window, so neither happens.
Do recurring tasks handle weekends and holidays?
Yes. Beyond the standard iCal pattern rules, Specivo adds working-day handling that can skip or shift occurrences around weekends and a configured holiday calendar.
Are recurring tasks timezone-aware?
Yes. Each pattern is anchored to a wall-clock time in a specific IANA timezone, so the local time stays fixed across daylight-saving changes.
What happens to recurring tasks if the scheduler goes down?
Generation is idempotent and catch-up-aware. The next run re-derives the window and fills in any occurrences that should exist, so a missed run or a restart self-heals instead of silently dropping work.
Can a recurring task rotate through different assignees?
Yes. Patterns support round-robin assignee rotation across a team.
What happens to a recurring series when the person who created it leaves?
Nothing. The series keeps running. Recurring patterns are owned by the project, not by an individual user.
Is there a self-hosted, open-source alternative to Jira or Asana for recurring tasks?
Yes. Specivo is self-hosted and open-source, with recurring issues as a first-class feature controllable from the UI, REST API, and AI agents over MCP.
Recurrence as a first-class feature
The reason recurring tasks have been an open complaint for fifteen-plus years isn't that they're hard to ship. It's that they're easy to ship badly. The sequential shortcut works in a demo and fails in production, on exactly the recurring work you most needed to be reliable.
Specivo treats recurrence as what it actually is: a scheduled, project-owned source of independent work that has to survive missed runs, timezone shifts, team changes, and agents acting on your behalf.
If you want a tracker where recurring issues are built in rather than bolted on, and where you own the data and the schedule, try Specivo.