Repeating Tasks for iOS

The major new feature of our just-released versions of Things for iOS – Things for iPhone 1.7 and Things for iPad 1.4 – is the ability to create and edit repeating tasks directly on iOS devices. They can also be synced to the Mac version, which is enabled by the new update of Things for Mac.

Designing an interface for repeating tasks is a challenging task for any platform, let alone for small iOS devices. In this blog post I want to give you an overview of our design goals and the solution we came up with.

Sisyphus

Those of you who have been following the development of Things for Mac since it was in beta might remember the challenges we have faced in coming up with a good UI for repeating tasks for the Mac. We wanted to have a powerful and flexible implementation that was still easy to use. After an extensive design journey with many iterations, we were very happy and proud of the outcome. Two years later, and after lots of customer feedback, we see that we did most things right. As always, there is room for improvement – but that’s another chapter.

When we started designing repeating tasks for iOS, we asked ourselves if it was possible to bring the same expressive power to iOS, while still keeping the UI clean and easy to use. Given the constraints of a small device like the iPhone, we knew that this was not going to be easy.

These were our goals when designing the repeating task UI:

  1. Expressiveness

    Repeating tasks come in many different varieties and complexities. If you look at a list of typical repeating tasks people have, you will soon realize that there is no single prototype recurrence pattern they can all be mapped to. Examples are: “pay rent at the end of each month”, “make backups every 2 weeks”, “for the next 5 months, create a performance report at the beginning of the month”, “perform health exercises every Monday and Thursday”, “prepare for Macworld Expo every January 1st”, “prepare club meeting every second Sunday of the month”. A repeating tasks implementation that only has the expressive power to specify a subset of the tasks above arbitrarily constrains the user in the tasks he can manage efficiently.

  2. Discoverability

    The UI should make it obvious to the user what kind of recurrence patterns can be specified. Expressiveness is of little use when users need to read extensive documentation of how to properly enter certain recurrence patterns.

  3. Ease of use

    This goal is obvious, but what exactly does “easy to use” mean in the context of repeating tasks? For regular task entry, one very important aspect of “easy to use” is that entering a new task requires very few taps. As something that is done over and over each day, any extra taps quickly turn into an annoyance for the user. This is why our quick entry is designed to keep the number of taps to a minimum. The same does not equally apply to repeating tasks. Typically, repeating tasks are entered much less frequently. Some are even entered once when you start using the app and remain there for years (“pay rent” is one such example). So rather than speed of entry, it is much more important that the UI has a great clarity and conciseness when it comes to specifying the different recurrence patterns.

With these goals as our guides, we evaluated existing implementations, sketched out different designs, discussed the merits and disadvantages of each, and finally arrived at the version we’ve now shipped. We believe it is the best and most elegant repeating tasks implementation currently available on iOS. Let me walk you through it.

Just like on the Mac version, repeating tasks can be created from within the Scheduled list. For that, we have a new button in the toolbar.

Toolbar

Note how there is one specific place in the UI to go to when you want to create a new repeating task. The existing UI for adding regular tasks is left untouched, so adding this feature didn’t complicate other parts of the application. This is very much in line with the observation that repeating tasks are not entered frequently.

When you tap the button, a new modal view comes up that is specifically designed for repeating tasks.

Repeating Task Modal View

At the very top, we show an English sentence that describes the current recurrence rule. Below, you can enter the title, tags, and notes of the repeating task, and also specify whether it should create instances with due dates.

Note that we pre-populate the recurrence rule based on the current day of the week. In most cases, the rule you want to specify probably differs from the one we show by default. But then why do we show a default rule in the first place?

We believe that it communicates two things very nicely. First, we can present a view that already contains all the elements of a repeating task: the recurrence rule, together with the title, notes, tags, and due date. So immediately, you know what you are expected to fill out before you can save the task. Secondly, if you don’t like the recurrence rule, you will immediately know that you need to tap the description text in order to change it. And what’s really great about this, even before you see the next UI view with the different controls that let you specify a different rule, you already know what the end result of those settings will be: a new English sentence that accurately describes the rule you had in mind.

This is the view that appears when you tap the recurrence rule description:

Edit Recurrence Rule

