KeepDates - Contact Dates
生活
仅适用于 iPhone
免费 · App 内购买
Your iPhone remembers birthdays.
But important dates like anniversaries are easy to miss.
KeepDates fixes that automatically.
# What it does
KeepDates finds dates stored in your contacts — anniversaries, custom events, and more — and turns them into reminders you’ll actually see.
It works quietly in the background and keeps everything up to date as your contacts change.
# Why it’s useful
* Never forget anniversaries, milestones, or important personal dates
* See all upcoming dates in one simple list
* Get reminders before they happen
* Works automatically — no manual setup
# How it works
* Scans your contacts for date fields
* Lets you review and choose what to include
* Syncs selected dates into a dedicated calendar
* Keeps everything updated in the background
# Key Features
* Automatic contact date detection
* Calendar sync with yearly recurring events
* Optional reminders (day before by default)
* Widgets for quick access to upcoming dates
* Background sync — always up to date
* Works completely offline
# Widgets
* Small widget — next upcoming date
* Medium widget — multiple upcoming dates
* Lock screen widget — quick glance countdown
# Privacy
KeepDates is built to be simple and private:
* No accounts
* No cloud sync
* No tracking
* All data stays on your device
# Premium (Optional)
Unlock additional control and customization:
* Smart reminders (multiple timings)
* More events in widgets + large widget
* Look-ahead window control
* Pinned contacts
* Advanced filtering and customization
###
KeepDates is designed to feel like a missing system feature — simple, automatic, and out of the way.
更多 Checklist defaults you can set per date type and per contact, plus fixes for notification and widget taps.
Checklist defaults per date type and per contact (Premium):
Previously one global list, now three layers. Give every "Anniversary" its own starting checklist, give a specific person theirs, and keep your global list as the fallback. Adding a checklist to a date fills it from that contact's items first, then the date type's, then the global list, skipping anything already covered. Date-type defaults live in Settings under each category; per-contact defaults live on the contact's screen.
Reminder notifications:
Tapping "Reach Out" on a reminder used to just open KeepDates and leave you on the main screen, most often when the app wasn't already running. It now opens that date and brings up the contact card so you can call or message straight away. Tapping the notification banner itself opens the date too. The same underlying problem affected the notifications for newly found dates, removed dates, and calendar account changes; all of them now open the right screen from any state.
Widget taps with custom labels:
A date whose label contained a slash, question mark, or number sign (like "Anniv 1/2") reported itself as removed when tapped in a widget, even though it was still there. Those taps now work.
26.9 8月7日
Visual improvements for contacts without photos, plus a What's New screen starting this update.
Per-contact colors:
Contacts without a photo now each get their own consistent color for their initials placeholder. The color is derived from the contact, so the same person always gets the same shade. The color also tints the backgrounds in that contact's detail view when no photo is available (the same way a photo's dominant color does) so every contact has a consistent visual identity throughout the app.
Initials in widgets:
Medium and large widgets now show a small colored circle with initials for contacts that don't have a photo, rather than leaving a blank gap in the avatar column.
How It Works screen:
A new screen in Settings explains the basics: KeepDates reads your contacts' date fields, keeps them synced automatically, and turns them into recurring calendar events, widget entries, and reminders. All processed on your device. If you haven't synced yet, a "How does this work?" link appears directly on the main screen.
What's New screen:
Starting with this update, KeepDates shows a "What's New" screen after each version update. You can also browse the full version history in Settings -> Version History, and turn the "show on-launch" off from there if you'd prefer.
26.8 7月29日
A few reliability fixes for widgets, particularly around the Handled and checklist indicators introduced in 26.6.
Two bugs caused Handled checkmarks and checklist progress counters to disappear from widgets. In the first, marking a date as Handled or checking off a checklist item didn't update the widget immediately — the indicator only appeared after you left the app and came back, so it could be missing for your entire current session. In the second, every sync run (including the automatic background sync) was silently overwriting the widget snapshot without the action-tracking data, wiping all indicators shortly after they appeared. Both are now fixed.
Also fixed: later in the day, a date happening today could sometimes sort below one happening tomorrow in your widgets. Today's dates now always appear first, regardless of what time the widget last refreshed.
26.7 7月7日
This update adds quick contact actions, a new single-contact widget, and a set of tools to help you track what you've actually done for the people in your life.
A new "Reach Out" button appears in the top bar of every date detail screen. Tap it and iOS opens the full contact card: call, message, FaceTime, and anything else your phone knows how to do with that person. Your same-day reminder notifications now have a "Reach Out" shortcut too: tap the action in the notification and KeepDates opens straight to the contact card.
Premium users get a new Contact Spotlight widget. Pick one contact and the widget shows their upcoming dates front and centre. A small size widget shows just the next date with their photo as a full-bleed background; medium shows up to three dates; large shows up to eight. Configure the contact by long-pressing the widget and tapping Edit Widget.
Also for premium users: you can now mark an occurrence as Handled. When you've actually reached out (sent the birthday message, made the call) tap the toggle in the "This Occurrence" section of the date detail screen. A green checkmark appears next to that date in the list and in your widgets, and the state resets automatically at the start of next year.
If you want to go further, you can attach a checklist to any date. Add the specific things you want to do (book a table, buy a gift, write a card) and check them off as you go. When everything is done the date is automatically marked as Handled. A progress counter (2/3, for example) shows up in the list and on your widgets until all items are checked. Default checklist items can be set in Settings → Action Tracking so new checklists come pre-filled.
It also fixes an issue where Today's events could show up after Tomorrow's in the widget in certain conditions.
26.6 6月13日
Two new widget features in this update.
A new "Today in KeepDates" widget shows only the contact dates happening today. If nothing is scheduled for today, it stays empty rather than pulling in future dates. It comes in small and lock screen sizes, and is a premium feature.
When multiple contacts share the same upcoming date, the small widget now cycles through all of them automatically every ten minutes, with a position indicator showing how many there are. You can also tap the arrows on the edges of the widget to move through them manually at any point.
Reminder notifications for dates on your own contact card now read in the first person: "Your Anniversary is tomorrow" instead of your own name. A new toggle in Settings ("Show 'You' for your own contact card") extends the same substitution to the date list and widgets when you switch it on.
Also fixed: the What Changed sheet now sorts entries alphabetically by contact name and label. Widget taps now navigate correctly to the date detail screen again.
26.5 6月5日
You can now delete a date or birthday directly from the contact detail screen - swipe left on any date row, confirm, and KeepDates removes it from the contact record and cleans up the calendar event automatically.
Each widget now has its own "Show Today's Events" toggle in widget configuration, so you can show or hide today's dates independently on each one.
If you share only some of your contacts with KeepDates, the app now works fully with whatever you've shared. A soft banner in the date list lets you add more contacts via Settings if you want to expand the view. The contact picker also tells you when a search result is missing because that contact isn't shared.
Contacts with a nickname can now show that nickname everywhere: in the list, widgets, calendar events, and reminder notifications. It updates automatically on the next sync.
A new Diagnostics screen in Settings logs each sync run with full detail: outcome, date counts, any calendar errors, and your device info. You can copy or share the log, which is useful for bug reports.
Calendar events are now checked and corrected on every sync. If an event was previously created starting from a future date instead of the contact's original year, it's automatically fixed and the old series is replaced with one starting from the right date. Contacts with two dates on the same day but different years (like two anniversaries) are now correctly kept as separate events rather than treated as duplicates.
Also in this update: interactive controls in the date and contact detail views take on a colour from the contact's photo; the date type label in medium and large widgets is now softer and less prominent; the lock screen widget avatar renders in monochrome with boosted contrast; past dates no longer appear in the widget when the snapshot is slightly stale; and a background sync without calendar access no longer records as a failure.
26.4 5月14日
Contact photos are now everywhere — in the date list, detail views, and every widget. The small widget can show a full-bleed contact photo with a colour-matched background. Medium and large widgets show a circular photo next to each row. Tap any contact to open a dedicated screen with all their dates, sync controls, and per-contact settings in one place.
Search is here. Start typing in the main list and it filters by contact name or date type instantly.
You can now add a date to any contact in your address book, even one with no existing dates. Set or update birthdays too, right from within the app.
Widgets are now individually configurable — long-press to set contact photos, birthday visibility, and (premium) a per-widget lookahead window. Detail views got a visual refresh with a prominent header and a soft color tint drawn from the contact's photo.
26.3 5月3日
Minor fixes to reminder notification content and widget rendering logic.
Also fixes a crash that occurs when duplicate dates are found.
26.2.1 4月26日
Group upcoming dates by month or contact.
Contact photos now appear inline in reminder notifications.
New label filter rules.
Redesigned first-run setup with a skippable calendar step.
26.2 4月23日
Minor fix: Fixes notifications settings toggle behavior and the settings links
26.1.1 4月14日
Added a "view changes" screen, where you can see what dates were added/removed recently
An option to receive notifications when dates are removed (not only when new ones are found)
An option to override the app's appearance - choose to always have it in light or dark mode (regardless of the system setting)
26.1 4月13日
Checklist defaults you can set per date type and per contact, plus fixes for notification and widget taps.
Checklist defaults per date type and per contact (Premium):
Previously one global list, now three layers. Give every "Anniversary" its own starting checklist, give a specific person theirs, and keep your global list as the fallback. Adding a checklist to a date fills it from that contact's items first, then the date type's, then the global list, skipping anything already covered. Date-type defaults live in Settings under each category; per-contact defaults live on the contact's screen.
Reminder notifications:
Tapping "Reach Out" on a reminder used to just open KeepDates and leave you on the main screen, most often when the app wasn't already running. It now opens that date and brings up the contact card so you can call or message straight away. Tapping the notification banner itself opens the date too. The same underlying problem affected the notifications for newly found dates, removed dates, and calendar account changes; all of them now open the right screen from any state.
Widget taps with custom labels:
A date whose label contained a slash, question mark, or number sign (like "Anniv 1/2") reported itself as removed when tapped in a widget, even though it was still there. Those taps now work.
更多 版本 26.9 8月7日
未收集数据 开发者不会从此 App 中收集任何数据。