DesktopCountdowns app icon

DesktopCountdowns

Your Apple Reminders as countdowns right on your desktop, so you always see how many days are left.

macOS iOS iPadOS visionOS tvOS watchOS Widgets

Reminders, front and center

DesktopCountdowns rewrites my original AppKit DesktopCountdowns mac app in SwiftUI. It reads what you already keep in Apple Reminders (and optionally your calendar and birthdays), then pins each item to your desktop as a card that counts down the days.

โณ

Live countdowns

Each reminder with a due date shows the days remaining. You can also show hours when it's less than a day away.

๐ŸŽจ

Color by priority

High, medium, low and no priority each get their own color, and every color is adjustable.

High Mid Low Default
๐ŸŒ—

Urgency at a glance

Cards darken and fade the further away they are, so the things due soon stand out.

๐Ÿ“…

Calendar events

Upcoming events from your primary calendar can be included. Their start time becomes the due date, and alarms and locations carry over.

๐ŸŽ‚

Birthdays

Upcoming birthdays within a range you choose, optionally grouped when several fall on the same day.

๐Ÿงฉ

Widgets everywhere

Desktop and home screen widgets for mac, iPhone and iPad, in light, dark and dimmed modes.

๐Ÿ–ผ๏ธ

Attachment images

Can show the photos attached to a reminder. This needs disk access to the Reminders data.

โš™๏ธ

Your layout

Set the card opacity and choose a horizontal or vertical layout. On the mac you can also show a dock icon and a menu bar item, and launch at login.

One app, every Apple screen

As of February 2025, one SwiftUI multiplatform codebase covers every Apple platform available. Each platform uses its native app lifecycle underneath.

๐Ÿ–ฅ๏ธ
macOSvia AppKit
๐Ÿ“ฑ
iPhone & iPadvia UIKit
๐Ÿฅฝ
visionOSvia UIKit
๐Ÿ“บ
tvOSvia UIKit
โŒš๏ธ
watchOSvia WatchKit

The interesting part: the setup

What the app does matters less than how it's built. The multiplatform setup is the real point of this project, and I hope it helps someone working on the same thing. ๐Ÿ™‚

Only the macOS app has a polished UI so far, but every app runs on the same code, and so does the widget.

99%shared across 6 platforms
  • Assets, Info.plist and all code are shared by every platform.
  • The only exception is 3 @AppDelegateAdaptor classes, one per SDK, which hook into each platform's app lifecycle.
  • SwiftUI Previews work for all 6 platforms.
  • The widget runs on mac, iPhone and iPad.
AppDelegate-AppKit.swift ยท macOS
AppDelegate-UIKit-ExcludingWatchOS.swift ยท iOS, iPadOS, visionOS, tvOS
AppDelegate-WatchKit.swift ยท watchOS

3 Xcode targets, 100% shared files

Multi-Platform appeverything except watch
watchOS appApple Watch
WidgetWidgetKit extension

I expect Apple to fold watchOS into the multiplatform template, since its source is already 99% the same and fully compatible. Keeping two app targets has one downside: they may not share build caches behind the scenes.

DesktopCountdowns is open source, licensed under the GNU General Public License v3.0 with an additional permission for app store distribution. Contributions are welcome, see CONTRIBUTING.md.