Facebook Pixel
Searching...
English
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Refactoring UI

Refactoring UI

by Adam Wathan
4.66
1k+ ratings
Listen

Key Takeaways

1. Start with a feature, not a layout

The easiest way to find yourself frustrated and stuck when working on a new design is to start by trying to "design the app."

Focus on functionality first. Begin by designing a specific feature or piece of functionality rather than the overall layout or "shell" of the app. This approach allows you to make informed decisions about navigation and structure based on actual content and user needs. For example, when designing a flight booking service, start with the essential elements like departure and destination fields, date selectors, and a search button.

Avoid premature decisions. By focusing on features first, you prevent yourself from making uninformed choices about navigation, layout, and other structural elements. This method helps you build a more user-centric design that evolves naturally from the core functionality of your application.

2. Design in grayscale before adding color

By designing in grayscale, you're forced to use spacing, contrast, and size to do all of the heavy lifting.

Emphasize structure and hierarchy. Designing in grayscale initially forces you to focus on the fundamental aspects of your design: layout, spacing, and contrast. This approach ensures that your design's core structure is solid before introducing the complexity of color.

Refine without distraction. Working in grayscale allows you to make critical decisions about hierarchy and emphasis without the potential distraction of color. Once you've established a strong foundation, you can then introduce color strategically to enhance the design rather than relying on it to create structure or meaning.

  • Start with basic wireframes or sketches
  • Refine layout and spacing in grayscale
  • Establish clear visual hierarchy using contrast and size
  • Introduce color only after the core design is solid

3. Establish visual hierarchy through size, weight, and contrast

Visual hierarchy refers to how important the elements in an interface appear in relation to one another, and it's the most effective tool you have for making something feel "designed".

Use multiple techniques. Create hierarchy by varying font sizes, weights, and colors. Don't rely solely on font size; combining different techniques often yields better results. For example, use a bolder font weight or darker color to emphasize important elements while keeping font sizes reasonable.

Consider context. Adapt your hierarchy based on the specific needs of each interface element. For instance:

  • Headlines: Larger size, bolder weight
  • Body text: Medium size, regular weight
  • Supporting text: Smaller size, lighter color
  • Call-to-action buttons: Contrasting color, bold text

Remember that hierarchy isn't just about making things stand out—it's also about de-emphasizing less important elements to create a clear visual path for the user.

4. Create depth with shadows and layering

Shadows can be more than just a flashy effect — used thoughtfully, they let you position elements on a virtual z-axis to create a meaningful sense of depth.

Use shadows purposefully. Shadows can convey elevation and importance in your interface. Establish a system of shadow sizes and intensities to represent different levels of elevation consistently throughout your design.

  • Small shadows: Slightly raised elements (e.g., buttons)
  • Medium shadows: Floating elements (e.g., dropdown menus)
  • Large shadows: Modal dialogs or prominent elements

Layer elements for depth. Overlap different components to create a sense of layering in your design. This technique can add visual interest and help organize information hierarchically. For example:

  • Offset cards to overlap backgrounds
  • Allow elements to extend beyond their containers
  • Use "invisible borders" to separate overlapping images

5. Use a consistent spacing and sizing system

A simple approach is to start with a sensible base value, then build a scale using factors and multiples of that value.

Establish a scale. Create a spacing and sizing system based on a consistent scale. This approach ensures visual harmony and speeds up the design process by limiting choices. Start with a base value (e.g., 16px) and create a scale using multiples or factors of that value.

Apply consistently. Use your established scale for various aspects of your design:

  • Margins and padding
  • Element sizes (buttons, input fields, etc.)
  • Grid gaps
  • Typography (line height, paragraph spacing)

By adhering to a consistent system, you create a more cohesive design and reduce decision fatigue during the design process. Remember that your scale should provide enough options to be flexible but not so many that it becomes overwhelming.

6. Choose typefaces wisely and establish a type scale

For UI design, your safest bet is a fairly neutral sans-serif — think something like Helvetica.

Select appropriate typefaces. Choose typefaces that are legible at various sizes and suitable for your design's purpose. For user interfaces, neutral sans-serif fonts are often the best choice. Consider factors such as:

  • Readability at small sizes
  • Available weights and styles
  • Character set completeness
  • License and usage rights

Create a type scale. Establish a consistent set of font sizes to use throughout your design. This helps maintain visual harmony and speeds up the design process.

  • Start with a base size (e.g., 16px for body text)
  • Create a scale of 5-8 sizes for different purposes (headings, captions, etc.)
  • Use a non-linear scale for more flexibility (e.g., 12, 14, 16, 20, 24, 32, 48px)

