How to Recover Lost Reminders after Upgrading to macOS Sonoma

After upgrading from macOS 12 Monterey to macOS 14 Sonoma, I discovered that all my reminders in Reminders.app disappeared. This post will describe the procedure I used to recover my old reminders.

Unfortunately, I do not sync my Reminders to iCloud, so my only option for recovery was to find the lost reminders on disk.

After some investigation, I discovered that Reminders.app was using a new folder to store its data on macOS 14 Sonoma. Consequently, Reminders created a fresh database, rather than copying over existing reminders from the older database. (I suspect that Reminders should have migrated this data automatically during the macOS upgrade, but for whatever reason, it did not.)

Caveats

There are several caveats about my situation, which you should consider before proceeding.

  • I do not sync my Reminders to iCloud, so I cannot say how my solution might affect iCloud sync/backups.
  • I upgraded from macOS 12 (Monterey) directly to macOS 14 (Sonoma), so I cannot say how macOS 13 (Ventura) would have behaved.
  • The MacBook Pro had originally shipped with macOS 10.15 (Catalina), before it was upgraded directly to macOS 12 (Monterey) and then to macOS 14 (Sonoma). Whether that upgrade history might explain why this issue has occurred, I do not know.

Cautions

Before proceeding, consider whether you have recent Time Machine backups, preferably from before and after the upgrade.

While it may be possible to perform a similar recovery procedure in the macOS GUI (using the Finder and Activity Monitor applications), I find it more convenient to type commands into a terminal (such as Terminal.app, found under /Applications/Utilities). Therefore, that is what I will demonstrate below. If you are not familiar with typing commands in a terminal, then I recommend that you seek the assistance of someone who is.

If at any point, you encounter an error, you should stop and review the command you typed for any typographical errors. If you typed the command correctly, but still encountered an error, then you should err on the side of caution and not proceed.

Procedure

Let’s confirm the old and the new folders where Reminders.app may have stored data.

1. First, confirm the old folder exists and contains SQLite database files (which should have your reminders from before the upgrade).

ls -l ~/Library/Reminders/Container_v1/Stores

This should output a number of different files, all beginning with the word Data.

Three of these files will end with the extension .sqlite — one that is named Data-local.sqlite and two that will contain unique IDs. Data-AD61C06B-0547-4963-A6B1-71A648D81B5B.sqlite and Data-CC737A22-C1AA-439E-89FD-C4FC21E8CDB1.sqlite in the example below.

Additionally, there are similar files with the extensions .sqlite-shm and .sqlite-wal.

The unique IDs will be different for you.

total 17136
-rw-r--r--  1 user  staff   364544 Nov  5  2023 Data-AD61C06B-0547-4963-A6B1-71A648D81B5B.sqlite
-rw-r--r--  1 user  staff    32768 Jun 20 14:40 Data-AD61C06B-0547-4963-A6B1-71A648D81B5B.sqlite-shm
-rw-r--r--  1 user  staff    65952 Nov  5  2023 Data-AD61C06B-0547-4963-A6B1-71A648D81B5B.sqlite-wal
-rw-r--r--  1 user  staff   536576 Mar  9 04:01 Data-CC737A22-C1AA-439E-89FD-C4FC21E8CDB1.sqlite
-rw-r--r--  1 user  staff    32768 Jun 20 14:40 Data-CC737A22-C1AA-439E-89FD-C4FC21E8CDB1.sqlite-shm
-rw-r--r--  1 user  staff  6505512 Mar  9 04:01 Data-CC737A22-C1AA-439E-89FD-C4FC21E8CDB1.sqlite-wal
-rw-r--r--  1 user  staff   208896 Oct  5  2020 Data-local.sqlite
-rw-r--r--  1 user  staff    32768 Oct  5  2020 Data-local.sqlite-shm
-rw-r--r--  1 user  staff   107152 Oct  5  2020 Data-local.sqlite-wal

2. Second, confirm the new folder exists and contains database files (which presumably were initialized as a fresh, empty reminders database).

ls -l ~/Library/"Group Containers"/group.com.apple.reminders/Container_v1/Stores

You should see a set of similarly-named files. However, the unique IDs should be different. Data-4FE2FD2D-873B-49C8-9AB7-B6152EF87163.sqlite and Data-D13B0203-8ABC-4437-B818-1C20659ACFCE.sqlite in the output below.

Again, these unique IDs in the new folder will be different for you, but they should also be different from the unique IDs you observed in your old folder.

total 6552
-rw-r--r--  1 user  staff  737280 Jun 20 15:00 Data-4FE2FD2D-873B-49C8-9AB7-B6152EF87163.sqlite
-rw-r--r--  1 user  staff   32768 Jun 23 14:24 Data-4FE2FD2D-873B-49C8-9AB7-B6152EF87163.sqlite-shm
-rw-r--r--  1 user  staff  560352 Jun 23 15:44 Data-4FE2FD2D-873B-49C8-9AB7-B6152EF87163.sqlite-wal
-rw-r--r--  1 user  staff  737280 Jun 20 15:00 Data-D13B0203-8ABC-4437-B818-1C20659ACFCE.sqlite
-rw-r--r--  1 user  staff   32768 Jun 23 14:24 Data-D13B0203-8ABC-4437-B818-1C20659ACFCE.sqlite-shm
-rw-r--r--  1 user  staff  416152 Jun 20 15:01 Data-D13B0203-8ABC-4437-B818-1C20659ACFCE.sqlite-wal
-rw-r--r--  1 user  staff  737280 Jun 20 15:00 Data-local.sqlite
-rw-r--r--  1 user  staff   32768 Jun 20 15:00 Data-local.sqlite-shm
-rw-r--r--  1 user  staff   12392 Jun 20 15:01 Data-local.sqlite-wal

