Skip to content

Due

Due is a persistent-nag reminder app for iOS and macOS, and it earns its place in the stack for one reason: it keeps re-alerting until I actually acknowledge it, instead of firing once and getting lost in a notification center.

Due is the nag layer; OmniFocus is the commitment layer. The distinction isn’t “has a due date” — OmniFocus tasks have due dates constantly. The test I actually use is whether a single silent notification would be enough. If missing an alert has a real cost and a one-time notification won’t reliably catch it, it goes in Due; everything else stays in OmniFocus.

  • New tasks default to OmniFocus. Due only gets something when it’s genuinely clock-critical — a specific moment where missing the alert actually costs something. This applies doubly to anything created by automation or an assistant on my behalf: default to the commitment layer, not the nag layer.
  • Never the same task in both places. Duplication means two places to mark something done, which in practice means I mark it done in neither.
  • Auto-snooze is the whole point. Persistent re-alerting, not a one-shot reminder, is the entire reason I run a second app instead of just using the OS’s built-in reminders.
  • Relative offsets over absolute timestamps when I’m scripting a reminder. Due’s URL scheme accepts an absolute due date as epoch seconds, but “one hour from now” stays correct regardless of when it actually fires — a timestamp I write by hand is stale the moment it’s in the past.

Due registers a due:// URL scheme (/add, /search) supporting x-callback-url, which makes it scriptable from a launcher, a macro tool, or a hardware macro pad — or from a plain markdown link in a note, since a note-taking app can usually hand a custom URL scheme straight to the system handler. The one constraint worth knowing: /add always opens Due’s own add view for a confirmation tap — it’s a prefill, not a silent write — which is itself a reason to keep bulk or automated task creation in a tool with a real API, like OmniFocus, rather than trying to script Due directly.

See OmniFocus for the commitment layer this app is deliberately kept separate from.