When looking at the general layout of this view, you will realize that – when read from top to bottom – this is basically the same English sentence you saw before, except it is now divided into different controls that let you specify the different parts of the recurrence rule to suit your needs.

Let’s now change this rule to “Every 2 months on the first and third Sunday”. First, “Every week” is obviously wrong, so we tap on that. A new view slides in, letting us specify the “Every 2 months” part.

Every Second Month

After we’re done with that, we go back to the screen before, and tap on the “On” section. In the view that comes up, we select the 1st Sunday, tap on “Add More”, and also select the 3rd Sunday.

On First And On Third Sunday

Note that we can additionally specify when the recurrence should begin, and when it should end (e.g. after 5 recurrences, or on a specific date), but we won’t do that for now. Tapping “Save” brings us back to the original screen where the English sentence now properly describes our new recurrence rule.

Final Rule

After we enter the additional repeating task properties and tap “Save”, the new task shows up inside the Scheduled list.

Scheduled List

If you later revisit the repeating task, you will conveniently see upcoming recurrences:

Repeating Task Details

This wraps up the walkthrough of the repeating tasks feature. I hope you got a good first impression, but you should definitely try them out on your device to get a complete picture. There are additional details not covered in this example:

We hope you enjoy using repeating tasks on iOS. Feedback is, as always, greatly welcome.

