🎂

Anniversaries

Turns the dates in your Contacts into yearly calendar reminders — automatically.

Join TestFlight Beta

01What it does

Anniversaries reads birthdays and other recurring dates from your Contacts and writes them as yearly all-day events into a dedicated "Anniversaries" calendar. It handles four kinds of dates: birthdays, wedding anniversaries, dates of death, and custom anniversaries.

Your Contacts and Calendar apps remain the single source of truth. Anniversaries only orchestrates between them — it doesn't store anything in the cloud, requires no account, and won't touch calendar events it didn't create. Delete the Anniversaries calendar and it rebuilds itself on the next sync.

Each calendar event gets a title that tracks elapsed years: Jane Smith's 1st Birthday, 2nd Birthday, and so on. Yearless birthdays (month and day only, no year) always use a plain title like Jane Smith's Birthday. Every event carries a 09:00 alert on the day.

👤
Contact birthdays

Reads the standard Birthday field, including yearless month/day entries.

👨‍👩‍👧
Related persons

Reads dates embedded in the Related Names field using simple date tokens.

📅
Smart titles

Event titles count off 1st, 2nd, 3rd… automatically each year.

⚡️
Resumable sync

Calendar writes pick up where they left off if the app is closed mid-sync.

🌙
Dark mode

Follows your system appearance throughout.

02Requirements

iOS version iOS 18 or later
Device iPhone (any model that runs iOS 18)
TestFlight The free TestFlight app must be installed before joining the beta
iCloud Not required — but if your Contacts and Calendar already sync via iCloud, the anniversary events will too
Internet Not required after installation

03Install

  1. Install TestFlight If you don't have it already, download TestFlight from the App Store — it's free.
  2. Open the invite link Tap Join TestFlight Beta on your iPhone (the link must be opened on the device you want to install on).
  3. Accept the invitation TestFlight opens automatically. Tap Accept on the invitation screen.
  4. Install the app Tap Install. The app downloads and appears on your Home Screen.
  5. Launch and grant permissions Open Anniversaries. iOS will ask for Contacts and Calendars access — both are required for the app to work.
First sync: The initial run can take a minute or two if you have a large contacts library. A progress bar shows the calendar-write phase. Subsequent launches only process changes and are much faster.

04Permissions

Anniversaries requests two permissions. iOS will prompt for each on first launch. Both are required — the app cannot function without them.

If you deny either permission, you can grant it later in Settings → Privacy & Security.

05Privacy

No data leaves your device
  • Anniversaries collects no personal data and sends nothing to any server.
  • No analytics, crash reporting, or telemetry of any kind is included.
  • Contact names and dates are read from your local Contacts database and written to your local Calendar database. They never leave those apps except through your own iCloud sync, which is handled entirely by iOS — not by Anniversaries.
  • No account, login, or network connection is required at any point.

06Changelog

v0.1.34 18 May 2026 Current
  • Auto-repair calendar — if the Anniversaries calendar is deleted externally, it is recreated and fully repopulated on the next sync
  • Accurate format-mismatch detection — dates already in the system locale format are no longer flagged red; stale flags clear on the next sync
  • Restructured Settings — split into Contacts, Calendar, and General sections
  • Faster launch — permissions and contacts loading now run in parallel; the splash screen appears immediately before any Swift code runs
  • Resumable calendar sync — writes proceed outward from the current year and resume from the last processed year if the app is closed mid-sync
  • Non-blocking startup — SwiftData container initialises on a background thread; no blank screen on first launch
  • Related person date tokens* birthday, wedding, death, # other; legacy hash-label format still parsed and silently upgraded
  • Yearless birthday support — month/day-only birthdays always use a plain title ("Jane's Birthday") with no ordinal counting
  • Smart event titles — 1st / 2nd / 3rd… ordinals computed from the year of the next occurrence
  • App iconbirthday.cake SF Symbol with light, dark, and tinted variants for iOS 26 home screens