I am working on a project where users can schedule custom notifications. It should be possible to specify the period for each notification quite freely:

  • Every 2nd Sunday
  • 1st Monday each month
  • Every two days

Does anyone know a good UI to offer such a selection? I find this astonishingly difficult.

Of course quite simpler solutions are posible. For example simply two drop down boxes, one with values 1-99 and one with values "days, weeks, month, years". An input of "14 days" would than result in a two-weekly period. But when would notifications start then?

When entering "every 2nd Sunday" notifications would start next Sunday, repeating every two weeks. With the input above I would have to ask for a start day as well. Not a big deal of course, by would the user care on which date the next Sunday is when "every 2nd Sunday" holds all information a human would need to start the schedule?

Additionally inputs of "60 days" might be realistic, but most likely "60 years" will never be used. How to respond when "60 years" is entered anyway? Auto correct it (to which value)? Prompt the user "Are you sure"? None of this would be good UX, would it?

Long story short: Are there known, good solutions for this kind of input?

  • 1
    I can't be bothered with a detailed answer, as like you say, it can get complicated. But you might be able to get some ideas if you google "cron expression generator" and look at some free online tools that do that.
    – musefan
    Commented Jun 28, 2021 at 10:03
  • I don't see what is wrong with selecting a date and choosing a repeat interval after that. Calendar apps (like Apple) have that too. Or am I missing something? Prompting the user for possible mistakes is nice to have as long as there is a 99% chance that it is a mistake.
    – jazZRo
    Commented Jun 28, 2021 at 10:31
  • If you've technical competent users, a cron expression may be appropriate (see crontab.guru).
    – Emaro
    Commented Jun 29, 2021 at 13:06

1 Answer 1


Here's an example of Google Calendar's recurrence feature: Google Calendar - custom recurrence example

Note that the start date is defined by the initial event creation, and this is merely appended to that.

I find this sort of abstraction of simple terms more complicated than it needs to be. In common language, someone would say things like "Every 2nd Sunday", "The 1st Sunday of the month"...so why not let them? Provide an open text field that can parse a few simple strings with examples:

Custom text field for recurrence

Not seen here - some sort of visual representation of upcoming dates in a calendar view.

Naturally, the more languages you support, the more you'll need to research and test the appropriate phrasing and parsing, but English-only should be fairly trivial.

  • 1
    I played around with the widget you mentioned, and it does a fairly good job of covering all of the edge cases I could think of. For example, setting up an event that repeats on a monthly basis gives the user an option of "Monthly on day 28" or "Monthly on the fourth Monday". I found that it flowed naturally as I selected many different types of recurrences. However, the problems I think you'd run into with the free-text recurrence field would be the variety of possible phrasing, ambiguities (e.g. "end of the week"), and the lack of visibility of available options. Commented Jun 28, 2021 at 13:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.