82 Comments

  1. ifonline Feb 03, 2011

    Very nicely done. Thanks for adding this to the iOS versions of Things.

  2. Tommy Bailey Feb 03, 2011

    As always, well thought out and implemented perfectly. Thanks!

  3. Dean Brown Feb 03, 2011

    Excellent implementation – well done, CC!

  4. Brian Cameron Feb 03, 2011

    Beautiful implementation of an as pointed out complicated area.

    Thanks for the helpful blog intro, and brief guide. Look forward to playing about with this new feature which will certainly help my GTD.

  5. garbo Feb 03, 2011

    Great workthrough, Werner. Very clear and well-written!

  6. Richard Frost Feb 03, 2011

    Looks great, looking forward to updating to this, it looks like it will be invaluable.

  7. Rob Feb 03, 2011

    Looks like you guys nailed it! Thanks

  8. Tim de Ville Feb 03, 2011

    This sort of detail is why I am still using Things, despite the long wait for cloud syncing. I also love the new communication on Twitter and these blog posts.

  9. ElGrowZone Feb 03, 2011

    I like that cartoon!

  10. Toby Feb 03, 2011

    Whohooo, finally! Much more important for me than cloud syncing. Thanks!

  11. Toby Feb 03, 2011

    Oh, one more thing. I understand that designing a feature thorroughly and userfriendly is more rewarding than doing just the bare essentials, but for a feature like repeating tasks, was this worth the effort?

    I mean, how often do people add repeating tasks? It’s not something that you do every day. A more simple UI, but delivered 1.5 years ago, might have been the better choice here.

  12. Patrick Feb 03, 2011

    Great! Now let’s just get cloud sync and we will be the best!

  13. Todd MacPherson Feb 03, 2011

    Looks well thought out. I’ve been eagerly waiting for this feature on the iOS. You have exceeded my expectations.

  14. Matt Feb 03, 2011

    @Toby: Yes, it was worth it. I’m probably not alone when I say that I’m a fan of things because it’s designed thoughtfully. Cultured Code are not spewing features to create more selling points; it seems that they lead with good design.

    For those who wanted X feature X years ago, there’s probably a competing app that will get the job done. I’ve stuck with Things because of the way that it’s matured.

    It’s really hard to make something complicated look obvious in hindsight, and this is a perfect example. Thanks, Werner and crew!

    …and I laughed out loud (the real kind) at the cartoon. Nice!

  15. Mike Feb 03, 2011

    Hi guys, I’d like to commend you on the frequency of your recent updates and on your openness in these posts.

  16. julian Feb 03, 2011

    thats nice. wheres sync?

  17. Khaaan Feb 03, 2011

    Very nice! Thank you very much.

    Things Mac also supports repeating tasks based on iCal events. Any plans to support this on iOS as well? I imagine the difficulty here is that there’s no guarantee that the iOS calendars are synchronized with the Mac calendars, and therefore there’s no way to cleanly synchronize tasks based on those calendars.

  18. Robert Feb 03, 2011

    Amazing! Very well done. Restores my faith in you guys a bit. I’m starting to believe your cloud sync implementation could really be quality too. Thus, I’m now using Things a bit more.

  19. Steve Harshbarger Feb 03, 2011

    Awesome work!

  20. Kristi Feb 03, 2011

    Great implementation! I appreciate the thoughtful approach to keep the UI clean and efficient. I have tried other apps in the past and spent more time inputting data than getting things done!

  21. Robert Feb 03, 2011

    Why oh why is it still not possible to put recuring tasks in project folders…?
    I would really like to have ability to put my repeating task related to bills and sports in separate lists…

    Still… for me this is the best task manager and I really admire your great work and your application was one of the main reasons why I bought Mac.

  22. Aaron Ortiz Feb 03, 2011

    Great Sisyphus cartoon!

  23. Daniel Feb 03, 2011

    NIcely done – very clean. Not sure how often I set up repeating tasks personally but I can see the value in the next event auto-generating itself when the last one is done. Thanks!

  24. Lutz Feb 03, 2011

    Nice. Still, I wish all that energy went into the sync issue…

  25. John Feb 03, 2011

    Thank you for a great implementation of the repeating task.

  26. zoara Feb 03, 2011

    Brilliant, loving it already!

    Only problem is, there seem to be some performance issues when checking or unchecking a task – it takes quite a while before it changes state. Anyone else seeing this? It’s only on the repeating tasks, not any others (doesn’t matter where the repeating task was created).

    Have submitted a bug report!

  27. Nathan Schultz Feb 03, 2011

    @Robert: I couldn’t agree more! Any eta on when this feature will be added Werner?

  28. Niels K. Feb 03, 2011

    Great UI for it. Now a great UI for adding tags in TT, too please :)

  29. Tom Feb 03, 2011

    Thanks for ‘repeating task’ feature. But I see some inconsistency with setting up a new task.

    Regularly when I setup a new, scheduled, ‘due’ task it is like:

    1.
    Scheduled for: 10th JUL
    Due on: 15th JUL
    Show in Today: 2 days before

    So this task:
    - is moved from Scheduled to Today=goes YELLOW on 10th JUL (notification)
    - goes RED on 13th JUL
    - goes DUE on 15th JUL (notification)
    _____________________________________________________________

    With repeating task we have ie.

    2.
    Repeat 10th each month
    Due date = repeat date
    Show in Today 2 days before

    So this task:
    - appears in Today=goes YELLOW on 8th each month
    - goes RED on 10th each month

    I can see inconsistency in “Show in Today” function.
    In 1. it makes task RED
    In 2. it makes task YELLOW

    Is it a bug or this is the way an app works. I mean is it possible to setup due and repeat date individually ?

    Thanks.

  30. Scott Feb 03, 2011

    Updated. This was a bumpy reinstall process. For whatever reason Things seemed to have downloaded the new versions but the old ones were still on my devices. Now, after a couple of different deletes and redownloads they seem to be working.

  31. Kevinm78 Feb 03, 2011

    Beautiful implementation. This is the reason we all love things: a well designed and implemented UI.

    One thing I am wondering – and hope I will see in the morning – will my repeating to dos created on the Mac show up on my iPad without having to sync with the desktop?

  32. Swagman Feb 04, 2011

    Kudos! I’m a switcher :-)

  33. Jim Feb 04, 2011

    I second the idea that this is why I use Things even though cloud syncing isn’t available yet. Love the in-depth explanations as to the decisions you made, thanks for keeping us updated.

  34. Richard M. Feb 04, 2011

    Great ! Top Notch ! Couldn’t have dreamt better ! The auto-generated tasks are neat !!

    Keep up the good work !

    I just can’t wait to see how cloud sync will turn out, I think it’s going to be a blast !

  35. Adec Feb 04, 2011

    Well done. Very nice slick interface.

    I agree with @Robert that it would be useful to be able to add repeating tasks to projects (not just areas) as you can for non-repeating scheduled tasks.

    A couple of other more minor suggestions:

    - How about a way to create repeating tasks from the main screen in TT rather than just in Scheduled Tasks.

    - Is there a way to turn an existing task into a repeating one?

    Keep up the good work!

  36. Johnny Feb 04, 2011

    Nicely implemented, really. But woundn’t be more useful to add repeating tasks directly from the frontpage? Maybe using a similar UI applied to add “Due Dates” (Edit Due Date) after selecting “Create In > Schedule” in which Due Date camp would be named “Schedule”, and “Show in Today” camp would be “Repeat” (inicially set Off). So, selecting “Repeat” would lead users to the new repeating tasks edition pane. Wouldn’t be a faster and more practical and GTD aligned implementation?

  37. Michael Feb 04, 2011

    Unfortunately, big problems syncing all of a sudden. Desktop version gets stuck on “preparing.” Everyone else seems happy… any advice?

  38. Jürgen Feb 04, 2011

    @Michael: You should receive an email from our tech support team soon.

  39. robfuzz Feb 04, 2011

    just updated TM and synced a repeating task from my phone and it worked great. Didn’t take long at all.
    Now could you please explain the URL scheme thing?
    thanks.

  40. Bryon Feb 04, 2011

    After I sync Things for Mac with the new Things on my iPhone, should I be seeing the existing repeating events that are on my Mac on my iPhone now? Because I’m not…

  41. Marlin Feb 04, 2011

    Great good! Was well worth the wait. Now lets knock cloud sync out ;)

  42. Peter Brülls Feb 04, 2011

    @Robert I think that it’s basically correct behavour. “Projects” are an ordered string of tasks – the are non repeating in nature, otherwise it wouldn’t be project. Yes, there are some exemptions like “to a project report on X each monday”, but I think that’s something for a calendar or general repeating task anyway.

    Just to offer a different optionion, not that I presume that mine is the only correct one.

  43. Peter Brülls Feb 04, 2011

    Really, Really missting “nth / last -n” workday, though. There’s stuff like “send in reimbursement” or “check paycheck” that’s tied to workdays, not simply days.

    Even a “weekdays” would help – I realize that “workday” would require calendar checking based on very local rules, which would be out of scope. But a simple mo-fr and sa-su like every cheap programmable clock has should be doable.

  44. M Feb 04, 2011

    I recently updated, but I absolutely do not see the repeating task button – my interface is the exact same. Anyone know what may be the culprit?

  45. Notpill Feb 04, 2011

    The latest update broke my Things app.
    Here’s the crash report:

    Thread 0 Crashed:
    0 com.apple.Foundation 0x92c13490 _NSRaiseError + 264
    1 com.apple.Foundation 0x92cab0cc -[NSObject(NSKeyValueCoding) valueForUndefinedKey:] + 256
    2 com.apple.Foundation 0x92c55580 _NSGetUsingKeyValueGetter + 76
    3 com.apple.Foundation 0x92c081a0 -[NSObject(NSKeyValueCoding) valueForKeyPath:] + 168
    4 com.apple.AppKit 0x93caf4d0 -[NSObjectParameterBinder _updateObject:observedController:observedKeyPath:context:] + 432
    5 com.apple.AppKit 0x93a0c820 -[NSObject(NSKeyValueBindingCreation) bind:toObject:withKeyPath:options:] + 628
    6 com.apple.AppKit 0×93804638 -[NSIBObjectData nibInstantiateWithOwner:topLevelObjects:] + 728
    7 com.apple.AppKit 0x937f08ec loadNib + 240
    8 com.apple.AppKit 0x937f0344 +[NSBundle(NSNibLoading) _loadNibFile:nameTable:withZone:ownerBundle:] + 716
    9 com.apple.AppKit 0×93847814 +[NSBundle(NSNibLoading) loadNibFile:externalNameTable:withZone:] + 156
    10 com.apple.AppKit 0x938d764c +[NSBundle(NSNibLoading) loadNibNamed:owner:] + 344
    11 com.apple.AppKit 0x938d73ec NSApplicationMain + 344
    12 com.culturedcode.things 0×00002514 0×1000 + 5396
    13 com.culturedcode.things 0×00002224 0×1000 + 4644

  46. Jürgen Feb 04, 2011

    @Notpill: We have identified the problem. It seems to only occur on Tiger. We are working on a fix. I hope we will be able to release an update soon.

  47. Fabio Ribeiro Feb 04, 2011

    Hi CC Team,

    Repeating tasks is very important and is nicely implemented.
    I updated my Things on Mac, Iphone and Ipad.
    But sync is taking more than a half hour to be completed.

    I will post a support ticket.

  48. Roman Feb 04, 2011

    @ all who face sync issues after updating:
    Please try the following procedure, it should fix the issue.
    - Remove the device from syncing via Things’ preferences
    - Delete Things from your device (This will erase the Database from the device)
    - Restart the device
    - Quit and re-launch Things on your Mac
    - Reinstall Things touch on your device using iTunes or download it directly to the device using App Store
    - Make sure your Mac and the device are on the same wifi network
    - Launch Things on your device
    - Open the Preferences on your Things for the Mac and add the device for syncing
    - Sync the devices using the Sync Button

    Note that the initial sync can take longer than usual.
    If this doesn’t help, please contact Support.

  49. Roman Feb 04, 2011

    @Peter Brülls:
    It is indeed possible to schedule for weekdays and/or weekends. Please check this wiki article for details. It shows the Mac screenshots, but the same principle applies to the iOS versions of Things.

  50. Roman Feb 04, 2011

    @ Bryon and M:
    Please make sure you are really running Things for iPhone 1.7 / Things for iPad 1.4. If you can’t see the new repeating tasks button in Scheduled, you are probably not running the most recent versions. If you continue to have issues, please contact Support.

  51. James Musson Feb 04, 2011

    This kind of care over the user experience is what makes Things such a great app, and a joy to use.

    Thanks Cultured Code!

  52. Donna Feb 04, 2011

    Hi!
    I’ve now been trying out things for mac a few days and I’m very satisfied with it. Is Things universal? With that I mean, if I purchase it for mac or iPad will I be able to use the same version on my iPhone? I feel it’s too expensive to buy one things for my iPad, iPhone and mac. since it’s almost 600:- swedish kronas..

  53. notpill Feb 04, 2011

    @Jürgen
    Thank you. All my life is managed by Things and I can’t live without :)

  54. iCoco Feb 04, 2011

    Great! Thank you for this awesome implementation of recurring tasks. And for your open communication (you know some of us Things users have been complaining about that in the past – but that seems to be past perfect now).

    @ Toby: I am one of those users that have been yearning for recurring tasks from day one. I use them quite frequently. CC, you made me happy, finally! To me, recurring tasks are much more important than cloud sync.

    @ CC Team: Don’t recurring tasks sync with Things on my Mac?? Or why is it that I don’t find them in the scheduled list on my Mac after synching with my iPhone? And vice versa?

  55. Jürgen Feb 04, 2011

    @iCoco: Yes they do sync both ways. Do you have the latest version of Things Mac? It should be 1.4.4. Earlier versions do not support syncing of repeating tasks.

  56. Roman Feb 04, 2011

    @OS X 10.4 (Tiger) users: There has been a known issue that would lead to a crash when launching Things after the update. We have now fixed this issue, for details please see these instructions.

  57. Bryon Feb 04, 2011

    Just figured out I need the new versions of Things for Mac to sync repeating tasks with the new Things for my iPhone.

  58. Jacques Feb 04, 2011

    I see how to create a Repeating task, very nice.

    I also notice you can pause repeating with iOS Things. How can I stop (remove, not pause) repeating ALL together on a given task? ..with iOS or with Mac version?

    thanks

  59. Peter Brülls Feb 04, 2011

    @Roman Ah, thanks for the tip, but I find this counter intuitive, to say the least.

    From the wiki I’d assume that I get five tasks, when ever the rule gets fulfilled.

  60. Jürgen Feb 04, 2011

    If you experience a technical issue, please consider to use our Support Form.
    We are not able to give proper tech support here.

    You can also discuss with other Things users in our Forums.

  61. iCoco Feb 04, 2011

    @ Jürgen: Thank you for your reply. I had version 1.4.3. on my iMac. Just updated, synced, and now it’s all there!

    You made my day! :)

  62. Jacques Feb 04, 2011

    @Jürgen Ok, I submitted a Support request.

    Who does the art here? (I saw your Twitter account as well.) Love it!

    thanks

  63. Matthew Hoskinson Feb 04, 2011

    Awesome! Just what I was hoping for. Looks great, team. Thanks!

  64. Joe Santa Feb 04, 2011

    Why not make the repeating tasks button accessible globally? Why limit it to the scheduled section?

  65. TJ Feb 05, 2011

    Repeats every day, has a due date, and shows up 0 days before!!!

    WOOT
    (Thank you)

  66. iCoco Feb 05, 2011

    @ Joe Santa: Maybe because repeating tasks always *are* scheduled tasks?

  67. Lycanthrope Feb 05, 2011

    One aspect that appears to be missing (although perhaps I just didn’t see it well) is recurrence on specific days – for instance Monday – Friday. Useful for tasks that recur at work, but not during the weekend.

    Would love to see a soecific gtd “waiting for” added too, this seems like the one big missing feature when comparing withbthe methodology. As a manager of a large team this would be very welcome – yes you can simulate it with tage, but it’s messy.

    Forecast/overview feature like OF would be real icing on the cake….

  68. Toby Feb 05, 2011

    I did not have my Things Touch and Things Mac in sync when upgrading, and now I am stuck with unsyncable tasks on my Things Touch!!!

    Do a sync before upgrading either version to hopefully avoid this!

  69. Hugo Ferreira Feb 05, 2011

    > Repeating tasks with due dates can now be generated zero days before due

    Yupiiiii!!! Finally! Thanks, thanks!

  70. Melvin Feb 05, 2011

    Cultured Code and Things could use some colour… this monochromatic blue/grey/white theme and doodlish cartoons are a bit dated.

  71. Nigel Feb 05, 2011

    What if I have a task and I want to make it repeating. Is that at all possible? And perhaps the repeating task should be added to task creation?

  72. Vishal Feb 05, 2011

    How do I add re-occuring todo(s) to an Active Project on the mac client?

  73. Peter Brülls Feb 06, 2011

    @Roman Sorry, I don’t get it. When I follow those instructions, and to a “Every 4 wrkks on Monday AND on Tuesday AND on Wednesday…” I get as next instances February the 7th, the 8th, the 9th, and so on. But that’s not what I meant and what I need.

    I need something like “every last workday of a month”.

    Right now I make do with “every last day of a month” and “show 3 days before its due”, which is almost good enough.

    That aside, there’s a bug when editing on things on mac, I’ll send in a screencast/description.

  74. Postmichel Feb 06, 2011

    Excellent work! For me more than “good enough”

  75. Graham Feb 06, 2011

    I have the update but see no reference to repeating tasks.

  76. Peter Leijten Feb 06, 2011

    Great addition, was waiting for this addition. As always users want more, the already requested working day related schedule option would be another great function. Keep adding this kind improvements.

  77. Werner Feb 06, 2011

    Some of our users experienced crashes when syncing after the upgrade. We have by now fixed the bugs that are probably responsible for this. We are now finalizing the bugfix updates for TT and TiP and will send them to Apple for review tomorrow.

  78. Werner Feb 08, 2011

    Update: we have just sent the bugfix updates (TT 1.7.1 and TiP 1.4.1) to Apple for review.

  79. Antti Feb 08, 2011

    How long does it typically take for Apple to review the updates?

  80. Paul Feb 08, 2011

    Love it ! ! !

    Well done.

  81. Brent Feb 09, 2011

    A ‘business day’ option would be nice to have. For instance, my wife receives her retirement check on the 1st business day of the month. I have several tasks at work that I need to do the last 3 business days of the month. I can always schedule them early and then postpone it they pop up on a weekend, but it would be great to have the option to do it directly in the scheduler.

  82. Jacquelyn Feb 09, 2011

    One more reason why Culture Code is great – they took the time to fix the quirks for those of us who are (sadly…and ashamedly) still on Tiger.

    So far so good on the new update. Thanks so much, guys! You’re the best! Much appreciated!