Release Notes

What's New

Version 26.3

Search your dates

A search bar in the main list lets you filter dates by contact name or event type. Start typing and the list narrows instantly.

Contact photos, everywhere

Contact photos now appear throughout the app — in the date list, in the date detail view, and across all your widgets. The small widget can use the photo as a full-bleed background with a colour-matched tint overlay and a soft frosted blur across the bottom of the image; medium and large widgets show a small circular photo next to each row; the lock screen widget shows a thumbnail beside the contact name. Text on the small widget automatically switches to dark or light to stay readable against whatever colour the photo brings. Contacts without a photo show nothing in widgets — no placeholder, no monogram.

Your contacts, up close

Tap any contact's name or photo to open a dedicated contact screen showing all their dates at a glance, with sync and pin controls in one place.

Add a date to any contact

You can now add a date to any contact in your address book — even one with no existing dates. A new contact picker lets you browse your full contact list and choose who to add a date to. You can also set or update a contact's birthday directly from within KeepDates.

Configure each widget independently

Long-press any KeepDates widget and tap Edit Widget to configure it on its own. You can show or hide contact photos and choose how birthdays are handled — Always Show, Always Hide, or Follow the App Setting — on a per-widget basis. Premium users can also set a per-widget lookahead window: choose 1 Week, 1 Month, 3 Months, or 1 Year instead of following the app's setting, so different widgets can show different slices of your upcoming dates. Today's dates are now always included in widgets; the old global "Show Today" toggle has been removed.

Date detail view refreshed

The top of the date detail screen now shows a prominent header with the contact avatar, name, and date label. Birthday dates are marked with a birthday cake icon. On contacts with a photo, the whole screen subtly takes on a colour from their avatar — the background warms to match and the list sections pick up a soft tinted tone. It fades gracefully back to the default when no photo is present.

Other improvements

Home screen widgets now show the calendar date (month and day) alongside the countdown. Month group headers now show how many dates are in that month. The date entry picker is now a single scrolling wheel with day, month, and year columns side by side. The six tint color presets now match Apple's official color palette. When adding a date, the label picker is now a swipeable row of pill buttons — swipe to see all options. If the contact already has a date of the same type, a warning appears before the date picker so you know before saving a duplicate. Contact names in the Review sheet now respect your name display preference.

Bug fixes

Contacts with white-background or near-black photos no longer cause a washed-out or near-black colour gradient to appear behind their dates — those photos are now treated as having no dominant colour and the view falls back to the default background. Secondary text in tinted list rows now stays legible even when a contact's photo has a very dark dominant colour. Pulling to refresh no longer opens the onboarding screen if you previously skipped the calendar permission step during setup.

Version 26.2.1

Years label fixed in reminders

The "N yrs" detail (e.g. "Anniversary (6 years) is tomorrow") in reminder notifications was not always showing correctly and was wrapped in unnecessary parentheses — that's fixed.

Widgets optimizations

The widget no longer re-renders every hour. It now updates when you sync and once at midnight to reset the day countdowns. Since "days until" doesn't change during the day, the hourly refreshes were doing unnecessary work.

Version 26.2

Group your dates your way

The main list can now be viewed grouped by month or by contact, not just in chronological order. Tap the new button in the top-right corner to switch between the three modes. You can also choose how contact names are displayed throughout the app — given name first, family name first, or family name with a comma.

See who's reminding you — right in the banner

Reminder notifications for upcoming dates now show the contact's photo directly in the notification banner. There's no need to long-press or expand the notification to see it. Birthday reminders look slightly different to make clear they're handled by iOS, not KeepDates.

Filter dates with more precision

Label rules now support two new options alongside the existing ones: Does not contain hides any label whose text includes a certain word, and Is not exactly hides every label except one specific match — useful if you want to keep only one label type visible and hide everything else.

A friendlier first-time setup

When you open the app for the first time, calendar access is now a separate, skippable step. Contacts is the only permission you need to get started — you can add calendar sync later from Settings whenever you're ready. The Calendar Sync toggle in Settings also now guides you through the permission prompt if you haven't granted access yet, the same way the notification toggle already did.

Widgets stay put at large text sizes

If you use a larger system font size, the header on your medium and large KeepDates widgets now stays pinned at the top. Previously it would shift when rows got taller — that's fixed.

Version 26.1.1

Notification toggle fixes

Notification toggles in Settings now correctly show as off when you haven't granted notification permission. Tapping one now also correctly shows the alert with a link to iOS Settings, instead of silently doing nothing.

Settings navigation fix

A broken URL caused navigation issues from the Settings screen on some devices — that's resolved.

Version 26.1

See what changed after every sync

A new "What Changed" section appears in the main view whenever a background sync finds something new or removes a date that disappeared from your contacts. You can enable or disable any newly added dates right from the sheet, and changes stack up across multiple background syncs so you never miss anything between app opens. You can also browse the full sync history from Settings and tap any entry that had changes to see the details.

Get notified when dates disappear

A new "Removal Notifications" toggle in Settings → Sync lets you receive a notification when a sync removes dates — for example when someone deleted a custom date from their contact card. The notification links straight to the What Changed view.

Choose your appearance

A new appearance picker in Settings → Display lets you lock the app to Light or Dark mode, or follow the system setting (the default). The choice applies immediately to the whole app, including all sheets.

Smarter label handling

The app now handles a wider range of contact date label formats correctly — including empty labels, numeric-only labels, and labels that only contain punctuation. And if a contact has multiple dates sharing the same label, you can now opt in to have calendar event titles include the date to tell them apart (Settings → Calendar Format).

Reliability fixes

The "View Changes" badge no longer appears incorrectly on first launch after updating from an older version. Browsing the sync history from Settings no longer clears the unviewed badge. If a date that appeared in an old sync no longer exists in your library, the sheet now tells you how many were affected rather than silently dropping them.

Version 26.0

How it works

Grant Contacts access and KeepDates scans your address book for date fields. It creates a dedicated calendar with a recurring event for each date, and keeps it in sync as your contacts change — renaming events when contacts are renamed, removing events when contacts are deleted. Everything runs locally; there's no account, no backend, and nothing leaves your device.

Upcoming dates

The main list shows all your upcoming dates with a "Today / Tomorrow / In N days" countdown. Birthdays appear inline for reference — they're shown but never added to the calendar, since iOS already handles those.

Review and control

The Review sheet shows every detected date grouped by contact. Toggle sync on or off per date, restore dates you've removed, and bulk-enable or disable entire label categories (like "Anniversary" or "Other") in one tap.

Reminders without Calendar

Don't want to grant Calendar access? Turn on "Upcoming Date Reminders" instead. You'll get a notification one day before each date at 9 AM — no calendar events created.

Widgets

Small, medium, and lock screen widgets show your upcoming dates on the home screen. The medium shows the next two dates; the small shows the next one. Tapping a widget entry opens the date detail directly.

Premium — one-time purchase

The premium upgrade unlocks: - Multiple reminders per date with custom timing (days before + hour) - Expanded widgets: medium up to 5 dates, large widget up to 10 - Pinned contacts — their dates always appear at the top of the list and widget - Look-ahead window control (7 days to 1 year; free tier is capped at 30 days) - Per-label-category sync settings and reminder defaults, including pattern rules - Per-contact reminder overrides - Advanced label filtering with pattern rules (hide by contains, starts with, etc.) - Custom calendar event title format using your own template - Years label in date rows, notifications, and widgets ("Anniversary · 6 yrs")