WarmWake (온음)
An alarm app that wakes you with a voice message you recorded the night before, instead of a loud alarm tone. I ship and operate it as one Flutter app on the App Store and Google Play.
At a glance
| Item | Details |
|---|---|
| Releases | 1.0.0 (January 2026) · latest 2.1.2 (2026-09-10) |
| Channels | App Store · Google Play |
| Stack | Flutter · Riverpod · Freezed · Hive · Firebase · Sentry · the alarm engine split out into a separate Flutter plugin (warm_alarm) |
| Monetization | Waking up to a voice message and alarm reliability are free · a lifetime WarmWake Plus pass (one-time in-app purchase) · no ads |
| Users | 46 active users and 38 new users in Google Analytics (checked 2026-09-28) |
Project story
How did the project start?
Plenty of alarm apps offer a wide range of alarm sounds, but I felt none of them offered the sound people actually want. The well-known ones sell alarms voiced by famous creators from Spoon or YouTube, yet there was no alarm app that wakes you with the voice of someone you care about. I also wanted to tell myself, before falling asleep, what I had to do the moment I woke up the next day.
So I built an app that plays a voice message recorded the night before as the next morning's alarm. Yesterday's you wakes up today's you.
What was the biggest problem, and how did you solve it?
The biggest problem was waking the user with their recorded voice even when the app has been fully terminated. iOS does not let a terminated app play sound on its own, so from 1.1.0 onward I stacked local notifications as fallbacks, one layer at a time. When the app could not make a sound, a notification rang instead; that notification repeated every 30 seconds for up to five minutes; and if every scheduled notification failed, one more immediate notification went out. In 2.0.0 I added a wake check that asks whether the user really got up after dismissing the alarm and rings again if there is no answer.
Notifications still had limits I could not get past. A local notification does not ring while the silent switch is on, and the recording could not play until the user tapped the notification and the app opened.
iOS 26's AlarmKit could have been the answer, but developer forum reports said custom alarm sounds could not exceed 30 seconds and would not loop. Instead of taking those reports at face value, I scheduled a 44.4-second sound through AlarmKit on a real device running iOS 26.6.1 and measured it. The sound played to the end, looped back to the start, and kept ringing after I swiped the app out of the app switcher. The reports had been written against a beta from a year earlier.
AlarmKit plays only sounds from a location the system can read, not arbitrary files inside the app.
So I changed the alarm plugin to prepare audio that combines the recording and the selected tone in Library/Sounds ahead of time, and to clean up files no alarm uses any more whenever alarm state changes.
As a result, from 2.1.2 on iOS 26 or later with permission granted, the whole recording plays with the alarm tone even while the app is terminated and the phone is locked.
How many users are there now?
Google Analytics shows 46 active users and 38 new users (checked 2026-09-28).