A website rarely looks cheap because of the design. It looks cheap because of what it does in the two seconds after you touch it.
The things customers register as cheap are almost all state and timing problems:
- a button with no loading state, so people tap it twice
- a form that wipes every field when one of them fails validation
- a delivery cost or total that changes between the cart and the card page
- images that arrive at different sizes and shift the page under your thumb
- error text that only says something went wrong
- a search box that returns nothing for a product that exists under a different spelling
- a confirmation message that lands an hour after the payment, or never
None of that is a taste decision. Each one decides who absorbs the failure: the browser, the backend, or the customer. When that call goes unmade, the customer absorbs it, and that feeling is the thing they call cheap.
It is also why a redesign often changes less than you expected. The new layout sits on top of the same empty states, the same silent timeouts, the same unlabelled errors.
If you want an honest read on your own site, stop checking it on a fast laptop. Open it on a weak mobile connection and try to fail on purpose: wrong card, wrong postcode, double tap, back button mid-payment. The gaps show up in about a minute.
We think most teams have a part of their checkout they have not deliberately tried to break.