Skip to content
Design

It's obvious when you vibe coded your app, but it doesn't have to be

Everyone can tell when you vibe coded your app. Default shadcn, Lucide icons, Inter, glowing gradient borders. It screams 'I prompted this and shipped the first thing that came out.' It does not have to be that way.

Based on my January 2026 Melbourne builder meetup talk about using AI tools without sacrificing product quality.

The tools are table stakes

I build with shadcn/ui, Tailwind, Motion, React, and Ultracite/Biome. You probably use a similar stack. None of this is an advantage. Every vibe coder is using the same components with the same defaults. The difference between slop and considered is the taste you apply on top.

Great artists steal

Find a product with an irrationally tasteful UI. One that makes you feel something. Then copy it.

Right click and inspect. Rip off elements until your version is identical. Screen record interactions and go frame by frame on the timing. Use AI to un-minify their JS bundle and read their animation logic. This is how you develop taste. You cannot design what you have not studied closely.

The goal is not plagiarism. It is training your eye by reproducing the gold standard, then applying it to your own product.

Simplicity above all else

AI will go rogue. Glowing borders, gradient backgrounds, decorative illustrations, extra copy, badges, tooltips, and seventeen things nobody asked for. Your job is to delete most of it.

Every time you look at a screen, ask what can go without losing meaning. If a paragraph can be a sentence, make it a sentence. If a sentence can be a label, make it a label. If a label can be removed, remove it.

The best interfaces feel inevitable. They do not feel like someone kept adding things until it seemed finished.

Use better icons

Stop using Lucide for everything. Fine for prototyping, but they lack the weight to carry a polished product. I use the Central icon system. The strokes are considered, the proportions tighter.

Users sense icon quality without being able to articulate it. They cannot tell you the icons are wrong, but they feel when something looks generic.

Add delightful animations

Use motion.dev. Go through the animations.dev and devouringdetails.com courses. Animations are one of the fastest ways to make a product feel intentional rather than generated.

Keep them fast. Most transitions land between 0.2 and 0.3 seconds. Prefer ease-out. Animate transforms and opacity. Respect prefers-reduced-motion. The goal is not to impress. It is to feel responsive without getting in the way.

Don't just use Google Fonts

Default Google Fonts are typographic stock photography. Everyone uses them, everyone recognises them, and they signal that nobody made a deliberate choice.

Go to Typewolf, find typefaces that suit your product, track them down. Many great fonts are on GitHub if you know where to look. Typography is one of the highest-leverage design decisions and it is almost always underinvested in by engineering-led teams.

Learn from products with restraint

Study products that feel calm rather than feature-stuffed. The ones I come back to: Zed Editor, OpenAI, Mintlify, Raycast, Linear, Things 3, Family Crypto Wallet, and ElevenLabs.

What they share is restraint. They show only what matters. They do not over-explain. Interactions feel precise. That is what separates designed from generated.

Go the extra mile

The last ten percent is where most people stop. Push harder there.

  • Add a dark mode-aware SVG favicon so your icon adapts to the user's system.
  • Generate dynamic OG images so every page has a proper social preview.
  • Polish hover and active states. Every interactive element should respond.
  • Write proper SEO metadata for every page. Title, description, canonical URL.
  • Add keyboard shortcuts for power users. It signals you thought about how people actually use the product.

None of these are hard alone. Together they separate a weekend project from something that feels cared for.

Death by a thousand tweaks

The real work is not the first version. It is the five hundred small improvements after. Sand it, feel the grain, get a splinter, sand again. That is the process. No shortcut replaces the willingness to keep refining.

AI gives you a fast start. What you do after determines whether you shipped something worth using or just more slop.

Keep reading