In the last two years a look has emerged that a surprising number of new products share. It is not a bad look: competent, slightly weightless, everything in its place. You land on the page, nothing is wrong, and it still looks familiar.
These are the seven things that make it familiar, roughly in the order you meet them: what you see before you scroll, what you read, what happens when you press something, what happens when you step off the path, and what happens the moment it leaves your desk. None of them needs developer tools or source code. Every one is something a person can see, read or press.
1. Everything moves
Before you have read a word: the headline fades up, the cards slide in one after another as you scroll, a soft gradient drifts behind the hero, and a number somewhere counts up from zero to 10,000.
Motion is the cheapest way to make a page feel designed, so it is what gets added when there is nothing else to add. A page that is confident in what it says tends to say it plainly.
There is a real cost underneath the taste question. Scroll-triggered animation means content is deliberately withheld until you arrive at it, so every reader pays a small tax on every section, and it is worst for the returning visitor who already knows what is there. It also tends to ignore the setting that exists for exactly this: people who get motion sickness from parallax can ask their operating system to stop it, and most generated pages never check.
Fix: keep the motion that tells you something changed: a thing arriving, a panel opening, a row being removed. Delete the motion that only decorates. Then turn on Reduce Motion in your own system settings and load the page again; if it is unchanged, it is ignoring a request somebody made for medical reasons.
2. The tab still says the template’s name
Look at the browser tab rather than the page.
Many live, paid-for products still show Vite + React + TS or Create Next App there. A subtler version is a site where every page has the same title, so the tab says the company name whether you are on pricing, on the blog, or on a help article about billing.
This is the cheapest thing on the list to fix. That title is the blue line Google prints in its results, and the sentence somebody reads when deciding whether to click you or the competitor below you. Nine pages sharing one title also tells a search engine those nine pages are interchangeable, so it picks one and ignores the rest. People building fast care a great deal about being found, and this is the most common way of going unseen.
Fix: click through your own site and read the tab on every page. Each one needs a title that describes that page and could not be pasted onto another. While you are there, paste your URL into any link preview (a message to yourself works) and see what comes back. If it is blank, or the template’s name, that is what every link to you has looked like so far.
3. Headings that could be anyone’s
Powerful analytics. Seamless integration. Built for scale.
Each is true of about forty thousand products, so it says nothing about any one of them. They read as headings because they are the right shape and length, and a competitor could paste any of them onto their own page unchanged.
This is the strongest signal on the list, because it survives a redesign. You can make the page beautiful and it will still be describing a genre rather than a product.
Fix: take each heading and ask whether a competitor could use it word for word. If they could, it is not about you yet. Powerful analytics becomes See which customers stopped opening the app: clumsier as writing, much better as copy.
4. The sentences have a rhythm
Read a few paragraphs aloud, or let your eye run down them. Something is metronomic about it, and most people feel it before they can say why.
Things arrive in threes, always: three adjectives, three benefits, three clauses. Sentences come out at roughly one length. Every section closes by restating what it just said in slightly different words. There is a fondness for the shape it is not just a X, it is a Y, and for words that sound like effort: seamless, robust, leverage, unlock, empower.
What is missing is unevenness. Human writing has bad rhythm in it: a four-word sentence landing after a long one, a fragment, a clause that goes on slightly too long because the person was annoyed. Generated prose is smooth throughout, and the smoothness is the tell, for the same reason a perfectly even floor feels like a showroom rather than a room somebody lives in.
This article is not free of it either, and leans heavily on colons.
It is also the hardest one on this list to fix, because it is invisible to whoever produced it. The text reads correctly and no individual sentence is wrong; the problem only shows across a whole page.
Fix: read your homepage out loud. You will hear it immediately. Then cut the third item out of every list of three, delete any sentence that restates the one above it, and let one sentence be very short. Four words is fine.
5. Nothing happens when you press it
Now start clicking. Skip the main call to action, which always works, and click the secondary things: Export, the filter dropdown, the settings gear, the little pencil icon beside a row.
Generated interfaces are full of plausible controls. Ask for a dashboard and you get an Export button, because dashboards have those. Whether anything is wired to it is a separate question, and often nobody asked it out loud.
This is the most expensive item on the list. A visitor who presses a button and gets nothing back (no spinner, no error, no change) does not file a bug report. They conclude the product is broken, and they are not entirely wrong.
Forms fail the same way, at a higher cost. The classic version has a required field that is hidden, disabled, or pushed off the layout: the browser refuses to submit because something invalid exists, tries to focus the offending field to say so, cannot focus what it cannot show, and gives up silently. The visitor fills in everything they can see, presses the button, and watches nothing happen. The same thing happens to every visitor, so a signup form in that state converts at zero while looking completely normal.
Fix: click every control on your main screen once, in order, with the browser console open, and watch for any observable change at all. Then submit your most important form completely empty: a healthy one jumps to a field and complains, a broken one does nothing.
An invalid form control with name='company' is not focusable.
scripts/postshots.cjs.6. Nothing has a second state
Now go off the happy path on purpose. Turn off your wifi and reload. Open the dashboard on a brand new account with nothing in it. Load a page that does not exist.
What you usually find is that the good path is beautifully built and there is nothing behind it. No empty state, no error state, no loading state, no thought about what a list of four hundred rows looks like when it was designed with four.
The worst version of this is an empty state used as an error state. The request fails, the list comes back with nothing in it, and the page cheerfully announces No projects yet. Create your first one! To a returning user with forty projects, that message says their data is gone.
Fix: for your two most important screens, write down what should happen when it is empty, when it is loading, when the request fails, and when there is far too much data. Four sentences per screen. Most of them will not be built yet.
No projects yet
Create your first project to get started.
New project| GET | /api/me | 200 OK | 84 ms |
| GET | /api/projects | 500 Internal Server Error | 1.4 s |
7. It was never opened on a phone, on real data
Open the site on your actual phone, not the browser’s phone simulator, while you are out, on mobile data, with your wifi off.
Two separate things go wrong there and both are invisible at a desk. The first is layout: a table running off the side, a hero image eating the entire first screen, a sticky bar sitting on top of the button, a menu that opens over itself. It was built at 1440 pixels wide on a large monitor, it looked finished there, and nobody scrolled it on a train.
The second is weight, and it is the one people never think to check. A 4MB hero image and an uncompressed background video are instant on the machine that made them, sitting a metre from the router. On a phone on a train that is ten or fifteen seconds of white screen, which is several times longer than anybody waits, so a page that works is never seen.
Fix: load it on your phone, outside, on cellular. Count how long until you can read something. Then open your browser’s network panel on the desktop and sort by size. The top two or three items are almost always one enormous image somebody exported once and never looked at again.
| Order | Customer | Placed | Status | Total |
|---|---|---|---|---|
| #4821 | Dana Whitfield | 12 Aug | Shipped | £248.00 |
| #4820 | Marcus Ellery | 12 Aug | Refunded | £96.50 |
| #4819 | Priya Raman | 11 Aug | Processing | £1,410.00 |
None of this is about AI
Go back through those seven. Not one was invented in the last two years, and not one is a thing a model does badly.
Decorative motion, interchangeable headings, a button wired to nothing, a product with no empty state, a site nobody opened on a phone, a key in the front end: all of it existed in 2015, made entirely by humans, usually late, usually against a deadline. They are the marks of something finished quickly and never revisited.
What changed is the ratio. Building got ten times faster and checking got no faster, so the gap between made and examined is wider than it has ever been, and it is widest exactly where these tells live: the second screen, the failure case, the phone, the thing under the hood.
So the fix for all seven is the same, and it is unglamorous: use your own product like a stranger would, deliberately, on a schedule. Open it cold. Press the thing you never press. Turn the wifi off. Read your own headings and ask whether a competitor could have written them.
The difficulty is that nobody can be surprised by their own work. You know the button works, so you never press it. The person who presses it is a stranger, and when nothing happens they do not file a bug. They leave, and the failure goes unreported.