The short answer
Alarms fail for four broad reasons: the sound cannot be heard (volume or Bluetooth routing), the alarm was never scheduled correctly (wrong AM/PM or an unsaved edit), the system suppressed it (Focus or battery optimisation), or the app scheduling it was killed by the operating system.
Work out which kind of failure you have
The fix depends entirely on the category, and they are easy to tell apart if you check the morning after.
- The alarm shows as triggered but you heard nothing → an audio problem. Check ringer volume, Bluetooth routing, and whether the alarm sound is set to None or an unavailable song.
- The alarm never appears as triggered → a scheduling problem. Check AM/PM, the repeat days, and whether the alarm was actually saved.
- It works some days and not others → a suppression problem. Check Focus modes, schedules, and battery optimisation on Android.
- It works when the app is open and not when it is closed → the app is scheduling alarms in its own process, which the system is killing.
On Android specifically
Android adds one large failure mode that iPhone does not: aggressive battery optimisation. Manufacturers layer their own process management on top of Android, and several are notorious for killing background work regardless of what the app asks for.
- 1Open Settings → Apps → your alarm app → Battery, and set it to Unrestricted.
- 2On Samsung, also check Settings → Battery and device care → Background usage limits, and make sure the app is not in Sleeping apps or Deep sleeping apps.
- 3On Xiaomi, Redmi and POCO, open Settings → Apps → Manage apps → your app → Autostart and enable it, then set Battery saver to No restrictions.
- 4Grant the Alarms & reminders permission if prompted. On recent Android versions, exact alarms require it explicitly.
The design question underneath
Most of the list above exists because an app asked the operating system for a favour and the system declined. An alarm should not be a favour. It should be a registered, system-level commitment that survives the app being closed, the phone restarting, and the battery saver deciding the app is idle.
That is how Roosta schedules alarms, and it is why the app being swiped away does not cancel one. It is not a claim about caring more. It is a difference in where the schedule lives.
Category 1: you could not hear it
This is the largest category by a wide margin, and the most frustrating, because the alarm worked perfectly. It fired at the right time and made a sound. The sound just did not reach you.
Ringer volume is the usual culprit on iPhone. It is a different control from media volume, the side buttons normally adjust media, and there is no obvious indication that the two have drifted apart. On Android, alarm volume is a third slider again, separate from both ring and media.
Bluetooth routing is the second. Earbuds left in a case on the nightstand still count as a connected audio device, and the alarm will happily play into them at a volume nobody can hear.
Category 2: it was never scheduled the way you thought
The second category is the one people find hardest to accept about themselves, and it is extremely common.
- The alarm was saved for PM instead of AM. At a glance, 6:40 PM and 6:40 AM look nearly identical, and this is the single most common false alarm failure on both platforms.
- The edit was never saved. Changing the time and then leaving the screen without confirming leaves the original alarm in place.
- The alarm was set for weekdays and the day in question was a Saturday, or the repeat pattern was cleared at some point.
- The alarm was toggled off, often accidentally, while dismissing a different one in the list.
- You are looking at the Alarm tab while relying on a Sleep schedule, or the reverse. These are two separate systems inside one Clock app.
None of these is a fault in the phone, and all of them are worth ruling out before spending time on settings. Open the Clock app and read the alarm carefully rather than glancing at it.
Category 3: the system suppressed it
Alarms are designed to sound through silent mode and Do Not Disturb on both platforms, so this category is smaller than people assume. It is not empty, though.
- On Android, Do Not Disturb has an explicit alarm exception that can be switched off, and any custom Do Not Disturb schedule carries its own exceptions separately.
- On iPhone, a heavily customised Focus mode has more moving parts than the standard ones and is worth testing with Focus disabled entirely.
- On iPhone, Attention Aware Features lowers alert volume when the front camera believes you are looking at the screen, and it can misjudge that.
- Android battery optimisation is the largest single cause on that platform, and it suppresses the app rather than the sound.
Category 4: the app scheduling it was killed
This category only applies to third-party alarm apps, and it is the one that produces the worst failures, because it is invisible until it happens and it tends to happen after the app has been working fine for weeks.
An app that keeps the alarm schedule in its own process, commonly a timer in JavaScript or a background worker, depends on that process still being alive at the moment the alarm is due. Both iOS and Android are free to suspend or terminate it, and both do so routinely: when memory is tight, when the app has been idle for days, or when a manufacturer battery saver decides it is not needed.
The tell is intermittency. An alarm that works every weekday and fails on Monday after a quiet weekend is almost never a volume problem. It is an app that was put to sleep while you were not using it.
What to do about it
Work through the categories in order, because they are ordered by how often each one is the answer. Volume and routing first, then read the alarm itself, then system settings, then the app.
If the failure is in the fourth category, no amount of settings changes fully solves it. The question to ask about any alarm app is where it puts the schedule. An app that registers the alarm with the operating system keeps working when it is closed, force-quit, updated or idle for a week. An app that holds the schedule itself does not, and cannot.

