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