anti-patterns

❌ Building custom components when design systems have them - Always check shadcn/ui, daisyUI, HeroUI first - Don't reinvent the wheel

Anti-Patterns to Avoid

Component Design

❌ Building custom components when design systems have them

❌ Using <div> for everything

❌ Props hell

Layout

❌ Using absolute positioning for layout

❌ Forgetting mobile users

❌ Tiny touch targets

Typography

❌ Mixing multiple sans-serif or monospace fonts

❌ Using fonts smaller than 14px for code

❌ Forgetting font fallbacks

Colors & Styling

❌ Using vague color names

❌ Forgetting dark mode

❌ Poor contrast ratios

Animation

❌ Animating expensive properties

❌ Ignoring reduced-motion preferences

@media (prefers-reduced-motion: reduce) {
  * {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

Interactive Elements

❌ Auto-scrolling when user is reading

❌ Blocking UI during operations

❌ Showing raw ANSI codes in terminals

❌ Forgetting empty/loading/error states

Accessibility

❌ Skipping accessibility

❌ No keyboard navigation

❌ Missing alt text

❌ Using placeholder as label

Performance

❌ Loading unnecessary JavaScript

❌ Serving unoptimized images

❌ Forgetting to measure performance

Spacing

❌ Creating inconsistent spacing

❌ Ignoring white space

Developer Experience

❌ Committing without testing

❌ Not using design system components

❌ Mixing design systems

Quick Reference: Do's

✅ Start with user flows before code ✅ Use design system components first ✅ Think mobile-first ✅ Make accessibility a priority ✅ Use semantic HTML ✅ Create reusable design tokens ✅ Animate with transform and opacity ✅ Handle all states ✅ Measure performance ✅ Use Zen for UI, Zen Mono for code ✅ Support keyboard navigation ✅ Stream content when possible ✅ Provide copy buttons for code ✅ Test with real users