If you have confirmed that both folders exist, and the unique IDs in each folder are different, then you can proceed with the migration of your old reminders.

3. Before proceeding, you must exit the Reminders application, by choosing Reminders > Quit Reminders from the menu bar.

4. Next, you will need to stop the remindd process, which remains running in the background, even after you have exited the Reminders application. This remindd process is hidden, but it remains running so that it can trigger macOS pop-up notifications for any Reminders you may have scheduled.

Check if the remindd process is running.

ps -ef | grep remindd | grep -v grep

In you see something similar to the following output, then the process is running. If you do not see /usr/libexec/remindd in the output, then it is not running, and you can proceed to step #5.

  502 87621     1   0  5:21PM ??         0:07.28 /usr/libexec/remindd

For the migration to work, you must kill the remindd process, by issuing the following command.

pkill remindd

Now, confirm that the process is no longer running, by running the following command again. You should see no output.

ps -ef | grep remindd | grep -v grep

If the /usr/libexec/remindd process is still running, then you may need to forcefully kill the process, by adding -9 to the pkill command.

pkill -9 remindd

5. Let’s do one additional check to confirm that no other processes are using the new directory.

lsof +D  ~/Library/"Group Containers"/group.com.apple.reminders/Container_v1/Stores

Again, you should see no output. However, if you see any lines that look similar to the following, then the remindd process (or some other process) may still be accessing the database.

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
remindd 9339 user 3u REG 1,9 905216 374636015 /Users/user/Library/Group Containers/group.com.apple.reminders/Container_v1/Stores/Data-AD61C06B-0547-4963-A6B1-71A648D81B5B.sqlite
[...]

6. Next, you are going to move aside the new folder (containing the empty reminders database), and then copy the old folder to where Reminders.app (in Sonoma) expects to find its database.

First, rename the new folder by moving it from Stores to Stores.SAVE.

mv  ~/Library/"Group Containers"/group.com.apple.reminders/Container_v1/Stores  ~/Library/"Group Containers"/group.com.apple.reminders/Container_v1/Stores.SAVE

Next, copy the old Stores folder into the new location.

IMPORTANT: Do not place a / at the end of ~/Library/Reminders/Container_v1/Stores in the following command. If you inadvertently put a / at the end of ~/Library/Reminders/Container_v1/Stores, then it will copy only the files within the Stores folder, and not the Stores folder itself. In macOS, a folder is an object distinct from the files within it. You want both the Stores folder (and the files within) to be copied.

cp -a \
~/Library/Reminders/Container_v1/Stores \
~/Library/"Group Containers"/group.com.apple.reminders/Container_v1

Now, let’s confirm that you copied the old Stores folder to the new location.

ls -l ~/Library/"Group Containers"/group.com.apple.reminders/Container_v1/Stores

The output should show the same files from the old folder, but they should now also be located in the new folder.

total 17136
-rw-r--r-- 1 user staff 364544 Nov 5 2023 Data-AD61C06B-0547-4963-A6B1-71A648D81B5B.sqlite
-rw-r--r-- 1 user staff 32768 Jun 20 14:40 Data-AD61C06B-0547-4963-A6B1-71A648D81B5B.sqlite-shm
-rw-r--r-- 1 user staff 65952 Nov 5 2023 Data-AD61C06B-0547-4963-A6B1-71A648D81B5B.sqlite-wal
-rw-r--r-- 1 user staff 536576 Mar 9 04:01 Data-CC737A22-C1AA-439E-89FD-C4FC21E8CDB1.sqlite
-rw-r--r-- 1 user staff 32768 Jun 20 14:40 Data-CC737A22-C1AA-439E-89FD-C4FC21E8CDB1.sqlite-shm
-rw-r--r-- 1 user staff 6505512 Mar 9 04:01 Data-CC737A22-C1AA-439E-89FD-C4FC21E8CDB1.sqlite-wal
-rw-r--r-- 1 user staff 208896 Oct 5 2020 Data-local.sqlite
-rw-r--r-- 1 user staff 32768 Oct 5 2020 Data-local.sqlite-shm
-rw-r--r-- 1 user staff 107152 Oct 5 2020 Data-local.sqlite-wal

As further confirmation, compare the old and new folders, by doing a recursive diff.

diff --recursive --brief \
~/Library/Reminders/Container_v1/Stores \
~/Library/"Group Containers"/group.com.apple.reminders/Container_v1/Stores

There should be no output from the above diff command (which implies the old and new folders are identical). If the output reports any files that differ, then something went wrong, and you should review all previous commands and outputs, before proceeding.

At this point, your reminders from the old folder have been copied to the new location expected by Reminders on macOS Sonoma. Launch the Reminders application. If all went well, then all your old reminders should be migrated and restored.

additional phrases related to this post:

  • Where are reminders from Reminders.app stored on macOS 12 Monterey?
  • Where are reminders from Reminders.app stored on macOS 14 Sonoma?
  • reminders lost after Sonoma upgrade
  • reminders missing after Sonoma upgrade
  • reminders vanished after Sonoma upgrade
  • reminders wiped after Sonoma upgrade

Leave a Reply

Your email address will not be published. Required fields are marked *