Delete completed reminders

With the understanding that I know just about nothing about Javascript… can someone point me in the direction of a script that would delete all Completed reminders?

I have found when the database gets large the “Find Reminders” action in shortcuts slows down considerably. Clearing out the deleted helps but I was hoping to automate something and doing so via Shortcuts requrire me to confirm it. Toolbox Pro doesn’t work because (per the developer on twitter) it can’t get the UUID it needs of completed reminders to interact with them.

I have scriptable however and would love to just drop that action into a Shortcut if I can get it figured out.

I use this:

Note that this doesn’t clear all completed reminders, just those that are in my “Invoices” list and were completed more than a week ago. You can set the filters in the third step to whatever you need (and if you don’t need a date filter, you can delete the first two steps).

It’s true that if you wanted to run these steps automatically at a set time, you’d have to confirm the action, but that restriction is supposed to be going away in iOS 14.

I’m on iOS 14 and when you run that you still have to confirm (usually 3 times in my case, which I think is because of the large volume of them.)

I had the extra confirmations once, too (“are you really REALLY sure you want to do this?”), but only when I had lots (>100) of completed reminders.

1 Like

Now you’ve got it. I live in reminders. They are frequently that large :man_facepalming:

You might be able to use a time of day automation to do it automatically before you have collected so many done items…

Even just 3 makes you confirm. Ultimately I do want it on time of day. Thought maybe scriptable was an option. Guess not :man_shrugging:

Funny, but I didn’t see the confirmation when I had just a few to delete and ran the Shortcut on my iPad. But I did just run a test on my iPhone and had to confirm. Maybe the difference is that the iPad test was run with Shortcuts and Reminders side by side.

I’ve been assuming you don’t want a Mac-based solution, but if I’m wrong about that, you can adapt this script and set it up to run periodically.

1 Like

Ultimately I prefer ios… but I have an always on mac available to me so I will look at this. Thank you for the help. Much appreciated

In my testing a script in scriptable I was coming up with I managed to delete ALL of my reminders :man_facepalming: :joy: Luckily, I have ways to re-generate most of it. It’ll take time but I’ll recover. And it’s what I get for testing my own scripts. Ultimately I’m trying to learn. This script seems to work in my testing now. I assume it could be better?

let all = await Reminder.allCompleted();
for (let r of all) 

Never entered my mind to delete these.
This would explained why trying to get all uncompleted reminders for the past week in Shortcuts took so long to the point that I used Scriptable to get the reminders. For some reason it worked way faster. I just used Scriptable to delete all my completed reminders. Took about 5 minutes to delete over 3000. Reminders app should have some kind of “Delete completed reminders” action.

After I finished deleting the completed reminders I test my Shortcut to find all uncompleted reminders before today. It used to take about 5 minutes to get them. Now it’s almost instantaneous. I guess the Find reminders action must go through all of the reminders before it can hand off just the uncompleted ones. So if you have thousands of them it will take awhile. I will now have a schedule to delete all the completed ones in my Work and Family reminders groups. And have Pushcut run it on the 1st day of every month.

Thanks @brentacPrime and @drdrang!

1 Like


I use this shortcut to delete the completed reminders. It uses the “Run with” Scriptable action, and deletes all the reminders without asking for confirmation:

1 Like