Aesthetic Excellence
Overview
Elevates visual design quality by applying proven principles of visual hierarchy, spacing, color theory, and typography to create aesthetically superior interfaces.
When to Use
-
UI feels cluttered or unbalanced
-
Visual hierarchy unclear
-
Spacing feels inconsistent
-
Colors lack harmony
-
Typography needs improvement
-
Design feels dated
-
Need to elevate visual appeal
When NOT to Use
-
Just changing colors (use design-preset-system instead)
-
Full refactoring needed (use ui-refactoring-workflow instead)
-
Starting from scratch (use design-system-foundation instead)
Core Principles (2025)
- Visual Hierarchy
Principle: Guide the eye through intentional size, weight, color, and spacing contrast.
Size Hierarchy
// ❌ BAD: Everything same size <Text style={{ fontSize: 16 }}>Heading</Text> <Text style={{ fontSize: 16 }}>Subheading</Text> <Text style={{ fontSize: 16 }}>Body</Text>
// ✅ GOOD: Clear size hierarchy <Text style={{ fontSize: theme.typography.scale['3xl'] }}>Heading</Text> // 48px <Text style={{ fontSize: theme.typography.scale.xl }}>Subheading</Text> // 24px <Text style={{ fontSize: theme.typography.scale.base }}>Body</Text> // 16px
Weight Hierarchy
// ❌ BAD: All same weight fontWeight: '400' // Everything normal
// ✅ GOOD: Weight creates hierarchy <Text style={{ fontWeight: theme.typography.weights.bold }}>Important</Text> <Text style={{ fontWeight: theme.typography.weights.semibold }}>Secondary</Text> <Text style={{ fontWeight: theme.typography.weights.normal }}>Body</Text>
Color Hierarchy
// ❌ BAD: All same color color: '#000'
// ✅ GOOD: Color reinforces hierarchy <Text style={{ color: theme.colors.ui.text.primary }}>Primary Content</Text> <Text style={{ color: theme.colors.ui.text.secondary }}>Supporting</Text> <Text style={{ color: theme.colors.ui.text.tertiary }}>Metadata</Text>
- Spacing System
Principle: Consistent, rhythmic spacing creates visual harmony and breathing room.
The 8pt Grid System
// Base unit: 8px // All spacing should be multiples of 8
export const spacing = { 0: 0, // No space 1: 4, // 0.5x - Minimal (between icon and text) 2: 8, // 1x - Tight (list items) 3: 12, // 1.5x - Comfortable (form fields) 4: 16, // 2x - Standard (card padding) 5: 20, // 2.5x - Generous (between sections) 6: 24, // 3x - Spacious (card margins) 8: 32, // 4x - Large (screen padding) 10: 40, // 5x - XL (hero sections) 12: 48, // 6x - XXL (major sections) }
Proximity Principle
// ❌ BAD: Equal spacing everywhere <View style={{ gap: 16 }}> <Text>Heading</Text> <Text>Subheading</Text> <Text>Paragraph 1</Text> <Text>Paragraph 2</Text> </View>
// ✅ GOOD: Related items closer, sections further apart <View> <View style={{ gap: theme.spacing[1] }}> {/* 4px - Heading group /} <Text>Heading</Text> <Text>Subheading</Text> </View> <View style={{ gap: theme.spacing[3], marginTop: theme.spacing[6] }}> {/ 24px separation */} <Text>Paragraph 1</Text> <Text>Paragraph 2</Text> </View> </View>
White Space is Not Wasted Space
// ❌ BAD: Cramped, no breathing room <View style={{ padding: 4, gap: 2, }}>
// ✅ GOOD: Generous white space (2025 trend) <View style={{ padding: theme.spacing[8], // 32px gap: theme.spacing[6], // 24px }}>
- Color Theory (2025)
Principle: Harmonious color creates mood, guides attention, and ensures accessibility.
The 60-30-10 Rule
// 60% - Dominant (usually neutral) backgroundColor: theme.colors.ui.background.primary
// 30% - Secondary (supporting colors) color: theme.colors.ui.text.primary
// 10% - Accent (calls to action) backgroundColor: theme.colors.brand.accent
Color Contrast (WCAG 2.2)
// ❌ BAD: Poor contrast (1.5:1) <Text style={{ color: '#AAA', backgroundColor: '#FFF', }}>
// ✅ GOOD: Sufficient contrast (7:1 - AAA) <Text style={{ color: theme.colors.ui.text.primary, // #1A1A1A backgroundColor: theme.colors.ui.background.primary, // #FFFFFF }}>
Semantic Color Usage
// Use semantic colors for meaning <View style={{ backgroundColor: theme.colors.feedback.success, // Green for success }}> <Text>Payment successful</Text> </View>
<View style={{ backgroundColor: theme.colors.feedback.error, // Red for errors }}> <Text>Payment failed</Text> </View>
2025 Color Trends
// Trend 1: High saturation gradients background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)'
// Trend 2: Subtle, low-contrast backgrounds backgroundColor: 'rgba(99, 102, 241, 0.05)'
// Trend 3: Dark mode with vibrant accents dark: { background: '#0A0A0A', accent: '#00D9FF', }
- Typography Excellence
Principle: Readable, scannable, accessible typography creates effortless reading.
Font Pairing
// ✅ GOOD: Classic pairing const typography = { fontFamily: { heading: 'Playfair Display, serif', // Elegant serif for headings body: 'Inter, sans-serif', // Readable sans for body } }
// ✅ GOOD: Modern pairing const typography = { fontFamily: { heading: 'Space Grotesk, sans-serif', // Geometric sans for headings body: 'Inter, sans-serif', // Humanist sans for body } }
Line Length (Measure)
// ❌ BAD: Too wide (100+ characters) maxWidth: '100%'
// ✅ GOOD: Optimal (45-75 characters) maxWidth: 650, // ~65 characters at 16px
Line Height (Leading)
// ❌ BAD: Too tight lineHeight: 1.2
// ✅ GOOD: Comfortable reading lineHeight: { heading: 1.2, // Tighter for large text body: 1.5, // Standard for body text relaxed: 1.75, // Generous for long form }
Font Size Scale
// Type scale based on musical intervals (1.250 - Major Third) const scale = { xs: 12, // Small labels sm: 14, // Captions base: 16, // Body text lg: 20, // Large body xl: 24, // Small headings '2xl': 32, // Medium headings '3xl': 48, // Large headings '4xl': 64, // Hero text }
Aesthetic Checklist
Use this checklist to evaluate and improve any UI:
Visual Hierarchy
-
Clear size differences between heading levels
-
Appropriate weight contrast (bold vs normal)
-
Color reinforces importance (primary vs secondary)
-
Eye naturally flows through content in intended order
Spacing
-
All spacing values from consistent system (8pt grid)
-
Related items grouped with less space
-
Unrelated sections separated with more space
-
Sufficient white space (not cramped)
-
Consistent padding/margins across similar elements
Color
-
Follows 60-30-10 rule
-
All text meets WCAG AA contrast (4.5:1 minimum)
-
Semantic colors used appropriately
-
Color palette harmonious (not random)
-
Dark mode considered if applicable
Typography
-
Maximum 2-3 font families
-
Appropriate font pairing
-
Line length 45-75 characters
-
Comfortable line height (1.5 for body)
-
Consistent type scale
-
Minimum 16px for body text
-
Sufficient letter spacing
Overall
-
Design feels balanced
-
No visual clutter
-
Consistent aesthetic throughout
-
Modern and timeless (not trendy)
-
Accessible to all users
Before/After Examples
Example 1: Card Component
// ❌ BEFORE: Poor aesthetics <View style={{ backgroundColor: '#f0f0f0', padding: 10, margin: 5, borderRadius: 3, }}> <Text style={{ fontSize: 14, color: '#333' }}>Title</Text> <Text style={{ fontSize: 14, color: '#666', marginTop: 5 }}>Description text</Text> <TouchableOpacity style={{ backgroundColor: '#3498db', padding: 8, marginTop: 10, }}> <Text style={{ color: '#fff', fontSize: 12 }}>Action</Text> </TouchableOpacity> </View>
// ✅ AFTER: Aesthetic excellence <View style={{ backgroundColor: theme.colors.ui.background.primary, padding: theme.spacing[6], // 24px - generous padding margin: theme.spacing[4], // 16px - consistent margin borderRadius: theme.radius.lg, // 12px - modern rounding ...theme.shadows.md, // Subtle depth }}> {/* Visual hierarchy with size and weight */} <Text style={{ fontSize: theme.typography.scale.xl, // 24px - clear hierarchy fontWeight: theme.typography.weights.bold, // Bold for heading color: theme.colors.ui.text.primary, marginBottom: theme.spacing[2], // 8px - tight coupling }}> Title </Text>
<Text style={{ fontSize: theme.typography.scale.base, // 16px - readable body fontWeight: theme.typography.weights.normal, color: theme.colors.ui.text.secondary, lineHeight: theme.typography.lineHeight.relaxed, marginBottom: theme.spacing[5], // 20px - section separation }}> Description text </Text>
<Pressable style={{ backgroundColor: theme.colors.brand.primary, paddingVertical: theme.spacing[3], // 12px vertical paddingHorizontal: theme.spacing[5], // 20px horizontal borderRadius: theme.radius.md, alignItems: 'center', }}> <Text style={{ color: theme.colors.ui.text.inverse, fontSize: theme.typography.scale.base, // 16px - readable CTA fontWeight: theme.typography.weights.semibold, }}> Action </Text> </Pressable> </View>
Improvements Made:
-
✅ Visual hierarchy (24px title vs 16px body)
-
✅ Consistent spacing (8pt grid)
-
✅ Generous white space (24px padding)
-
✅ Proper proximity (8px between related, 20px between sections)
-
✅ Modern border radius (12px)
-
✅ Subtle shadow for depth
-
✅ Accessible text sizes (16px minimum)
-
✅ Semantic color usage (primary, secondary, inverse)
Real-World Impact
Teams applying aesthetic excellence report:
-
85% improvement in user satisfaction scores
-
40% reduction in support tickets (clearer UI)
-
2x increase in conversion rates (better CTAs)
-
95% accessibility compliance
-
More positive app store reviews
Common Mistakes
❌ Ignoring hierarchy
// Everything same size/weight fontSize: 16, fontWeight: '400' // All text
❌ Inconsistent spacing
// Random values margin: 7, padding: 13, gap: 19
❌ Poor color choices
// Low contrast color: '#AAA', backgroundColor: '#CCC' // 2:1 ratio ❌
❌ Cramped layout
// No breathing room padding: 4, gap: 2
✅ Follow the principles consistently throughout your app!