even though "TodoMVC" shows that a todo app is kind of a cliche, it's interesting how many of the same (incorrect) assumptions so many things make. (Also, many people make idiosyncratic lists of their own requirements, see below ;-)
Table stakes is having good "repeat" events, and some choices for stuff like "Final Friday of Month" or whatever- as well as a crisp "this repeats when task is marked complete vs this repeats when task was dude" I've found some apps that do this pretty well (Appigo Todo - but it hasn't been updated in years) but too many either don't support it or bury it in the UI.
Of course even Appigo makes very-engineery (vs. human-factorsy) presumptions like "everything with a date is more urgent than anything without a due date" and "the more overdue something is, the more urgent it must be" while the opposite is most likely true.
One other thing I haven't seen in an app (at least not one less than $20) - I want categories for my todo items, but I don't want to have to navigate back and forth to view the various categories... way too many apps treat these as separate lists for some unfathomable reasons, so trying to skim both urgent and less urgent stuff (less ugent might be stuff that needs to be done in a certain place, like at home or a store) requires clickng back and forth. I just want a big old list with subcategories inline
I'd also like tracking and charting of how many things I have pending vs get done, so I can do a little self-gamification if i want - but that's not as important as a categorized-but-browsable-as-single-list