Crime: vague error ("Error 0x80004005"). User has no idea if it's the email, the password, or the server. Fix: say what happened and what to do: "That password doesn't match. Try again or reset it." Planning question: what happens when login fails?
Crime: one field is wrong and the form erases everything, then says "Invalid input." Fix: keep what they typed, highlight the bad field, explain the rule next to it. Planning question: what happens when form validation fails?
Crime: no feedback. It actually saves, but nothing on screen changes, so users click 5 times or assume it failed. Fix: a "Changes saved" message, button loading state, or toast. Every action needs visible feedback.
📁 Vacation 2025 (412 photos)
📁 Grandma's 90th (88 photos)
📁 Grandma's 90th (88 photos)
Crime: destructive action styled like every other button, right next to Save, with no confirmation and no undo. Fix: make it look dangerous (red, separated), confirm with specifics ("Delete 500 photos? This can't be undone"), or offer Undo. Planning question: which actions can't be undone?
Order total: $84.20
Shipping is non-refundable. Orders ship in 6–8 weeks. Subscription renews monthly at $49.99 unless cancelled.
Crime: low contrast. Important info (the auto-renew!) and the main button are almost invisible. Fix: readable contrast (WCAG AA), important terms in normal text, a clearly primary button.
Which one publishes your post?
Crime: "mystery meat" navigation. Icons with no labels or tooltips, so users have to guess (and one of them deletes). Fix: text labels, or at least tooltips/aria-labels; familiar icons only. Planning question: what navigation and actions exist on each page?
Your playlists
Crime: a blank empty state. New users see nothing and don't know what to do (is it broken? loading?). Fix: "No playlists yet" + a Create playlist button. An empty screen is an invitation to act. Planning question: what happens on a user's first visit?
Cancel your subscription?
You'll lose access at the end of the billing period.
Crime: ambiguous buttons. Does "Cancel" cancel the subscription or cancel the dialog? Fix: name buttons by what they do: "Keep subscription" / "Cancel subscription".
🎉 Upgrade to Pro and get 3 months free! Tap here to learn more.
Crime: tiny click target. The close button is about 9px, so on a phone you hit the ad instead. Fix: touch targets at least 44×44px. (Bonus: when it's done on purpose, that's a "dark pattern.")
Crime: rejects a perfectly normal phone number and doesn't say what format it wants. Fix: accept common formats (strip the punctuation in code), show an example placeholder, explain the rule. Planning question: what if the user enters invalid data?
Crime: no loading state. Nothing happens for 3 seconds, so users click again and again (and send 5 searches). Fix: a spinner or skeleton, disable the button while loading, "Searching…".
Try to land on exactly 1998.
Crime: wrong control. A slider is great for "roughly how much" but terrible for an exact value out of 127 choices. Fix: a number input or date picker. Choose controls that fit the data you're collecting.
Crime: disabled button with no explanation. Users don't know which field is missing (ZIP). Fix: let them click Next and point at the missing field ("Enter a ZIP code"), or show what's required up front.
hey are we still on for 6?
Turn Wi-Fi off, then send a message.
Crime: offline failure is silent. The message just vanishes; the user thinks it was sent. Fix: keep it in the log marked "Not sent · Tap to retry." Planning question: what happens if the internet disconnects?
Grandma's Banana Bread
Preheat the oven to 350°F. Mash three ripe bananas in a large bowl, then stir in the melted butter…
Wait! Join 2 million home cooks 🍌
No thanks, I hate delicious food
Crime: interrupts the task the moment you start it, and guilt-trips you ("confirmshaming"). Fix: don't block the main task; offer the newsletter after the recipe, with a neutral "No thanks." Planning question: what are the user's goals? (Reading the recipe, not your newsletter.)
Turn off email notifications:
Crime: no hierarchy and developer jargon. 12 equal-weight options, internal names, and nothing called "email notifications." Fix: group by what users care about (Notifications · Privacy · Display), use plain language, put the common settings first. Name things the way users think about them.