Playing now · Puzzle 04

The Crate permission prompt

You picked a side in the reel. Here's why the patient option wins, and what iOS quietly does to you if you get the moment wrong.

Read the teardown → See all puzzles →
UX teardown · 04

You only get to ask once.

Crate asks for notification permission before the shop has finished loading. On iOS that prompt fires exactly once per install. Tap "Don't Allow" and the app can never show it again. Getting it back means the user going into Settings, finding Crate in a list of ninety apps, and turning it on themselves. Crate spent its one ask on a stranger who had not yet seen a single product.

Before
Crate
Cart
"Crate" Would Like to Send You Notifications
Notifications may include alerts, sounds and badges.
Don't Allow
Allow
One shot, spent on a stranger.
After
Crate
Order
Order placed
Arrives Tue 9 Sep to Fri 12 Sep
Want a ping when it ships?
We'll message you when your mug is dispatched, and again when it's out for delivery.
Yes, notify me
Not now
The system prompt has not fired yet.

Nobody chose the moment. The tutorial did.

Requesting permission is one call. The obvious place to put it is where the app starts, because that is where you are already writing setup code, and it is where every tutorial puts it. The ticket says "ask for notification permission" and says nothing about when.

It survives design review because there is nothing to review. The control is Apple's, the copy is Apple's, and the product wrote neither. No screen in the app looks wrong. The only decision anyone made was a line number, and a line number does not show up in a design critique.

Why it hurts

The screen is perfect. The moment is not.

Same four steps as every interaction, run against the prompt as it ships:

1
Filter: passes, and that is the trap. It is the system alert, pixel for pixel, in a shape every iPhone owner has seen a thousand times. Nobody questions a native control.
2
Seek: fails. The user came to look at things people made. They are being asked about an ongoing relationship with a shop whose products have not finished loading behind the dialog.
3
Act: fails fast, and rationally. With nothing to weigh, "Don't Allow" is the correct tap. Dismissing costs nothing and deciding costs attention. The user is not being careless. They are being sensible.
4
Store: fails. What sticks from the first two seconds is not the shop. It is that this app wanted something before it gave anything.

Three of four fail on a control the product did not design, using copy it did not write. The entire defect is when it fired.

The fix

Let the order do the asking.

Not new copy. The same prompt, moved to the first moment the user has a reason to want it. Somebody who just spent thirty-four dollars on a mug has an obvious interest in knowing when it ships.

01
Ask in your own UI first. That is the whole mechanic.
Put your own sheet in front of the system one, and only fire Apple's prompt when somebody has already said yes to yours. A no in your sheet costs you nothing, because you can ask again next week. A no in Apple's costs you the channel for the life of the install. It has a name, pre-permission priming, and it is the single highest-leverage thing in this teardown.
02
Treat it as a budget of one.
iOS shows that dialog once per install. After the user answers, further requests return the stored answer and display nothing at all. There is no second attempt to design, no better wording to try later. Everything you would normally learn by iterating, you have to get right the first time.
03
Name the notification, not the permission.
"Want a ping when it ships?" is not a request for access. It is an offer of a service the user already wanted, and permission is the incidental cost of accepting it. Say which messages, and say what you will not send. Vague value earns a vague no.
04
This was never about notifications.
Camera, microphone, location, contacts, calendar, tracking, the app store review prompt. Every one of them is a one-shot ask with the same shape. Fire it on launch and you have spent it on somebody with no reason yet to say yes.
The rule worth stealing
Earn the ask, then make it.

A permission prompt is not a form field you can re-ask. It is one non-renewable request, and it is worth exactly as much as the reason you have given for it. Give the reason first. Then ask.

All the puzzles

04 Live
Crate permission prompt
Permissions · timing
03 Live
Tally birthday picker
Forms · defaults
02 Live
Wander free trial
Trials & churn · perceived risk
01 Live
Stride welcome screen
Competing CTAs · cognitive load
UX Internship
Like thinking this way?

Spotting the invisible cost of a "harmless" screen is the muscle real UX work is built on. That's exactly what you practise on real projects in the GWEN UX Internship.

See how GWEN works →