A beautiful website can still be a bad website, because beauty gets judged on the one screen where everything works.
Design reviews happen in the happy path. The form is filled in correctly, the payment goes through, the search returns results, the image is exactly the right size. Nobody signs off on the screen where the card is declined, the upload times out, or someone taps Pay a second time because the button gave no sign it had heard them. Those screens still exist. They get invented late, probably by whoever happens to be writing that part of the code, and you meet them as a raw error message or a page that just sits there.
That is where the cost lands. A payment button with no visible submitting state is how someone gets charged twice. A slow response with no feedback is how people refresh and order again. A form that loses what you typed is how a qualified lead quietly leaves. None of that shows up in a design mockup, and all of it shows up in the support inbox.
More polish does not fix this. What we do instead is decide, before anything gets built, what each screen does when the thing it depends on fails or takes too long. That work is unglamorous, and it separates a site that looks finished from a site that behaves well on a bad day.
Most failure states on your own site are ones you have never actually sat down and looked at.