Mornio is deliberately one flow rather than a collection of features. Here is that flow, in order, including what happens when each part fails.

Layer 1: an alarm that definitely rings

Mornio schedules alarms through AlarmKit, the framework Apple introduced in iOS 26 that lets third-party apps create real system alarms. In practice that means the alarm sounds through Silent mode, through Focus modes, and on a locked screen, with a full-screen alert.

This is why Mornio requires iOS 26.1 and has no fallback for older versions. We chose not to ship a notification-based path, because that is exactly the version a Focus mode can silence. The cost of that decision is that Mornio simply cannot run on older iPhones.

The first time you set an alarm, iOS asks your permission to schedule alarms. If you decline, nothing can be scheduled, which is the most common reason a new install appears not to work.

Layer 2: the Wake Check

The alarm keeps going until you scan a specific QR code or barcode. Not any code, that code, the one you registered when you set the alarm up. Scanning a different barcode does nothing, so keeping a decoy by the bed does not work.

What you register is up to you: a printed QR code taped to a bathroom mirror, or an ordinary product barcode on something you already own, like a kettle or a jar in a kitchen cupboard. Where you put it is the part that matters most, and we cover that in what to use as your scan item.

You can register up to two backup items in addition to the primary, so three scan codes in total. That cap is deliberate: without it, people register everything within reach of the bed and quietly defeat the point.

Layer 3: the stay-awake check

This is the part that distinguishes Mornio. After you pass the Wake Check, Mornio waits, then asks you to confirm you are still up.

You choose the delay when you create the alarm: 2, 3, 5 or 10 minutes, or no second check if you do not want one. Three minutes is the default. Shorter catches the sit-on-the-edge-of-the-bed relapse; longer catches the case where you move around first and then go back.

Layer 4: automatic restart, and the backup alarm

If you do not respond to the stay-awake check, protection restarts. The alarm comes back and you have to pass the Wake Check again. There is no penalty and nothing is charged; the consequence is simply more alarm.

Separately, Mornio schedules a backup alarm four minutes after the primary. Once you have passed the Wake Check on a one-time alarm, the backup is cancelled, so it does not become another thing to dismiss. For repeating alarms the backup stays scheduled, because cancelling it would remove all future occurrences.

The emergency exit

If your code is genuinely unreachable, because you are away from home, it has been thrown out, or the camera will not work, emergency dismissal always lets you turn the alarm off. Being locked out of your own phone at 6 a.m. would be worse than oversleeping.

Mornio records that the emergency exit was used. It is never counted as a successful morning, and it appears in your history as what it was. An honest record is more useful than a flattering one.

What Mornio stores

Everything stays on your iPhone in the app's private storage. There is no Mornio account and no Mornio server for your alarms to sync to.

The code you register is worth explaining specifically. Mornio does not save a photo of your QR code or barcode, and it does not save the readable value. It saves a salted one-way hash plus a label you choose, like “bathroom mirror”. That is enough to recognise the right code when you scan it, and not enough to reconstruct what the code was. The Privacy Policy has the full detail.

What Mornio checks before your alarm

Mornio warns you about conditions that would defeat any alarm, most usefully a battery unlikely to last until your alarm time. A dead phone is the most common cause of a missed alarm and no feature compensates for it. These warnings are dismissible, so a low battery you have already dealt with does not keep nagging.

Status: “Alarm ready” versus “Protected”

Mornio shows two different states, and the distinction is deliberate. On the free tier you get “Alarm ready”, meaning the alarm and Wake Check are set. “Protected” appears only when the full stack is active, including the stay-awake check and backup alarm, which needs Pro or an unused Protected Morning. We do not show “Protected” when you are not.