7. Develop a comprehensive color palette

You can break a good color palette down into three categories.

Build a versatile palette. Create a comprehensive color system that includes:

  1. Greys: 8-10 shades for text, backgrounds, and UI elements
  2. Primary colors: 5-10 shades each for main brand colors and actions
  3. Accent colors: Additional colors for highlights, warnings, and data visualization

Consider color psychology. Choose colors that align with your brand personality and evoke the right emotions. For example:

  • Blue: Trust, professionalism
  • Green: Growth, positivity
  • Red: Urgency, importance

Remember to test your palette for accessibility and ensure sufficient contrast between text and background colors.

8. Optimize images for legibility and impact

To solve this problem, you need to reduce the dynamics in the image to make the contrast between the text and the background more consistent.

Enhance image-text contrast. When placing text over images, ensure legibility by adjusting the image or adding overlays:

  • Reduce image contrast
  • Add semi-transparent overlays
  • Use color filters to unify the image with your design
  • Apply subtle text shadows or glows

Control user-generated content. When dealing with user-uploaded images:

  • Enforce consistent aspect ratios and sizes
  • Use subtle borders or shadows to separate images from backgrounds
  • Implement fallback styles for missing or problematic images

These techniques help maintain design integrity while accommodating variable content.

9. Pay attention to small details for a polished look

You don't always have to add new elements to a design to add flare — there are a lot of ways to liven up a page by "supercharging" what's already there.

Elevate standard elements. Enhance common UI components to add visual interest:

  • Replace default bullets with custom icons
  • Style quotation marks in testimonials
  • Create custom checkbox and radio button styles
  • Add accent borders to cards or sections

Use subtle background decorations. Break up monotony in your designs by:

  • Applying subtle gradients or patterns to backgrounds
  • Using different background colors to distinguish sections
  • Adding light textures or subtle illustrations

These small touches can significantly improve the overall polish and professionalism of your design without requiring major layout changes.

Last updated:

Review Summary

4.66 out of 5
Average of 1k+ ratings from Goodreads and Amazon.

Refactoring UI receives overwhelmingly positive reviews, with readers praising its practical, concise approach to UI design. Many find it especially valuable for developers looking to improve their design skills. The book is lauded for its clear examples, useful tips, and ability to explain complex concepts simply. Readers appreciate its focus on creating consistent, functional designs and building effective design systems. While some experienced designers find it basic, most consider it an essential resource for anyone involved in web or app development, regardless of their design background.

Your rating:

About the Author

Adam Wathan is a web developer, designer, and entrepreneur known for his work in the UI/UX field. He is the creator of Tailwind CSS, a popular utility-first CSS framework widely used in web development. Adam Wathan co-authored "Refactoring UI" with Steve Schoger, combining their expertise to provide practical design advice for developers. Wathan's approach focuses on creating efficient, visually appealing interfaces without extensive design experience. His work often emphasizes the importance of utility-based design systems and streamlined development processes. Through his writing, speaking engagements, and open-source contributions, Wathan has become a respected voice in the web development community.

Download PDF

To save this Refactoring UI summary for later, download the free PDF. You can print it out, or read offline at your convenience.
Download PDF
File size: 0.29 MB     Pages: 11

Download EPUB

To read this Refactoring UI summary on your e-reader device or app, download the free EPUB. The .epub digital book format is ideal for reading ebooks on phones, tablets, and e-readers.
Download EPUB
File size: 3.00 MB     Pages: 8
0:00
-0:00
1x
Dan
Andrew
Michelle
Lauren
Select Speed
1.0×
+
200 words per minute
Create a free account to unlock:
Bookmarks – save your favorite books
History – revisit books later
Ratings – rate books & see your ratings
Unlock unlimited listening
Your first week's on us!
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Nov 22,
cancel anytime before.
Compare Features Free Pro
Read full text summaries
Summaries are free to read for everyone
Listen to summaries
12,000+ hours of audio
Unlimited Bookmarks
Free users are limited to 10
Unlimited History
Free users are limited to 10
What our users say
30,000+ readers
“...I can 10x the number of books I can read...”
“...exceptionally accurate, engaging, and beautifully presented...”
“...better than any amazon review when I'm making a book-buying decision...”
Save 62%
Yearly
$119.88 $44.99/yr
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Settings
Appearance