# Cake Day: Birthday Countdown — Anniversary, Wedding & Widget

> Anniversary, Wedding & Widget (iPhone/iPad app by Lukas Schulze.)

- Source: https://appshunter.io/ios/app/cake-day-birthday-countdown/id6759642163 (this page in markdown: same URL + `.md`)
- Developer: [Lukas Schulze](https://appshunter.io/developer/1388528121)
- Category: Lifestyle, Utilities
- Price: Free with in-app purchases
- Age rating: 4+
- Requires: iOS 15.0 · 49 MB
- Languages: American English
- Released: 2026-03-12
- Data updated: 2026-08-23
- User reviews in markdown: https://appshunter.io/ios/app/cake-day-birthday-countdown/id6759642163/reviews.md

## What is Cake Day?

Never forget a birthday or anniversary again.

Cake Day syncs with your phone contacts to find birthdays and anniversaries, then sends you smart reminders so you're always prepared. No account needed -- your data stays on your phone.

WHAT MAKES CAKE DAY DIFFERENT

Unlike other birthday reminder apps, Cake Day handles the real-world complexity of dates that matter:

- Shared anniversaries let you track events involving multiple people -- wedding anniversaries, friendship milestones, or any date that belongs to a group.
- Discontinued events for when life changes. Mark an anniversary as discontinued without losing the history.
- Direct messaging with one tap. Send a WhatsApp or Signal message right from the reminder.
- No contact limits. Ever. Free means free.
- Privacy first. No account, no cloud, no tracking. All your data stays on your device. Even greeting cards encode personal data in the link, so nothing is stored on our servers.

FEATURES

Dashboard
A beautiful timeline of upcoming birthdays and anniversaries with countdown badges. See who's celebrating today, this week, and beyond.

Smart Reminders
Configurable reminder presets -- get notified days, weeks, or hours before the big day. Create custom presets for different occasions.

Shared Anniversaries
Track wedding anniversaries, friendship milestones, band anniversaries, and more. Add multiple people to a single event.

Calendar View
Browse all your events month by month. See the full picture at a glance.

Home Screen Widgets
Three widget styles keep important dates visible: today's events, this week's events, and the next upcoming birthday.

Statistics
Discover patterns in your celebrations -- busiest months, milestone birthdays, and more.

Contact Groups
Organize contacts into groups like Family, Friends, or Colleagues for easier management.

Quick Actions
Send birthday wishes via WhatsApp, Signal, or text message directly from the app.

Backup & Restore
Export and import your data. Your reminders are always safe.

FREE, PRO & ULTRA

Cake Day is free to use with no contact limits and full reminder functionality.

Pro (one-time purchase): Unlocks widgets, calendar, statistics, custom presets, custom groups, up to 10 shared events, and more.

Ultra (subscription): Everything in Pro plus unlimited shared events, custom icons & colors, greeting cards, and personal messages.

Download Cake Day today and never miss another cake day, birthday, or anniversary.

Terms of Use (EULA): https://cakeday.miniapps.ch/terms-and-conditions
Privacy Policy: https://cakeday.miniapps.ch/privacy-policy

## Pricing and in-app purchases

Base price: Free.

**Subscriptions**

| Subscription | Price | Period |
| --- | --- | --- |
| Ultra Monthly | $0.99 | per month |
| Ultra Annual | $3.99 | per year |

**One-time purchases**

| Purchase | Price | Type |
| --- | --- | --- |
| Pro | $8.99 | one-time |



## Version history (last 5 releases)

### 1.13.0 — 2026-08-16

- A grouped reminder whose events are all happening today is now titled "N Events Today" instead of the generic "N Upcoming Events".
- Bug fixes and improvements.

### 1.12.0 — 2026-07-17

- Bug fixes and improvements.

### 1.11.0 — 2026-06-29

- Fix: contacts using the default reminder preset now actually get notifications. The detail screen showed the default preset (e.g. "on the day itself") for any event without an explicitly assigned preset, but the notification scheduler skipped every event whose preset was unset, so those reminders silently never fired. The scheduler now applies the same default-preset fallback the UI does.
- Notifications are now refreshed when the app returns to the foreground (at most once a day), so the upcoming-reminder window stays current instead of only updating on a full app restart.
- Fix: a day-of reminder for an event happening today is no longer listed as scheduled when the 6 AM fire time has already passed. Such a reminder can never be delivered, so it is now skipped entirely rather than recorded as scheduled and counting against the per-device notification limit.
- Bug fixes and improvements.

### 1.10.0 — 2026-06-03

- Bug fixes and improvements.
- Fix: AI-generated messages no longer come back empty or peppered with placeholder boxes. The `.sanitized` helper introduced for the UTF-16 hardening had a faulty regex: the high-surrogate alternation used the whole surrogate range `[\uD800-\uDFFF]` instead of just `[\uD800-\uDBFF]`, so when an emoji landed at end-of-string (common for a greeting like a cake plus party-popper) the second code unit looked "unfollowed" and got stripped, leaving the high half as an unpaired surrogate that Flutter renders as the missing-glyph diamond. The high-surrogate class is now `[\uD800-\uDBFF]` so valid pairs survive. The latent bug has been around since 1.6.15; the 1.9.0 change that sanitized Gemini output made it visible.
- Fix: AI message generator now respects the "from us" setting on the first generation after a cold start. The screen was reading `ref.read(aiFromUsProvider).value` synchronously; the provider is async (backed by a DB read), so when the user tapped Generate before that future resolved, `.value` was `null` and silently fell back to `false` ("from me"). It now awaits `aiFromUsProvider.future`.

### 1.9.0 — 2026-06-01

- Fix: more places in the app now strip the unpaired UTF-16 surrogate that crashes Flutter's text engine when a phone-book contact, share-import file, AI message, or custom name carries one. Crashlytics was seeing 20 fatals in 7 days from "Invalid argument(s): string is not well-formed UTF-16" inside `_RenderListTile`. The 1.6.15 + 1.6.19 fixes covered contact names, group names, custom labels, and notes; this round extends sanitization to: phone numbers (`Contact.sanitizedPhoneNumbers`, used in `allAnniversariesProvider` and `background_service`), custom phone labels (in the quick-action phone picker), custom preset names (`BuiltInPresets.localizedName` fallback), custom group names (`BuiltInGroups.localizedName` fallback), the entire share-file payload (display names, first/last names, phones, custom labels, notes, members — sanitized once at decode in `AnniversarySharingService.importFromFile`), AI-generated messages (the Gemini response is cleaned before being split into the three drafts), and sync-review item names (`contactName` / `memberDisplayName` in `SyncReviewItemModel` plus the orphaned-items confirmation dialog).
- Diagnostics: every navigation now writes the current location to a Crashlytics custom key `route`, so future text-layout crashes (where every stack frame is a Flutter PLATFORM frame) can be attributed to a specific screen without guessing.

## More apps by Lukas Schulze

- [Mein Adliswil](https://appshunter.io/ios/app/mein-adliswil/id6461536593)
- [My Wealth Tracker](https://appshunter.io/ios/app/my-wealth-tracker/id6758962773)

All apps by Lukas Schulze: https://appshunter.io/developer/1388528121

---

*Data collected daily from the US App Store and indexed by [AppsHunter](https://appshunter.io/). User reviews are verbatim App Store reviews. Ratings, prices and chart positions refresh continuously; this snapshot is from 2026-08-23.*
