<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>User Experience on Smashing Magazine — For Web Designers And Developers</title><link>https://www.smashingmagazine.com/category/user-experience/index.xml</link><description>Recent content in User Experience on Smashing Magazine — For Web Designers And Developers</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Mon, 09 Feb 2026 03:03:08 +0000</lastBuildDate><item><author>Vitaly Friedman</author><title>Combobox vs. Multiselect vs. Listbox: How To Choose The Right One</title><link>https://www.smashingmagazine.com/2026/02/combobox-vs-multiselect-vs-listbox/</link><pubDate>Tue, 03 Feb 2026 10:00:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2026/02/combobox-vs-multiselect-vs-listbox/</guid><description>Combobox vs. Multi-Select vs. Listbox vs. Dual Listbox? How they are different, what purpose they serve, and how to choose the right one. Brought to you by &lt;a href="https://ai-design-patterns.com">Design Patterns For AI Interfaces&lt;/a>, &lt;strong>friendly video courses on UX&lt;/strong> and design patterns by Vitaly.</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2026/02/combobox-vs-multiselect-vs-listbox/" />
              <title>Combobox vs. Multiselect vs. Listbox: How To Choose The Right One</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>Combobox vs. Multiselect vs. Listbox: How To Choose The Right One</h1>
                  
                    
                    <address>Vitaly Friedman</address>
                  
                  <time datetime="2026-02-03T10:00:00&#43;00:00" class="op-published">2026-02-03T10:00:00+00:00</time>
                  <time datetime="2026-02-03T10:00:00&#43;00:00" class="op-modified">2026-02-09T03:03:08+00:00</time>
                </header>
                
                

<p>So what’s the difference between combobox, multiselect, listbox, and dropdown? While all these UI components might appear similar, they serve different purposes. The choice often comes down to the <strong>number of available options</strong> and their visibility.</p>

<p>Let’s see how they differ, <strong>what purpose they serve</strong>, and how to choose the right one &mdash; avoiding misunderstandings and wrong expectations along the way.</p>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/1-combobox-vs-multiselect-vs-listbox.jpg">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="858"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/1-combobox-vs-multiselect-vs-listbox.jpg 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/1-combobox-vs-multiselect-vs-listbox.jpg 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/1-combobox-vs-multiselect-vs-listbox.jpg 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/1-combobox-vs-multiselect-vs-listbox.jpg 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/1-combobox-vs-multiselect-vs-listbox.jpg 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/1-combobox-vs-multiselect-vs-listbox.jpg"
			
			sizes="100vw"
			alt="A comparison of UI elements: Listbox, Combobox, Multiselect, and Dual Listbox, showcasing different selection functionalities."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      And the confusion begins: Listbox, Combobox, Multiselect, Dual Listbox. (<a href='https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/1-combobox-vs-multiselect-vs-listbox.jpg'>Large preview</a>)
    </figcaption>
  
</figure>

<h2 id="not-all-list-patterns-are-the-same">Not All List Patterns Are The Same</h2>

<p>All the UI components highlighted above have exactly one thing in common: they support users’ interactions with lists. However, they do so slightly differently.</p>

<p>Let’s take a look at each, one by one:</p>

<ul>
<li><strong>Dropdown</strong> → list is hidden until it’s triggered.</li>
<li><strong>Combobox</strong> → type to filter + select 1 option.</li>
<li><strong>Multiselect</strong> → type to filter + select many options.</li>
<li><strong>Listbox</strong> → all list options visible by default (+ scroll).</li>
<li><strong>Dual listbox</strong> → move items between 2 listboxes.</li>
</ul>














<figure class="
  
  
  ">
  
    <a href="https://watson.docplanner.design/latest/watson-web/components/combobox/usage-guidelines-L68K6G51">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="825"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/2-watson-design-system.jpg 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/2-watson-design-system.jpg 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/2-watson-design-system.jpg 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/2-watson-design-system.jpg 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/2-watson-design-system.jpg 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/2-watson-design-system.jpg"
			
			sizes="100vw"
			alt="A text input field with a dropdown list"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Watson design system with grouping inside of its <a href='https://watson.docplanner.design/latest/watson-web/components/combobox/usage-guidelines-L68K6G51'>combobox pattern</a>. (<a href='https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/2-watson-design-system.jpg'>Large preview</a>)
    </figcaption>
  
</figure>

<p>In other words, <em>Combobox</em> combines a text input field with a dropdown list, so users can <strong>type to filter</strong> and select a single option. With <em>Multiselect</em>, users can select many options (often displayed as pills or chips).</p>

<p><em>Listboxes</em> display <strong>all list options visible</strong> by default, often with scrolling. It’s helpful when users need to see all available choices immediately. <em>Dual listbox</em> (also called <em>transfer list</em>) is a variation of a listbox that allows users to <strong>move items between two listboxes</strong> (left ↔ right), typically for bulk selection.</p>

<h2 id="never-hide-frequently-used-options">Never Hide Frequently Used Options</h2>

<p>As mentioned above, the choice of the right UI component depends on <strong>2 factors</strong>: how many list options are available, and if all these options need to be visible by default. All lists could have tree structures, nesting, and group selection, too.</p>














<figure class="
  
  
  ">
  
    <a href="https://www.mongodb.design/component/combobox/design-docs">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="776"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/3-nongodb-design-system.jpg 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/3-nongodb-design-system.jpg 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/3-nongodb-design-system.jpg 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/3-nongodb-design-system.jpg 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/3-nongodb-design-system.jpg 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/3-nongodb-design-system.jpg"
			
			sizes="100vw"
			alt="A dropdown menu showing product selection. Compass is selected, and Atlas is selected with two sub-options: Vector Search and Atlas CLI."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      <a href='https://www.mongodb.design/component/combobox/live-example'>MongoDB design system</a> with nested filters and chips. (<a href='https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/3-nongodb-design-system.jpg'>Large preview</a>)
    </figcaption>
  
</figure>

<p>There is one principle that I’ve been following for years for any UI component: <strong>never hide frequently used options</strong>. If users rely on a particular selection frequently, there is very little value in hiding it from them.</p>

<p>We could either make it <strong>pre-selected</strong>, or (if there are only 2–3 frequently used options) show them as <a href="https://smart-interface-design-patterns.com/articles/badges-chips-tags-pills/"><strong>chips or buttons</strong></a>, and then show the rest of the list on interaction. In general, it’s a good idea to always display popular options &mdash; even if it might clutter the UI.</p>

<h2 id="how-to-choose-which">How To Choose Which?</h2>

<p>Not every list needs a complex selection method. For lists with <strong>fewer than 5 items</strong>, simple radio buttons or checkboxes usually work best. But if users need to select from a <strong>large list</strong> of options (e.g., 200+ items), combobox + multiselect are helpful because of the faster filtering (e.g., country selection).</p>














<figure class="
  
  
  ">
  
    <a href="https://www.nngroup.com/articles/listbox-dropdown/">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="722"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/4-matrix-options-multiselect-listboxes.jpg 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/4-matrix-options-multiselect-listboxes.jpg 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/4-matrix-options-multiselect-listboxes.jpg 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/4-matrix-options-multiselect-listboxes.jpg 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/4-matrix-options-multiselect-listboxes.jpg 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/4-matrix-options-multiselect-listboxes.jpg"
			
			sizes="100vw"
			alt="Matrix of options for multiselect and listboxes."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      A <a href='https://www.nngroup.com/articles/listbox-dropdown/'>matrix of options</a>, broken down by single- or multi-selection and static or scrollable view. By Anna Kaley, from NN/g. (<a href='https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/4-matrix-options-multiselect-listboxes.jpg'>Large preview</a>)
    </figcaption>
  
</figure>

<p><strong>Listboxes</strong> are helpful when people need to access <strong>many options at once</strong>, especially if they need to choose many options from that list as well. They could be helpful for frequently used filters.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://v5.mantine.dev/core/transfer-list/">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="468"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/5-dual-list-box.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/5-dual-list-box.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/5-dual-list-box.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/5-dual-list-box.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/5-dual-list-box.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/5-dual-list-box.png"
			
			sizes="100vw"
			alt="Dual list box used to transfer items from one place to another."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Dual listbox in action: it can be very helpful when assigning tasks or permissions. That’s why it’s “Transfer List”. Example from <a href='https://v5.mantine.dev/core/transfer-list/'>Mantine</a>. (<a href='https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/5-dual-list-box.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p><strong>Dual listbox</strong> is often overlooked and ignored. But it can be very helpful for complex tasks, e..g bulk selection, or assigning roles, tasks, responsibilities. It’s the only UI component that allows users to review their full selection list side-by-side with the source list before committing (also called <em>“Transfer list”</em>).</p>

<p>In fact, dual listbox is often faster, more accurate, and more accessible than <a href="https://smart-interface-design-patterns.com/articles/drag-and-drop-ux/">drag-and-drop</a>.</p>

<h2 id="usability-considerations">Usability Considerations</h2>

<p>One important note to keep in mind is that all list types need to support <strong>keyboard navigation</strong> (e.g., ↑/↓ arrow keys) for accessibility. Some people will almost always rely uponthe  keyboard to select options once they start typing.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://watson.docplanner.design/latest/watson-web/components/combobox/usage-guidelines-L68K6G51">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="555"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/7-keyboard-navigation.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/7-keyboard-navigation.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/7-keyboard-navigation.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/7-keyboard-navigation.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/7-keyboard-navigation.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/7-keyboard-navigation.png"
			
			sizes="100vw"
			alt="Keyboard navigation is often in use with any type of lists."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Keyboard navigation is often in use with any kind of lists. Example: <a href='https://watson.docplanner.design/latest/watson-web/components/combobox/usage-guidelines-L68K6G51'>Watson</a>. (<a href='https://files.smashing.media/articles/combobox-vs-multiselect-vs-listbox/7-keyboard-navigation.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>Beyond that:</p>

<ul>
<li>For lists with <strong>7+ options</strong>, consider adding “Select All” and “Clear All” functionalities to streamline user interaction.</li>
<li>For lengthy lists with a combobox, <strong>expose all options</strong> to users on click/tap, as otherwise they might never be seen,</li>
<li>Most important, <strong>don’t display non-interactive elements as buttons</strong> to avoid confusion &mdash; and don&rsquo;t display interactive elements as static labels.</li>
</ul>

<h2 id="wrapping-up-not-everything-is-a-dropdown">Wrapping Up: Not Everything Is A Dropdown</h2>

<p>Names matter. A <strong>vertical list of options</strong> is typically described as a “dropdown” &mdash; but often it’s a bit too generic to be meaningful. <em>“Dropdown”</em> hints that the list is hidden by default. <em>“Multiselect”</em> implies multi-selection (checkbox) within a list. <em>“Combobox”</em> implies text input. And “Listbox” is simply a list of selectable items, visible at all times.</p>

<p>The goal isn’t to be consistent with the definitions above for the sake of it. But rather to <strong>align intentions</strong> &mdash; speak the same language when deciding on, designing, building, and then using these UI components.</p>

<p>It <strong>should work for everyone</strong> &mdash; designers, engineers, and end users &mdash; as long as static labels don’t look like interactive buttons, and radio buttons don’t act like checkboxes.</p>

<h2 id="meet-design-patterns-for-ai-interfaces">Meet “Design Patterns For AI Interfaces”</h2>

<p>Meet <a href="https://ai-design-patterns.com/"><strong>Design Patterns For AI Interfaces</strong></a>, Vitaly’s new <strong>video course</strong> with practical examples from real-life products &mdash; with a <a href="https://smashingconf.com/online-workshops/workshops/ai-interfaces-vitaly-friedman/">live UX training</a> happening soon. <a href="https://www.youtube.com/watch?v=jhZ3el3n-u0">Jump to a free preview</a>.</p>

<p><figure class="article__image" style="margin-bottom: 0"><a href="https://ai-design-patterns.com/"><img style="border-radius:11px" loading="lazy" decoding="async" fetchpriority="low" width="800" height="414" srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/product-designer-career-paths/design-patterns-ai-interfaces.png 400w,
https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/product-designer-career-paths/design-patterns-ai-interfaces.png 800w,
https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/product-designer-career-paths/design-patterns-ai-interfaces.png 1200w,
https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/product-designer-career-paths/design-patterns-ai-interfaces.png 1600w,
https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/product-designer-career-paths/design-patterns-ai-interfaces.png 2000w" src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/product-designer-career-paths/design-patterns-ai-interfaces.png" sizes="100vw" alt="Design Patterns For AI Interfaces promo picture"></a><figcaption class="op-vertical-bottom">Meet <a href="https://ai-design-patterns.com/">Design Patterns For AI Interfaces</a>, Vitaly’s video course on interface design &amp; UX.</figcaption></figure>
<div class="book-cta__inverted"><div class="book-cta" data-handler="ContentTabs" data-mq="(max-width: 480px)"><nav class="content-tabs content-tabs--books"><ul><li class="content-tab"><a href="#"><button class="btn btn--small btn--white btn--white--bordered">
Video + UX Training</button></a></li><li class="content-tab"><a href="#"><button class="btn btn--small btn--white btn--white--bordered">Video only</button></a></li></ul></nav><div class="book-cta__col book-cta__hardcover content-tab--content"><h3 class="book-cta__title"><span>Video + UX Training</span></h3><span class="book-cta__price"><span><span class=""><span class="currency-sign">$</span>&nbsp;<span>450<span class="sup">.00</span></span></span> <span class="book-cta__price--old"><span class="currency-sign">$</span>&nbsp;<span>799<span class="sup">.00</span></span></span></span></span>
<a href="https://smart-interface-design-patterns.thinkific.com/enroll/3476562?price_id=4401578" class="btn btn--full btn--medium btn--text-shadow">
Get Video + UX Training<div></div></a><p class="book-cta__desc">30 video lessons (10h) + <a href="https://smashingconf.com/online-workshops/workshops/ai-interfaces-vitaly-friedman/">Live UX Training</a>.<br>100 days money-back-guarantee.</p></div><div class="book-cta__col book-cta__ebook content-tab--content"><h3 class="book-cta__title"><span>Video only</span></h3><div data-audience="anonymous free supporter" data-remove="true"><span class="book-cta__price" data-handler="PriceTag"><span><span class=""><span class="currency-sign">$</span>&nbsp;<span>275<span class="sup">.00</span></span></span><span class="book-cta__price--old"><span class="currency-sign">$</span>&nbsp;<span>395<span class="sup">.00</span></span></span></span></div>
<a href="https://smart-interface-design-patterns.thinkific.com/enroll/3476562?price_id=4397456" class="btn btn--full btn--medium btn--text-shadow">
Get the video course<div></div></a><p class="book-cta__desc" data-audience="anonymous free supporter" data-remove="true">30 video lessons (10h). Updated yearly.<br>Also available as a <a href="https://smart-interface-design-patterns.thinkific.com/enroll/3570306?price_id=4503439">UX Bundle with 3 video courses.</a></p></div><span></span></div></div></p>

<h2 id="useful-resources">Useful Resources</h2>

<ul>
<li><a href="https://smart-interface-design-patterns.com/articles/autocomplete-ux/">Autocomplete: UX Guidelines</a>, by Vitaly Friedman</li>
<li><a href="https://playbook.ebay.com/design-system/components/combobox">Combobox</a>, by eBay 👍</li>
<li><a href="https://eui.elastic.co/docs/components/forms/selection/combo-box/">Combobox</a>, by Elastic</li>
<li><a href="https://designsystem.elisa.fi/9b207b2c3/p/082dd3-combobox">Combobox</a>, by Elisa</li>
<li><a href="https://www.mongodb.design/component/combobox/live-example">Combobox</a>, by MongoDB 👍</li>
<li><a href="https://design.visa.com/components/combobox/">Combobox</a>, by Visa 👍</li>
<li><a href="https://watson.docplanner.design/latest/watson-web/components/combobox/usage-guidelines-L68K6G51">Combobox</a>, by Watson (Docplanner)</li>
<li><a href="https://doc.wikimedia.org/codex/latest/components/demos/combobox.html">Combobox</a>, by Wikimedia</li>
<li><a href="https://garden.zendesk.com/components/combobox">Combobox</a>, by Zendesk</li>
<li><a href="https://www.mongodb.design/component/combobox/design-docs">Multiselect (MongoDB Combobox Design Docs)</a>, by MongoDB 👍</li>
<li><a href="https://doc.wikimedia.org/codex/latest/components/demos/multiselect-lookup.html">Multiselect Lookup</a>, by Wikimedia</li>
<li><a href="https://vaadin.com/docs/latest/components/multi-select-combo-box">Multi-select Combo Box</a>, by Vaadin</li>
<li><a href="https://design.visa.com/components/multiselect/">Multiselect</a>, by Visa</li>
<li><a href="https://ant.design/components/transfer">Transfer (Listbox example)</a>, by Ant Design</li>
<li><a href="https://hopper.workleap.design/components/Listbox">Listbox</a>, by Hopper</li>
<li><a href="https://vaadin.com/docs/latest/components/list-box">List Box</a>, by Vaadin</li>
<li><a href="https://design.visa.com/components/listbox/">Listbox</a>, by Visa</li>
<li><a href="https://www.patternfly.org/components/dual-list-selector">Dual List Selector</a>, by Red Hat (PatternFly)</li>
<li><a href="https://www.lightningdesignsystem.com/2e1ef8501/p/763763-dual-listbox">Dual Listbox</a>, by Salesforce (Lightning Design System)</li>
<li><a href="https://v5.mantine.dev/core/transfer-list/">Transfer List</a>, by Mantine</li>
<li><a href="https://dashlite.net/demo1/components/misc/dual-listbox.html">Dual Listbox</a>, by Dashlite</li>
<li><a href="https://smart-interface-design-patterns.com/articles/badges-chips-tags-pills/">Badges vs. Pills vs. Chips vs. Tags</a>, by Vitaly Friedman</li>
<li><a href="https://www.nngroup.com/articles/listbox-dropdown/">Listboxes vs. Dropdown Lists</a>, by Anna Kaley (NN/g)</li>
</ul>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(yk)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item><item><author>Rodolpho Henrique</author><title>The Psychology Of Color In UX And Digital Products</title><link>https://www.smashingmagazine.com/2025/08/psychology-color-ux-design-digital-products/</link><pubDate>Fri, 15 Aug 2025 15:00:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2025/08/psychology-color-ux-design-digital-products/</guid><description>Rodolpho Henrique guides you through the essential aspects of color in digital design and user experience, from the practical steps of creating effective and scalable color palettes to critical accessibility considerations.</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2025/08/psychology-color-ux-design-digital-products/" />
              <title>The Psychology Of Color In UX And Digital Products</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>The Psychology Of Color In UX And Digital Products</h1>
                  
                    
                    <address>Rodolpho Henrique</address>
                  
                  <time datetime="2025-08-15T15:00:00&#43;00:00" class="op-published">2025-08-15T15:00:00+00:00</time>
                  <time datetime="2025-08-15T15:00:00&#43;00:00" class="op-modified">2026-02-09T03:03:08+00:00</time>
                </header>
                
                

<p>Color plays a pivotal role in crafting compelling user experiences and successful digital products. It’s far more than just aesthetics; color strategically guides users, establishes brand identity, and evokes specific emotions.</p>

<p>Beyond functionality, color is also a powerful tool for <strong>brand recognition</strong> and <strong>emotional connection</strong>. Consistent use of brand colors across a digital product reinforces identity and builds trust. Different hues carry cultural and psychological associations, allowing designers to subtly influence user perception and create the desired mood. A thoughtful and deliberate approach to color in UX design elevates the user experience, strengthens brand presence, and contributes significantly to the overall success and impact of digital products. In this article, we will talk about the importance of color and <em>why</em> they are important for creating emotional connection and delivering consistent and accessible digital products.</p>

<p>Well-chosen color palettes enhance <strong>usability</strong> by creating visual hierarchies, highlighting interactive elements, and providing crucial feedback on screens. For instance, a bright color might draw attention to a call-to-action button, while consistent color coding can help users navigate complex interfaces intuitively. Color also contributes significantly to <strong>accessibility</strong>, ensuring that users with visual impairments can still effectively interact with digital products. By carefully considering contrast ratios and providing alternative visual cues, designers can create inclusive experiences that cater to a wider audience.</p>

<blockquote class="pull-quote">
  <p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aThe%20colors%20we%20choose%20are%20the%20silent%20language%20of%20our%20digital%20products,%20and%20speaking%20it%20fluently%20is%20essential%20for%20success.%0a&url=https://smashingmagazine.com%2f2025%2f08%2fpsychology-color-ux-design-digital-products%2f">
      
The colors we choose are the silent language of our digital products, and speaking it fluently is essential for success.

    </a>
  </p>
  <div class="pull-quote__quotation">
    <div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
  </div>
</blockquote>

<h2 id="communicating-brand-identity-through-color-in-the-digital-space">Communicating Brand Identity Through Color In The Digital Space</h2>

<p>A thoughtfully curated and vibrant color palette becomes a critical differentiator, allowing a brand to stand out amidst the digital noise and cultivate stronger connections with the audience.</p>

<p>Far beyond mere decoration, color acts as a visual shorthand, instantly conveying a brand’s personality, its underlying values, and its unique essence. According to the <a href="https://www.ama.org/2025/04/08/more-vividmore-effective-how-saturated-colors-impact-consumer-behavior-and-waste/">American Marketing Association</a>, vibrant colors, in particular, possess an inherent magnetism, drawing the eye and etching themselves into memory within the online environment. They infuse the brand with energy and dynamism, projecting approachability and memorability in a way that more muted tones often cannot.</p>

<div data-audience="non-subscriber" data-remove="true" class="feature-panel-container">

<aside class="feature-panel" style="">
<div class="feature-panel-left-col">

<div class="feature-panel-description"><p>Meet <strong><a data-instant href="https://www.smashingconf.com/online-workshops/">Smashing Workshops</a></strong> on <strong>front-end, design &amp; UX</strong>, with practical takeaways, live sessions, <strong>video recordings</strong> and a friendly Q&amp;A. With Brad Frost, Stéph Walter and <a href="https://smashingconf.com/online-workshops/workshops">so many others</a>.</p>
<a data-instant href="smashing-workshops" class="btn btn--green btn--large" style="">Jump to the workshops&nbsp;↬</a></div>
</div>
<div class="feature-panel-right-col"><a data-instant href="smashing-workshops" class="feature-panel-image-link">
<div class="feature-panel-image">
<img
    loading="lazy"
    decoding="async"
    class="feature-panel-image-img"
    src="/images/smashing-cat/cat-scubadiving-panel.svg"
    alt="Feature Panel"
    width="257"
    height="355"
/>

</div>
</a>
</div>
</aside>
</div>

<h2 id="consistency-the-core-of-great-design">Consistency: The Core Of Great Design</h2>

<p>Consistency is important because it fosters trust and familiarity, allowing users to quickly identify and connect with the brand in the online landscape. The strategic deployment of vibrant colors is especially crucial for brands seeking to establish themselves and flourish within the digital ecosystem. In the absence of physical storefronts or tangible in-person interactions, visual cues become paramount in shaping user perception and building brand recognition. A carefully selected primary color, supported by a complementary and equally energetic secondary palette, can become synonymous with a brand’s digital presence. A consistent application of the right colors across different digital touchpoints &mdash; from the logo and website design to the user interface of an app and engaging social media campaigns &mdash; creates a cohesive and instantly recognizable visual language.</p>

<p>Several sources and professionals agree that the psychology behind the colors plays a significant role in shaping brand perception. The publication <a href="https://insightspsychology.org/psychology-of-color-emotional-impact/">Insights Psychology</a>, for instance, explains how colors can create emotional and behavioural responses. Vibrant colors often evoke strong emotions and associations. A bold, energetic red, for example, might communicate passion and excitement, while a bright, optimistic yellow could convey innovation and cheerfulness. By consciously aligning their color choices with their brand values and target audience preferences, digitally-native brands can create a powerful emotional resonance.</p>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/psychology-color-ux-design-digital-products/1-colors-psychology.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="800"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/1-colors-psychology.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/1-colors-psychology.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/1-colors-psychology.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/1-colors-psychology.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/1-colors-psychology.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/1-colors-psychology.png"
			
			sizes="100vw"
			alt="Colors with corresponding emotions and associations"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      The psychology behind the colors plays a significant role in shaping brand perception. (<a href='https://files.smashing.media/articles/psychology-color-ux-design-digital-products/1-colors-psychology.png'>Large preview</a>)
    </figcaption>
  
</figure>

<h2 id="beyond-aesthetics-how-color-psychologically-impacts-user-behavior-in-digital">Beyond Aesthetics: How Color Psychologically Impacts User Behavior In Digital</h2>

<p>As designers working with digital products, we’ve learned that color is far more than a superficial layer of visual appeal. It’s a potent, <strong>often subconscious</strong>, force that shapes how users interact with and feel about the digital products we build.</p>

<blockquote>We’re not just painting pixels, we’re conducting a psychological symphony, carefully selecting each hue to evoke specific emotions, guide behavior, and ultimately forge a deeper connection with the user.</blockquote>

<p>The initial allure of a color palette might be purely aesthetic, but its true power lies in its <strong>ability to bypass conscious thought and tap directly into our emotional core</strong>. Think about the subtle unease that might creep in when encountering a predominantly desaturated interface for a platform promising dynamic content, or the sense of calm that washes over you when a learning application utilizes soft, analogous colors. These are not arbitrary responses; they’re deeply rooted in our evolutionary history and cultural conditioning.</p>

<p>To understand how colors psychologically impact user behavior in digital, we first need to understand how colors are defined. In digital design, colors are precisely defined using the <strong>HSB model</strong>, which stands for <strong>Hue</strong>, <strong>Saturation</strong>, and <strong>Brightness</strong>. This model provides a more intuitive way for designers to think about and manipulate color compared to other systems like RGB (Red, Green, Blue). Here is a quick breakdown of each component:</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/psychology-color-ux-design-digital-products/2-hsb-colors.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="384"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/2-hsb-colors.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/2-hsb-colors.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/2-hsb-colors.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/2-hsb-colors.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/2-hsb-colors.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/2-hsb-colors.png"
			
			sizes="100vw"
			alt="HSB model"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      HSB describes colors based on how humans perceive them, rather than the physical components of light like RGB. (<a href='https://files.smashing.media/articles/psychology-color-ux-design-digital-products/2-hsb-colors.png'>Large preview</a>)
    </figcaption>
  
</figure>

<h3 id="hue">Hue</h3>

<p>This is the pure color itself, the essence that we typically name, such as red, blue, green, or yellow. On a color wheel, hue is represented as an angle ranging from 0 to 360 degrees. For example, 0 is red, 120 is green, and 240 is blue. Think of it as the specific wavelength of light that our eyes perceive as a particular color. In UX, selecting the base hues is often tied to brand identity and the overall feeling you want to convey.</p>

<h3 id="saturation">Saturation</h3>

<p>Saturation refers to the intensity or purity of the hue. It describes how vivid or dull the color appears. A fully saturated color is rich and vibrant, while a color with low saturation appears muted, grayish, or desaturated. Saturation is typically expressed as a percentage, from 0% (completely desaturated, appearing as a shade of gray) to 100% (fully saturated, the purest form of the hue).</p>

<p>In UX, saturation levels are crucial for creating <strong>visual hierarchy</strong> and drawing attention to key elements. Highly saturated colors often indicate interactive elements or important information, while lower saturation can be used for backgrounds or less critical content.</p>

<h3 id="brightness">Brightness</h3>

<p>Brightness, sometimes also referred to as a value or lightness, indicates how light or dark a color appears. It’s the amount of white or black mixed into the hue. Brightness is also usually represented as a percentage, ranging from 0% (completely black, regardless of the hue or saturation) to 100% (fully bright). At 100% brightness and 0% saturation, you get white. In UX, adjusting brightness is essential for <strong>creating contrast</strong> and <strong>ensuring readability</strong>. Sufficient brightness contrast between text and background is a fundamental accessibility requirement. Furthermore, variations in brightness within a color palette can create visual depth and subtle distinctions between UI elements.</p>

<p>By understanding and manipulating these 3 color dimensions, digital designers have precise control over their color choices. This allows for the creation of harmonious and effective color palettes that not only align with brand guidelines but also strategically influence user behavior.</p>

<p>Just as in the physical world, colors in digital also carry symbolic meanings and trigger subconscious associations. Understanding these color associations is essential for UX designers aiming to craft experiences that not only look appealing but also resonate emotionally and guide user behavior effectively.</p>

<p>As the <a href="https://blog.emb.global/color-psychology-in-branding/">EMB Global</a> states, the way we perceive and interpret color is not universal, yet broad patterns of association exist. For instance, the color <strong>blue</strong> often evokes feelings of trust, stability, and calmness. This association stems from the natural world &mdash; the vastness of the sky and the tranquility of deep waters. In the digital space, this makes blue a popular choice for financial institutions, corporate platforms, and interfaces aiming to project reliability and security. However, the specific shade and context matter immensely. A bright, electric blue can feel energetic and modern, while a muted and darker blue might convey a more serious and authoritative tone.</p>

<p>Kendra Cherry, a psychosocial and rehabilitation specialist and author of the book <em>Everything Psychology</em>, <a href="https://www.verywellmind.com/color-psychology-2795824">explains</a> very well how colors evoke certain responses in us. For example, the color <strong>green</strong> is intrinsically linked to nature, often bringing about feelings of growth, health, freshness, and tranquility. It can also symbolize prosperity in some cultures. In digital design, green is frequently used for health and wellness applications, environmental initiatives, and platforms emphasizing sustainability. A vibrant lime green can feel energetic and youthful, while a deep forest green can evoke a sense of groundedness and organic quality.</p>

<p><strong>Yellow</strong>, the color of sunshine, is generally associated with optimism, happiness, energy, and warmth. It’s attention-grabbing and can create a sense of playfulness. In digital interfaces, yellow is often used for highlighting important information, calls to action (though sparingly, as too much can be overwhelming), or for brands wanting to project a cheerful and approachable image.</p>

<p><strong>Red</strong>, a color with strong physiological effects, typically evokes excitement, passion, urgency, and sometimes anger or danger. It commands attention and can stimulate action. Digitally, red is often used for alerts, error messages, sales promotions, or for brands wanting to project a bold and energetic identity. Its intensity requires careful consideration, as overuse can lead to user fatigue or anxiety.</p>

<p><strong>Orange</strong> blends the energy of red with the optimism of yellow, often conveying enthusiasm, creativity, and friendliness. It can feel less aggressive than red but still commands attention. In digital design, orange is frequently used for calls to action, highlighting sales or special offers, and for brands aiming to appear approachable and innovative.</p>

<p><strong>Purple</strong> has historically been associated with royalty and luxury. It can evoke feelings of creativity, wisdom, and mystery. In digital contexts, purple is often used for brands aiming for a sophisticated or unique feel, particularly in areas like luxury goods, beauty, or spiritual and creative platforms.</p>

<p><strong>Black</strong> often signifies sophistication, power, elegance, and sometimes mystery. In digital design, black is frequently used for minimalist interfaces, luxury brands, and for creating strong contrast with lighter elements. The feeling it evokes heavily depends on the surrounding colors and overall design aesthetic.</p>

<p><strong>White</strong> is generally associated with purity, cleanliness, simplicity, and neutrality. It provides a sense of spaciousness and allows other colors to stand out. In digital design, white space is a crucial element, and white is often used as a primary background color to create a clean and uncluttered feel.</p>

<p><strong>Gray</strong> is often seen as neutral, practical, and sometimes somber or conservative. In digital interfaces, various shades of gray are essential for typography, borders, dividers, and creating visual hierarchy without being overly distracting.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/psychology-color-ux-design-digital-products/3-color-associations.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="361"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/3-color-associations.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/3-color-associations.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/3-color-associations.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/3-color-associations.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/3-color-associations.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/3-color-associations.png"
			
			sizes="100vw"
			alt="Guide to some common color associations"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Guide to some common color associations. (<a href='https://files.smashing.media/articles/psychology-color-ux-design-digital-products/3-color-associations.png'>Large preview</a>)
    </figcaption>
  
</figure>

<div class="partners__lead-place"></div>

<h2 id="evoking-emotions-in-digital-interfaces">Evoking Emotions In Digital Interfaces</h2>

<p>Imagine an elegant furniture application. The designers might choose a primary palette of soft, desaturated blues and greens, accented with gentle earth tones. The muted blues could subtly induce a feeling of calmness and tranquility, aligning with the app’s core purpose of relaxation. The soft greens might evoke a sense of nature and well-being, further reinforcing the theme of peace and mental clarity. The earthy browns could ground the visual experience, creating a feeling of stability and connection to the natural world.</p>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/psychology-color-ux-design-digital-products/4-calm-vs-vibrant-color-palette.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="717"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/4-calm-vs-vibrant-color-palette.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/4-calm-vs-vibrant-color-palette.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/4-calm-vs-vibrant-color-palette.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/4-calm-vs-vibrant-color-palette.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/4-calm-vs-vibrant-color-palette.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/4-calm-vs-vibrant-color-palette.png"
			
			sizes="100vw"
			alt="Example of a calm and vibrant color palette"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Example of a calm and vibrant color palette. (<a href='https://files.smashing.media/articles/psychology-color-ux-design-digital-products/4-calm-vs-vibrant-color-palette.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>Now, consider a platform for extreme investment enthusiasts. The color palette might be dominated by high-energy oranges and reds, contrasted with stark blacks and sharp whites. The vibrant oranges could evoke feelings of excitement and adventure, while the bold red might amplify the sense of adrenaline and intensity. The black and white could provide a sense of dynamism and modernity, reflecting the fast-paced nature of the activities.</p>

<blockquote class="pull-quote">
  <p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aBy%20consciously%20understanding%20and%20applying%20these%20color%20associations,%20digital%20designers%20can%20move%20beyond%20purely%20aesthetic%20choices%20and%20craft%20experiences%20that%20resonate%20deeply%20with%20users%20on%20an%20emotional%20level,%20leading%20to%20more%20engaging,%20intuitive,%20and%20successful%20digital%20products.%0a&url=https://smashingmagazine.com%2f2025%2f08%2fpsychology-color-ux-design-digital-products%2f">
      
By consciously understanding and applying these color associations, digital designers can move beyond purely aesthetic choices and craft experiences that resonate deeply with users on an emotional level, leading to more engaging, intuitive, and successful digital products.

    </a>
  </p>
  <div class="pull-quote__quotation">
    <div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
  </div>
</blockquote>

<h3 id="color-as-a-usability-tool">Color As A Usability Tool</h3>

<p>Choosing the right colors isn’t about adhering to fleeting trends; it’s about ensuring that our mobile applications and websites are usable by the widest possible audience, including individuals with visual impairments. Improper color choices can create significant barriers, rendering content illegible, interactive elements indistinguishable, and ultimately excluding a substantial portion of potential users.</p>

<blockquote>Prioritizing color with accessibility in mind is not just a matter of ethical design; it’s a fundamental aspect of creating inclusive and user-friendly digital experiences that benefit everyone.</blockquote>

<p>For individuals with low vision, sufficient color contrast between text and background is paramount for readability. Imagine trying to decipher light gray text on a white background &mdash; a common design trend that severely hinders those with even mild visual impairments. Adhering to <a href="https://www.w3.org/WAI/standards-guidelines/wcag/">Web Content Accessibility Guidelines</a> (WCAG) contrast ratios ensures that text remains legible and understandable.</p>

<p>Furthermore, color blindness, affecting a significant percentage of the population, necessitates the use of redundant visual cues. Relying solely on color to convey information, such as indicating errors in red without an accompanying text label, excludes colorblind users. By pairing color with text, icons, or patterns, we ensure that critical information is conveyed through multiple sensory channels, making it accessible to all. Thoughtful color selection, therefore, is not an optional add-on but an integral component of designing digital products that are truly usable and equitable.</p>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/psychology-color-ux-design-digital-products/5-high-vs-low-contrast-texts.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="717"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/5-high-vs-low-contrast-texts.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/5-high-vs-low-contrast-texts.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/5-high-vs-low-contrast-texts.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/5-high-vs-low-contrast-texts.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/5-high-vs-low-contrast-texts.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/5-high-vs-low-contrast-texts.png"
			
			sizes="100vw"
			alt="Example of high and low contrast on texts"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Example of high and low contrast on texts. (<a href='https://files.smashing.media/articles/psychology-color-ux-design-digital-products/5-high-vs-low-contrast-texts.png'>Large preview</a>)
    </figcaption>
  
</figure>

<h2 id="choosing-your-palette">Choosing Your Palette</h2>

<p>As designers, we need a strategic approach to choosing color palettes, considering various factors to build a scalable and impactful color system. Here’s a breakdown of the steps and considerations involved:</p>

<h3 id="1-deep-dive-into-brand-identity-and-main-goals">1. Deep Dive Into Brand Identity And Main Goals</h3>

<p>The journey begins with a thorough understanding of the brand itself. What are its core values? What personality does it project? Is it playful, sophisticated, innovative? Analyze existing brand guidelines (if any), target audience demographics and psychographics, and the overall goals of the digital product. The color palette should be a visual extension of this identity, reinforcing brand recognition and resonating with the intended users. For instance, a financial app aiming for trustworthiness might lean towards blues and greens, while a creative platform could explore more vibrant and unconventional hues.</p>

<h3 id="2-understand-color-psychology-and-cultural-associations">2. Understand Color Psychology And Cultural Associations</h3>

<p>As discussed previously, colors carry inherent psychological and cultural baggage. While these associations are not absolute, they provide a valuable framework for initial exploration. Consider the emotions you want to evoke and research how your target audience might perceive different colors, keeping in mind cultural nuances that can significantly alter interpretations. This step is important to help in making informed decisions that align with the desired user experience and brand perception.</p>

<h3 id="3-defining-the-core-colors">3. Defining The Core Colors</h3>

<p>Start by identifying the primary color &mdash; the dominant hue that represents your brand’s essence. This will likely be derived from the brand logo or existing visual identity. Next, establish a secondary color or two that complement the primary color and provide visual interest and hierarchy. These secondary colors should work harmoniously with the primary, offering flexibility for different UI elements and interactions.</p>

<h3 id="4-build-a-functional-color-system">4. Build A Functional Color System</h3>

<p>A consistent and scalable color palette goes beyond just a few base colors. It involves creating a system of variations for practical application within the digital interface. This typically includes tints and shades, accent colors, and neutral colors.</p>

<h3 id="5-do-not-forget-about-usability-and-accessibility">5. Do Not Forget About Usability And Accessibility</h3>

<p>Ensure sufficient color contrast between text and background, as well as between interactive elements and their surroundings, to meet WCAG guidelines. Tools are readily available to check color contrast ratios.</p>

<p>Test your palette using color blindness simulators to see how it will be perceived by individuals with different types of color vision deficiencies. This helps identify potential issues where information might be lost due to color alone.</p>

<p>Visual hierarchy is also important to guide the user’s eye and establish a clear visual story. Important elements should be visually distinct.</p>

<h3 id="6-testing-and-iteration">6. Testing And Iteration</h3>

<p>Once you have a preliminary color palette, it’s crucial to test it within the context of your digital product. Create mockups and prototypes to see how the colors work together in the actual interface. Gather feedback from stakeholders and, ideally, conduct user testing to identify any usability or aesthetic issues. Be prepared to iterate and refine your palette based on these insights.</p>

<p>A well-defined color palette for the digital medium should be:</p>

<ul>
<li>Consistent,</li>
<li>Scalable,</li>
<li>Accessible,</li>
<li>Brand-aligned,</li>
<li>Emotionally resonant, and</li>
<li>Functionally effective.</li>
</ul>

<p>By following these steps and keeping these considerations in mind, designers can craft color palettes that are not just visually appealing but also strategically powerful tools for creating effective and accessible digital experiences.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/psychology-color-ux-design-digital-products/6-consistent-color-palette.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="392"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/6-consistent-color-palette.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/6-consistent-color-palette.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/6-consistent-color-palette.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/6-consistent-color-palette.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/6-consistent-color-palette.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/psychology-color-ux-design-digital-products/6-consistent-color-palette.png"
			
			sizes="100vw"
			alt="Example of a consistent color palette with base colors and accent colors"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Example of a consistent color palette with base colors and accent colors. (<a href='https://files.smashing.media/articles/psychology-color-ux-design-digital-products/6-consistent-color-palette.png'>Large preview</a>)
    </figcaption>
  
</figure>

<div class="partners__lead-place"></div>

<h2 id="color-consistency-building-trust-and-recognition-through-a-harmonized-digital-presence">Color Consistency: Building Trust And Recognition Through A Harmonized Digital Presence</h2>

<p>Consistency plays an important role in the whole color ecosystem. By maintaining a unified color scheme for interactive elements, navigation cues, and informational displays, designers create a seamless and predictable user journey, building trust through visual stability.</p>

<p>Color consistency directly contributes to brand recognition in the increasingly crowded digital landscape. Just as a logo or typeface becomes instantly identifiable, a consistent color palette acts as a powerful visual signature. When users repeatedly encounter the same set of colors associated with a particular brand, it strengthens their recall and fosters a stronger brand association. This visual consistency extends beyond the core interface to marketing materials, social media presence, and all digital touchpoints, creating a cohesive and memorable brand experience. By strategically and consistently applying a solid and consistent color palette, digital products can cultivate stronger brand recognition, build user trust, and enhance user loyalty.</p>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(yk)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item><item><author>Mikhail Prosmitskiy</author><title>WCAG 3.0’s Proposed Scoring Model: A Shift In Accessibility Evaluation</title><link>https://www.smashingmagazine.com/2025/05/wcag-3-proposed-scoring-model-shift-accessibility-evaluation/</link><pubDate>Fri, 02 May 2025 11:00:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2025/05/wcag-3-proposed-scoring-model-shift-accessibility-evaluation/</guid><description>WCAG is evolving. Since 1999, the Web Content Accessibility Guidelines have defined accessibility in binary terms: either a success criterion is met or not. But real user experience is rarely that simple. WCAG 3.0 rethinks the model — prioritizing usability over compliance and shifting the focus toward the quality of access rather than the mere presence of features. Could this be the start of a new era in accessibility?</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2025/05/wcag-3-proposed-scoring-model-shift-accessibility-evaluation/" />
              <title>WCAG 3.0’s Proposed Scoring Model: A Shift In Accessibility Evaluation</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>WCAG 3.0’s Proposed Scoring Model: A Shift In Accessibility Evaluation</h1>
                  
                    
                    <address>Mikhail Prosmitskiy</address>
                  
                  <time datetime="2025-05-02T11:00:00&#43;00:00" class="op-published">2025-05-02T11:00:00+00:00</time>
                  <time datetime="2025-05-02T11:00:00&#43;00:00" class="op-modified">2026-02-09T03:03:08+00:00</time>
                </header>
                
                

<p>Since their introduction in <a href="https://www.w3.org/TR/WAI-WEBCONTENT/">1999</a>, the <a href="https://www.w3.org/WAI/standards-guidelines/wcag/">Web Content Accessibility Guidelines</a> (WCAG) have shaped how we design and develop inclusive digital products. The WCAG 2.x series, released in <a href="https://www.w3.org/TR/WCAG20/">2008</a>, introduced clear technical criteria judged in a binary way: either a success criterion is met or not. While this model has supported regulatory clarity and auditability, its <strong>“all-or-nothing” nature</strong> often fails to reflect the nuance of actual user experience (UX).</p>

<p>Over time, that disconnect between technical conformance and lived usability has become harder to ignore. People engage with digital systems in complex, often nonlinear ways: navigating multistep flows, dynamic content, and interactive states. In these scenarios, checking whether an element passes a rule doesn’t always answer the main question: can someone actually use it?</p>

<p><a href="https://www.w3.org/WAI/standards-guidelines/wcag/wcag3-intro/">WCAG 3.0</a> is still in <a href="https://www.w3.org/TR/wcag-3.0/#sotd">draft</a>, but is evolving &mdash; and it represents a <a href="https://www.w3.org/TR/wcag-3.0/#about-wcag-3-0">fundamental rethinking</a> of how we evaluate accessibility. Rather than asking whether a requirement is technically met, it asks how well users with disabilities can complete meaningful tasks. Its new outcome-based model introduces a <a href="https://www.w3.org/TR/wcag-3.0-explainer/#additional-concepts">flexible scoring system</a> that <strong>prioritizes usability over compliance</strong>, shifting focus toward the quality of access rather than the mere presence of features.</p>

<h2 id="draft-status-ambitious-but-still-evolving">Draft Status: Ambitious, But Still Evolving</h2>

<p>WCAG 3.0 was first introduced as a public working draft by the <a href="https://www.w3.org/">World Wide Web Consortium</a> (W3C) <a href="https://www.w3.org/WAI/about/groups/agwg/">Accessibility Guidelines Working Group</a> in early <a href="https://www.w3.org/TR/2021/WD-wcag-3.0-20210121/">2021</a>. The draft is still under active development and is not expected to reach <a href="https://www.w3.org/standards/about/#what-are-web-standards">W3C Recommendation status</a> for <a href="https://www.w3.org/WAI/standards-guidelines/wcag/wcag3-intro/#timeline">several years, if not decades</a>, by some accounts. This extended timeline reflects both the complexity of the task and the ambition behind it:</p>

<blockquote>WCAG 3.0 isn’t just an update &mdash; it’s a paradigm shift.</blockquote>

<p>Unlike WCAG 2.x, which focused primarily on web pages, WCAG 3.0 aims to cover a much <a href="https://www.w3.org/TR/wcag-3.0-requirements/#wcag-3-0-scope">broader ecosystem</a>, including applications, tools, connected devices, and emerging interfaces like voice interaction and extended reality. It also <a href="https://www.w3.org/WAI/standards-guidelines/wcag/wcag3-intro/#wcag-3-name">rebrands itself</a> as the W3C Accessibility Guidelines (while the WCAG acronym remains the same), signaling that <strong>accessibility is no longer a niche concern</strong> &mdash; it’s a baseline expectation across the digital world.</p>

<p>Importantly, WCAG 3.0 <a href="https://www.w3.org/TR/wcag-3.0-explainer/#intro">will not immediately replace 2.x</a>. Both standards will coexist, and conformance to WCAG 2.2 will continue to be valid and necessary for some time, especially in legal and policy contexts.</p>

<p>This expansion isn’t just technical.</p>

<blockquote class="pull-quote">
  <p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aWCAG%203.0%20reflects%20a%20deeper%20philosophical%20shift:%20accessibility%20is%20moving%20from%20a%20model%20of%20compliance%20toward%20a%20model%20of%20effectiveness.%0a&url=https://smashingmagazine.com%2f2025%2f05%2fwcag-3-proposed-scoring-model-shift-accessibility-evaluation%2f">
      
WCAG 3.0 reflects a deeper philosophical shift: accessibility is moving from a model of compliance toward a model of effectiveness.

    </a>
  </p>
  <div class="pull-quote__quotation">
    <div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
  </div>
</blockquote>

<p>Rules alone can’t capture whether a system truly works for someone. That’s why WCAG 3.0 leans into <strong>flexibility</strong> and <strong>future-proofing</strong>, aiming to support evolving technologies and real-world use over time. It formalizes a principle long understood by practitioners:</p>

<blockquote>Inclusive design isn’t about passing a test; it’s about enabling people.</blockquote>

<div data-audience="non-subscriber" data-remove="true" class="feature-panel-container">

<aside class="feature-panel" style="">
<div class="feature-panel-left-col">

<div class="feature-panel-description"><p>Roll up your sleeves and <strong>boost your UX skills</strong>! Meet <strong><a data-instant href="https://smart-interface-design-patterns.com/">Smart Interface Design Patterns</a></strong>&nbsp;🍣, a 10h video library by Vitaly Friedman. <strong>100s of real-life examples</strong> and live UX training. <a href="https://www.youtube.com/watch?v=3mwZztmGgbE">Free preview</a>.</p>
<a data-instant href="https://smart-interface-design-patterns.com/" class="btn btn--green btn--large" style="">Jump to table of contents&nbsp;↬</a></div>
</div>
<div class="feature-panel-right-col"><a data-instant href="https://smart-interface-design-patterns.com/" class="feature-panel-image-link">
<div class="feature-panel-image"><picture><source type="image/avif" srcSet="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/3155f571-450d-42f9-81b4-494aa9b52841/video-course-smart-interface-design-patterns-vitaly-friedman.avif" />
<img
    loading="lazy"
    decoding="async"
    class="feature-panel-image-img"
    src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/8c98e7f9-8e62-4c43-b833-fc6bf9fea0a9/video-course-smart-interface-design-patterns-vitaly-friedman.jpg"
    alt="Feature Panel"
    width="690"
    height="790"
/>
</picture>
</div>
</a>
</div>
</aside>
</div>

<h2 id="a-new-structure-from-success-criteria-to-outcomes-and-methods">A New Structure: From Success Criteria To Outcomes And Methods</h2>

<p>WCAG 2.x is structured around <a href="https://www.w3.org/WAI/fundamentals/accessibility-principles/">four foundational principles</a> &mdash; Perceivable, Operable, Understandable, and Robust (aka POUR) &mdash; and testable success criteria organized into <a href="https://www.w3.org/WAI/WCAG22/Understanding/conformance#levels">three conformance levels</a> (A, AA, AAA). While technically precise, these criteria often emphasize implementation over impact.</p>

<p>WCAG 3.0 <a href="https://www.w3.org/TR/wcag-3.0/#conformance-0">reorients this structure</a> toward user needs and real outcomes. Its hierarchy is built on:</p>

<ul>
<li><a href="https://www.w3.org/TR/wcag-3.0/#guidelines"><strong>Guidelines</strong></a>: High-level accessibility goals tied to specific user needs.</li>
<li><a href="https://www.w3.org/TR/wcag-3.0-explainer/#guidelines"><strong>Outcomes</strong></a>: Testable, user-centered statements (e.g., “Users have alternatives for time-based media”).</li>
<li><a href="https://www.w3.org/TR/wcag-3.0-explainer/#requirements-and-methods"><strong>Methods</strong></a>: Technology-specific or agnostic techniques that help achieve the outcomes, including code examples and test instructions.</li>
<li><a href="https://www.w3.org/TR/wcag-3.0-explainer/#structure"><strong>How-To Guides</strong></a>: Narrative documentation that provides practical advice, user context, and design considerations.</li>
</ul>

<p>This shift is more than organizational. It reflects a deeper commitment to aligning technical implementation with UX. Outcomes speak <a href="https://www.w3.org/TR/wcag-3.0-requirements/#readability">the language of capability</a>, which is about what users should be able to do (rather than just technical presence).</p>

<p>Crucially, outcomes are also where conformance scoring begins to take shape. For example, imagine a checkout flow on an e-commerce website. Under WCAG 2.x, if even one field in the checkout form lacks a label, <a href="https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships.html">the process may fail AA conformance entirely</a>. However, under WCAG 3.0, that same flow might be evaluated <a href="https://www.w3.org/TR/wcag-3.0-explainer/#conformance-models">across multiple outcomes</a> (such as keyboard navigation, form labeling, focus management, and error handling), with each outcome receiving a separate score. If most areas score well but the error messaging is poor, the overall rating might be “Good” instead of “Excellent”, prompting targeted improvements without negating the entire flow’s accessibility.</p>

<h2 id="from-binary-checks-to-graded-scores">From Binary Checks To Graded Scores</h2>

<p>Rather than relying on pass or fail outcomes, WCAG 3.0 <a href="https://www.w3.org/TR/wcag-3.0-explainer/#additional-concepts">introduces a scoring model</a> that reflects how well accessibility is supported. This shift allows teams to <strong>recognize partial successes</strong> and prioritize real improvements.</p>

<h3 id="how-scoring-works">How Scoring Works</h3>

<p>Each outcome in WCAG 3.0 is evaluated through <a href="https://www.w3.org/TR/wcag-3.0-explainer/#types-of-tests">one or more atomic tests</a>. These can include the following:</p>

<ul>
<li><strong>Binary tests</strong>: “Yes” and “no” outcomes (e.g., does every image have alternative text?)</li>
<li><strong>Percentage-based tests</strong>: Coverage-based scoring (e.g., what percentage of form fields have labels?)</li>
<li><strong>Qualitative tests</strong>: Rated judgments based on criteria (e.g., how descriptive is the alternative text?)</li>
</ul>

<p>The result of these tests produces a score for each outcome, often normalized on a 0-4 or 0-5 scale, with labels like Poor, Fair, Good, and Excellent. These scores are then aggregated across functional categories (vision, mobility, cognition, etc.) and user flows.</p>

<p>This allows teams to measure progress, not just compliance. A product that improves from “Fair” to “Good” over time shows real <strong>evolution</strong> &mdash; <a href="https://www.w3.org/TR/wcag-3.0-requirements/#broad-disability-support">a concept</a> that doesn’t exist in WCAG 2.x.</p>

<h3 id="critical-errors-a-balancing-mechanism">Critical Errors: A Balancing Mechanism</h3>

<p>To ensure that severity still matters, WCAG 3.0 introduces <a href="https://www.w3.org/TR/wcag-3.0-explainer/#additional-concepts">critical errors</a>, which are high-impact accessibility failures that can override an otherwise positive score.</p>

<p>For example, consider a checkout flow. Under WCAG 2.x, a single missing label might cause the entire flow to fail conformance. WCAG 3.0, however, evaluates multiple outcomes &mdash; like form labeling, keyboard access, and error handling &mdash; each with its own score. Minor issues, such as unclear error messages or a missing label on an optional field, might lower the rating from “Excellent” to “Good”, without invalidating the entire experience.</p>

<p>But if a user cannot complete a core action, like submitting the form, making a purchase, or logging in, that constitutes a <strong>critical error</strong>. These failures directly block task completion and significantly reduce the overall score, regardless of how polished the rest of the experience is.</p>

<p>On the other hand, problems with non-essential features &mdash; like uploading a profile picture or changing a theme color &mdash; are considered lower-impact and won’t weigh as heavily in the evaluation.</p>

<div class="partners__lead-place"></div>

<h2 id="conformance-levels-bronze-silver-gold">Conformance Levels: Bronze, Silver, Gold</h2>

<p>In place of categorizing conformance in tiers of Level A, Level AA, and Level AAA, WCAG 3.0 proposes <a href="https://www.w3.org/TR/wcag-3.0-explainer/#additional-concepts">three different conformance tiers</a>:</p>

<ul>
<li><strong>Bronze</strong>: The new minimum. It is <a href="https://www.w3.org/TR/wcag-3.0-explainer/#conformance-models">comparable to WCAG 2.2 Level AA</a>, but based on scoring and foundational outcomes. The requirements are considered achievable via automated and guided manual testing.</li>
<li><strong>Silver</strong>: This is a higher standard, requiring broader coverage, higher scores, and <a href="https://www.w3.org/TR/wcag-3.0-requirements/#design_principles">usability validation from people with disabilities</a>.</li>
<li><strong>Gold</strong>: The highest tier. Represents exemplary accessibility, likely requiring inclusive design processes, innovation, and extensive user involvement.</li>
</ul>

<p>Unlike in WCAG 2.2, where Level AAA is often seen as aspirational and inconsistent, these levels are intended to <strong>incentivize progression</strong>. They can also <a href="https://www.w3.org/TR/wcag-3.0/#defining-conformance-scope">be scoped</a> in the sense that teams can claim conformance for a checkout flow, mobile app, or specific feature, allowing iterative improvement.</p>

<h2 id="what-you-should-do-now">What You Should Do Now</h2>

<p>While WCAG 3.0 is still being developed, its direction is clear. That said, it’s important to acknowledge that the guidelines are not expected to be finalized in a few years. Here’s how teams can prepare:</p>

<ul>
<li><strong>Continue pursuing WCAG 2.2 Level AA.</strong> <a href="https://www.w3.org/TR/wcag-3.0/#about-wcag-3-0">It remains</a> the most robust, recognized standard.</li>
<li><a href="https://www.w3.org/TR/wcag-3.0-explainer/#abstract"><strong>Familiarize yourself</strong></a> <strong>with WCAG 3.0 drafts</strong>, especially the outcomes and scoring model.</li>
<li><a href="https://www.w3.org/TR/wcag-3.0-requirements/#oppotunities_usability"><strong>Start thinking in outcomes.</strong></a> Focus on what users need to accomplish, not just what features are present.</li>
<li><strong>Embed accessibility into workflows.</strong> Shift left. Don’t test at the end &mdash; design and build with access in mind.</li>
<li><a href="https://www.w3.org/TR/wcag-3.0-requirements/#design_principles"><strong>Involve</strong></a> <strong>users</strong> with disabilities early and regularly.</li>
</ul>

<p>These practices won’t just make your product more inclusive; they’ll position your team to excel under WCAG 3.0.</p>

<h2 id="potential-downsides">Potential Downsides</h2>

<p>Even though WCAG 3.0 presents a bold step toward more <strong>holistic accessibility</strong>, several structural risks deserve early attention, especially for organizations navigating regulation, scaling design systems, or building sustainable accessibility practices. Importantly, many of these risks are interconnected: challenges in one area may amplify issues in others.</p>

<h3 id="subjective-scoring">Subjective Scoring</h3>

<p>The move from binary pass or fail criteria to scored evaluations introduces room for <strong>subjective interpretation</strong>. Without standardized calibration, the same user flow might receive different scores depending on the evaluator. This makes comparability and repeatability harder, particularly in procurement or multi-vendor environments. A simple alternative text might be rated as “adequate” by one team and “unclear” by another.</p>

<h3 id="reduced-compliance-clarity">Reduced Compliance Clarity</h3>

<p>That same subjectivity leads to a second concern: <strong>the erosion of clear compliance thresholds</strong>. Scored evaluations replace the binary clarity of “compliant” or “not” with a more flexible, but less definitive, outcome. This could complicate legal enforcement, contractual definitions, and audit reporting. In practice, a product might earn a “Good” rating while still presenting critical usability gaps for certain users, creating a disconnect between score and actual access.</p>

<h3 id="legal-and-policy-misalignment">Legal and Policy Misalignment</h3>

<p>As clarity around compliance blurs, so does alignment with existing legal frameworks. Many current laws explicitly reference WCAG 2.x and its A, AA, and AAA levels (e.g. <a href="https://www.section508.gov/manage/laws-and-policies/">Section 508 of the Rehabilitation Act of 1973</a>, <a href="https://commission.europa.eu/strategy-and-policy/policies/justice-and-fundamental-rights/disability/union-equality-strategy-rights-persons-disabilities-2021-2030/european-accessibility-act_en">European Accessibility Act</a>, <a href="https://www.gov.uk/guidance/accessibility-requirements-for-public-sector-websites-and-apps">The Public Sector Bodies (Websites and Mobile Applications) (No. 2) Accessibility Regulations 2018</a>).</p>

<p>Until WCAG 3.0 is formally mapped to those standards, its use in regulated contexts may introduce risk. Teams operating in healthcare, finance, or public sectors will likely need to maintain dual conformance strategies in the interim, increasing cost and complexity.</p>

<h3 id="risk-of-minimum-viable-accessibility">Risk Of Minimum Viable Accessibility</h3>

<p>Perhaps most concerning, this ambiguity can set the stage for a “minimum viable accessibility” mindset. Scored models risk encouraging “Bronze is good enough” thinking, particularly in deadline-driven environments. A team might deprioritize improvements once they reach a passing grade, even if essential barriers remain.</p>

<p>For example, a mobile app with strong keyboard support but missing audio transcripts could still achieve a passing tier, leaving some users excluded.</p>

<div class="partners__lead-place"></div>

<h2 id="conclusion">Conclusion</h2>

<p>WCAG 3.0 marks a <strong>new era in accessibility</strong> &mdash; one that better reflects the diversity and complexity of real users. By shifting from checklists to scored evaluations and from rigid technical compliance to <a href="https://www.w3.org/TR/wcag-3.0-requirements/#broad-disability-support">practical usability</a>, it encourages teams to prioritize real-world impact over theoretical perfection.</p>

<p>As one might say, <em>“It’s not about the score. It’s about who can use the product.”</em> In my own experience, I’ve seen teams pour hours into fixing minor color contrast issues while overlooking broken keyboard navigation, leaving screen reader users unable to complete essential tasks. WCAG 3.0’s focus on outcomes reminds us that accessibility is fundamentally about <a href="https://www.w3.org/TR/wcag-3.0-explainer/#goals">functionality and inclusion</a>.</p>

<blockquote class="pull-quote">
  <p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aAt%20the%20same%20time,%20WCAG%203.0%e2%80%99s%20proposed%20scoring%20models%20introduce%20new%20responsibilities.%20Without%20clear%20calibration,%20stronger%20enforcement%20patterns,%20and%20a%20cultural%20shift%20away%20from%20%e2%80%9cgood%20enough,%e2%80%9d%20we%20risk%20losing%20the%20very%20clarity%20that%20made%20WCAG%202.x%20enforceable%20and%20actionable.%20The%20promise%20of%20flexibility%20only%20works%20if%20we%20use%20it%20to%20aim%20higher,%20not%20to%20settle%20earlier.%0a&url=https://smashingmagazine.com%2f2025%2f05%2fwcag-3-proposed-scoring-model-shift-accessibility-evaluation%2f">
      
At the same time, WCAG 3.0’s proposed scoring models introduce new responsibilities. Without clear calibration, stronger enforcement patterns, and a cultural shift away from “good enough,” we risk losing the very clarity that made WCAG 2.x enforceable and actionable. The promise of flexibility only works if we use it to aim higher, not to settle earlier.

    </a>
  </p>
  <div class="pull-quote__quotation">
    <div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
  </div>
</blockquote>

<p>For teams across design, development, and product leadership, this shift is a chance to rethink what success means. Accessibility isn’t about ticking boxes &mdash; it’s about enabling people.</p>

<p>By preparing now, being mindful of the risks, and focusing on user outcomes, we don’t just get ahead of WCAG 3.0 &mdash; we build digital experiences that are truly usable, sustainable, and inclusive.</p>

<h3 id="further-reading-on-smashingmag">Further Reading On SmashingMag</h3>

<ul>
<li>“<a href="https://www.smashingmagazine.com/2023/10/roundup-wcag-explainers/">A Roundup Of WCAG 2.2 Explainers</a>,” Geoff Graham</li>
<li>“<a href="https://www.smashingmagazine.com/2024/07/getting-bottom-minimum-wcag-conformant-interactive-element-size/">Getting To The Bottom Of Minimum WCAG-Conformant Interactive Element Size</a>,” Eric Bailey</li>
<li>“<a href="https://www.smashingmagazine.com/2024/06/how-make-strong-case-accessibility/">How To Make A Strong Case For Accessibility</a>,” Vitaly Friedman</li>
<li>“<a href="https://www.smashingmagazine.com/2024/02/web-designer-accessibility-advocacy-toolkit/">A Designer’s Accessibility Advocacy Toolkit</a>,” Yichan Wang</li>
</ul>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(gg, yk)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item><item><author>Amejimaobari Ollornwi</author><title>Building An Offline-Friendly Image Upload System</title><link>https://www.smashingmagazine.com/2025/04/building-offline-friendly-image-upload-system/</link><pubDate>Wed, 23 Apr 2025 10:00:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2025/04/building-offline-friendly-image-upload-system/</guid><description>Poor internet connectivity doesn’t have to mean poor UX. With PWA technologies like &lt;code>IndexedDB&lt;/code>, service workers, and the Background Sync API, you can build an offline-friendly image upload system that queues uploads and retries them automatically — so your users can upload stress-free, even when offline.</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2025/04/building-offline-friendly-image-upload-system/" />
              <title>Building An Offline-Friendly Image Upload System</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>Building An Offline-Friendly Image Upload System</h1>
                  
                    
                    <address>Amejimaobari Ollornwi</address>
                  
                  <time datetime="2025-04-23T10:00:00&#43;00:00" class="op-published">2025-04-23T10:00:00+00:00</time>
                  <time datetime="2025-04-23T10:00:00&#43;00:00" class="op-modified">2026-02-09T03:03:08+00:00</time>
                </header>
                
                

<p>So, you’re filling out an online form, and it asks you to upload a file. You click the input, select a file from your desktop, and are good to go. But something happens. The network drops, the file disappears, and you’re stuck having to re-upload the file. <strong>Poor network connectivity</strong> can lead you to spend an unreasonable amount of time trying to upload files successfully.</p>

<p>What ruins the user experience stems from having to constantly check network stability and retry the upload several times. While we may not be able to do much about network connectivity, as developers, we can always do something to ease the pain that comes with this problem.</p>

<p>One of the ways we can solve this problem is by tweaking image upload systems in a way that enables users to upload images offline &mdash; <strong>eliminating the need for a reliable network connection</strong>, and then having the system retry the upload process when the network becomes stable, without the user intervening.</p>

<p>This article is going to focus on explaining how to build <strong>an offline-friendly image upload system</strong> using PWA (progressive web application) technologies such as <code>IndexedDB</code>, service workers, and the Background Sync API. We will also briefly cover tips for improving the user experience for this system.</p>

<h2 id="planning-the-offline-image-upload-system">Planning The Offline Image Upload System</h2>

<p>Here’s a flow chart for an offline-friendly image upload system.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/building-offline-friendly-image-upload-system/1-upload-system-flow-chart.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="678"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/building-offline-friendly-image-upload-system/1-upload-system-flow-chart.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/building-offline-friendly-image-upload-system/1-upload-system-flow-chart.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/building-offline-friendly-image-upload-system/1-upload-system-flow-chart.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/building-offline-friendly-image-upload-system/1-upload-system-flow-chart.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/building-offline-friendly-image-upload-system/1-upload-system-flow-chart.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/building-offline-friendly-image-upload-system/1-upload-system-flow-chart.png"
			
			sizes="100vw"
			alt="Flow chart of an offline-friendly image upload system"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Flow chart of an offline-friendly image upload system (<a href='https://files.smashing.media/articles/building-offline-friendly-image-upload-system/1-upload-system-flow-chart.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>As shown in the flow chart, the process unfolds as follows:</p>

<ol>
<li><strong>The user selects an image.</strong><br />
The process begins by letting the user select their image.</li>
<li><strong>The image is stored locally in <code>IndexedDB</code>.</strong><br />
Next, the system checks for network connectivity. If network connectivity is available, the system uploads the image directly, avoiding unnecessary local storage usage. However, if the network is not available, the image will be stored in <code>IndexedDB</code>.</li>
<li><strong>The service worker detects when the network is restored.</strong><br />
With the image stored in <code>IndexedDB</code>, the system waits to detect when the network connection is restored to continue with the next step.</li>
<li><strong>The background sync processes pending uploads.</strong><br />
The moment the connection is restored, the system will try to upload the image again.</li>
<li><strong>The file is successfully uploaded</strong>.<br />
The moment the image is uploaded, the system will remove the local copy stored in <code>IndexedDB</code>.

<br /></li>
</ol>

<div data-audience="non-subscriber" data-remove="true" class="feature-panel-container">

<aside class="feature-panel" style="">
<div class="feature-panel-left-col">

<div class="feature-panel-description"><p><p>Meet <a data-instant href="/the-smashing-newsletter/"><strong>Smashing Email Newsletter</strong></a> with useful tips on front-end, design &amp; UX. Subscribe and <strong>get “Smart Interface Design Checklists”</strong> &mdash; a <strong>free PDF deck</strong> with 150+ questions to ask yourself when designing and building almost <em>anything</em>.</p><div><section class="nlbf"><form action="//smashingmagazine.us1.list-manage.com/subscribe/post?u=16b832d9ad4b28edf261f34df&amp;id=a1666656e0" method="post"><div class="nlbwrapper"><label for="mce-EMAIL-hp" class="sr-only">Your (smashing) email</label><div class="nlbgroup"><input type="email" name="EMAIL" class="nlbf-email" id="mce-EMAIL-hp" placeholder="Your email">
<input type="submit" value="Meow!" name="subscribe" class="nlbf-button"></div></div></form><style>.c-garfield-the-cat .nlbwrapper{margin-bottom: 0;}.nlbf{display:flex;padding-bottom:.25em;padding-top:.5em;text-align:center;letter-spacing:-.5px;color:#fff;font-size:1.15em}.nlbgroup:hover{box-shadow:0 1px 7px -5px rgba(50,50,93,.25),0 3px 16px -8px rgba(0,0,0,.3),0 -6px 16px -6px rgba(0,0,0,.025)}.nlbf .nlbf-button,.nlbf .nlbf-email{flex-grow:1;flex-shrink:0;width:auto;margin:0;padding:.75em 1em;border:0;border-radius:11px;background:#fff;font-size:1em;box-shadow:none}.promo-box .nlbf-button:focus,.promo-box input.nlbf-email:active,.promo-box input.nlbf-email:focus{box-shadow:none}.nlbf-button:-ms-input-placeholder,.nlbf-email:-ms-input-placeholder{color:#777;font-style:italic}.nlbf-button::-webkit-input-placeholder,.nlbf-email::-webkit-input-placeholder{color:#777;font-style:italic}.nlbf-button:-ms-input-placeholder,.nlbf-button::-moz-placeholder,.nlbf-button::placeholder,.nlbf-email:-ms-input-placeholder,.nlbf-email::-moz-placeholder,.nlbf-email::placeholder{color:#777;font-style:italic}.nlbf .nlbf-button{transition:all .2s ease-in-out;color:#fff;background-color:#0168b8;font-weight:700;box-shadow:0 1px 1px rgba(0,0,0,.3);width:100%;border:0;border-left:1px solid #ddd;flex:2;border-top-left-radius:0;border-bottom-left-radius:0}.nlbf .nlbf-email{border-top-right-radius:0;border-bottom-right-radius:0;width:100%;flex:4;min-width:150px}@media all and (max-width:650px){.nlbf .nlbgroup{flex-wrap:wrap;box-shadow:none}.nlbf .nlbf-button,.nlbf .nlbf-email{border-radius:11px;border-left:none}.nlbf .nlbf-email{box-shadow:0 13px 27px -5px rgba(50,50,93,.25),0 8px 16px -8px rgba(0,0,0,.3),0 -6px 16px -6px rgba(0,0,0,.025);min-width:100%}.nlbf .nlbf-button{margin-top:1em;box-shadow:0 1px 1px rgba(0,0,0,.5)}}.nlbf .nlbf-button:active,.nlbf .nlbf-button:focus,.nlbf .nlbf-button:hover{cursor:pointer;color:#fff;background-color:#0168b8;border-color:#dadada;box-shadow:0 1px 1px rgba(0,0,0,.3)}.nlbf .nlbf-button:active,.nlbf .nlbf-button:focus{outline:0!important;text-shadow:1px 1px 1px rgba(0,0,0,.3);box-shadow:inset 0 3px 3px rgba(0,0,0,.3)}.nlbgroup{display:flex;box-shadow:0 13px 27px -5px rgba(50,50,93,.25),0 8px 16px -8px rgba(0,0,0,.3),0 -6px 16px -6px rgba(0,0,0,.025);border-radius:11px;transition:box-shadow .2s ease-in-out}.nlbwrapper{display:flex;flex-direction:column;justify-content:center}.nlbf form{width:100%}.nlbf .nlbgroup{margin:0}.nlbcaption{font-size:.9em;line-height:1.5em;color:#fff;border-radius:11px;padding:.5em 1em;display:inline-block;background-color:#0067b859;text-shadow:1px 1px 1px rgba(0,0,0,.3)}.wf-loaded-stage2 .nlbf .nlbf-button{font-family:Mija}.mts{margin-top: 5px !important;}.mbn{margin-bottom: 0 !important;}</style></section><p class="mts mbn"><small class="promo-box__footer mtm block grey"><em>Once a week. Useful tips on <a href="https://www.smashingmagazine.com/the-smashing-newsletter/">front-end &amp; UX</a>. Trusted by 207.000 friendly folks.</em></small></p></div></p>
</div>
</div>
<div class="feature-panel-right-col">
<div class="feature-panel-image">
<img
    loading="lazy"
    decoding="async"
    class="feature-panel-image-img"
    src="/images/smashing-cat/cat-firechat.svg"
    alt="Feature Panel"
    width="310"
    height="400"
/>

</div>

<p></div>
</aside>
</div></p>

<h2 id="implementing-the-system">Implementing The System</h2>

<p>The first step in the system implementation is allowing the user to select their images. There are different ways you can achieve this:</p>

<ul>
<li>You can use a simple <code>&lt;input type=&quot;file&quot;&gt;</code> element;</li>
<li>A drag-and-drop interface.</li>
</ul>

<p>I would advise that you use both. Some users prefer to use the drag-and-drop interface, while others think the only way to upload images is through the <code>&lt;input type=&quot;file&quot;&gt;</code> element. Having both options will help improve the user experience. You can also consider allowing users to paste images directly in the browser using the Clipboard API.</p>

<h3 id="registering-the-service-worker">Registering The Service Worker</h3>

<p>At the heart of this solution is the <a href="https://www.smashingmagazine.com/2016/02/making-a-service-worker/">service worker</a>. Our service worker is going to be responsible for retrieving the image from the <code>IndexedDB</code> store, uploading it when the internet connection is restored, and clearing the <code>IndexedDB</code> store when the image has been uploaded.</p>

<p>To use a service worker, you first have to register one:</p>

<div class="break-out">
<pre><code class="language-javascript">if ('serviceWorker' in navigator) {
  navigator.serviceWorker.register('/service-worker.js')
    .then(reg =&gt; console.log('Service Worker registered', reg))
    .catch(err =&gt; console.error('Service Worker registration failed', err));
}
</code></pre>
</div>

<h3 id="checking-for-network-connectivity">Checking For Network Connectivity</h3>

<p>Remember, the problem we are trying to solve is caused by <strong>unreliable network connectivity</strong>. If this problem does not exist, there is no point in trying to solve anything. Therefore, once the image is selected, we need to check if the user has a reliable internet connection before registering a sync event and storing the image in <code>IndexedDB</code>.</p>

<pre><code class="language-javascript">function uploadImage() {
  if (navigator.onLine) {
    // Upload Image
  } else {
    // register Sync Event
    // Store Images in IndexedDB
  }
}
</code></pre>

<p><strong>Note</strong>: I’m only using the <code>navigator.onLine</code> property here to demonstrate how the system would work. The <code>navigator.onLine</code> property is <strong>unreliable</strong>, and I would suggest you come up with a custom solution to check whether the user is connected to the internet or not. One way you can do this is by sending a ping request to a server endpoint you’ve created.</p>

<h3 id="registering-the-sync-event">Registering The Sync Event</h3>

<p>Once the network test fails, the next step is to register a sync event. The sync event needs to be registered at the point where the system fails to upload the image due to a poor internet connection.</p>

<pre><code class="language-javascript">async function registerSyncEvent() {
  if ('SyncManager' in window) {
    const registration = await navigator.serviceWorker.ready;
    await registration.sync.register('uploadImages');
    console.log('Background Sync registered');
  }
}
</code></pre>

<p>After registering the sync event, you need to listen for it in the service worker.</p>

<pre><code class="language-javascript">self.addEventListener('sync', (event) =&gt; {
  if (event.tag === 'uploadImages') {
    event.waitUntil(sendImages());
  }
});
</code></pre>

<p>The <code>sendImages</code> function is going to be an asynchronous process that will retrieve the image from <code>IndexedDB</code> and upload it to the server. This is what it’s going to look like:</p>

<pre><code class="language-javascript">async function sendImages() {
  try {
    // await image retrieval and upload
  } catch (error) {
    // throw error
  }
}
</code></pre>

<h3 id="opening-the-database">Opening The Database</h3>

<p>The first thing we need to do in order to store our image locally is to open an <code>IndexedDB</code> store. As you can see from the code below, we are creating <strong>a global variable to store the database instance</strong>. The reason for doing this is that, subsequently, when we want to retrieve our image from <code>IndexedDB</code>, we wouldn’t need to write the code to open the database again.</p>

<div class="break-out">
<pre><code class="language-javascript">let database; // Global variable to store the database instance

function openDatabase() {
  return new Promise((resolve, reject) =&gt; {
    if (database) return resolve(database); // Return existing database instance 

    const request = indexedDB.open("myDatabase", 1);

    request.onerror = (event) =&gt; {
      console.error("Database error:", event.target.error);
      reject(event.target.error); // Reject the promise on error
    };

    request.onupgradeneeded = (event) =&gt; {
        const db = event.target.result;
        // Create the "images" object store if it doesn't exist.
        if (!db.objectStoreNames.contains("images")) {
          db.createObjectStore("images", { keyPath: "id" });
        }
        console.log("Database setup complete.");
    };

    request.onsuccess = (event) =&gt; {
      database = event.target.result; // Store the database instance globally
      resolve(database); // Resolve the promise with the database instance
    };
  });
}
</code></pre>
</div>

<div class="partners__lead-place"></div>

<h3 id="storing-the-image-in-indexeddb">Storing The Image In IndexedDB</h3>

<p>With the <code>IndexedDB</code> store open, we can now store our images.</p>

<blockquote>Now, you may be wondering why an easier solution like <code>localStorage</code> wasn’t used for this purpose.<br /><br />The reason for that is that <code>IndexedDB</code> operates asynchronously and doesn’t block the main JavaScript thread, whereas <code>localStorage</code> runs synchronously and can block the JavaScript main thread if it is being used.</blockquote>

<p>Here’s how you can store the image in <code>IndexedDB</code>:</p>

<div class="break-out">
<pre><code class="language-javascript">async function storeImages(file) {
  // Open the IndexedDB database.
  const db = await openDatabase();
  // Create a transaction with read and write access.
  const transaction = db.transaction("images", "readwrite");
  // Access the "images" object store.
  const store = transaction.objectStore("images");
  // Define the image record to be stored.
  const imageRecord = {
    id: IMAGE&#95;ID,   // a unique ID
    image: file     // Store the image file (Blob)
  };
  // Add the image record to the store.
  const addRequest = store.add(imageRecord);
  // Handle successful addition.
  addRequest.onsuccess = () =&gt; console.log("Image added successfully!");
  // Handle errors during insertion.
  addRequest.onerror = (e) =&gt; console.error("Error storing image:", e.target.error);
}
</code></pre>
</div>

<p>With the images stored and the background sync set, the system is ready to upload the image whenever the network connection is restored.</p>

<h3 id="retrieving-and-uploading-the-images">Retrieving And Uploading The Images</h3>

<p>Once the network connection is restored, the sync event will fire, and the service worker will retrieve the image from <code>IndexedDB</code> and upload it.</p>

<div class="break-out">
<pre><code class="language-javascript">async function retrieveAndUploadImage(IMAGE&#95;ID) {
  try {
    const db = await openDatabase(); // Ensure the database is open
    const transaction = db.transaction("images", "readonly");
    const store = transaction.objectStore("images");
    const request = store.get(IMAGE&#95;ID);
    request.onsuccess = function (event) {
      const image = event.target.result;
      if (image) {
        // upload Image to server here
      } else {
        console.log("No image found with ID:", IMAGE&#95;ID);
      }
    };
    request.onerror = () =&gt; {
        console.error("Error retrieving image.");
    };
  } catch (error) {
    console.error("Failed to open database:", error);
  }
}
</code></pre>
</div>

<h3 id="deleting-the-indexeddb-database">Deleting The IndexedDB Database</h3>

<p>Once the image has been uploaded, the <code>IndexedDB</code> store is no longer needed. Therefore, it should be deleted along with its content to free up storage.</p>

<div class="break-out">
<pre><code class="language-javascript">function deleteDatabase() {
  // Check if there's an open connection to the database.
  if (database) {
    database.close(); // Close the database connection
    console.log("Database connection closed.");
  }

  // Request to delete the database named "myDatabase".
  const deleteRequest = indexedDB.deleteDatabase("myDatabase");

  // Handle successful deletion of the database.
  deleteRequest.onsuccess = function () {
    console.log("Database deleted successfully!");
  };

  // Handle errors that occur during the deletion process.
  deleteRequest.onerror = function (event) {
    console.error("Error deleting database:", event.target.error);
  };

  // Handle cases where the deletion is blocked (e.g., if there are still open connections).
  deleteRequest.onblocked = function () {
    console.warn("Database deletion blocked. Close open connections and try again.");
  };
}
</code></pre>
</div>
    

<p>With that, the entire process is complete!</p>

<div class="partners__lead-place"></div>

<h2 id="considerations-and-limitations">Considerations And Limitations</h2>

<p>While we’ve done a lot to help improve the experience by supporting offline uploads, the system is not without its limitations. I figured I would specifically call those out because it’s worth knowing where this solution might fall short of your needs.</p>

<ul>
<li><strong>No Reliable Internet Connectivity Detection</strong><br />
JavaScript does not provide a foolproof way to detect online status. For this reason, you need to come up with a custom solution for detecting online status.</li>
<li><strong>Chromium-Only Solution</strong><br />
The Background Sync API is currently <a href="https://developer.mozilla.org/en-US/docs/Web/API/Background_Synchronization_API#browser_compatibility">limited to Chromium-based browsers</a>. As such, this solution is only supported by Chromium browsers. That means you will need a more robust solution if you have the majority of your users on non-Chromium browsers.</li>
<li><strong><code>IndexedDB</code> Storage Policies</strong><br />
Browsers impose storage limitations and eviction policies for <code>IndexedDB</code>. For instance, in Safari, data stored in <code>IndexedDB</code> has a lifespan of seven days if the user doesn’t interact with the website. This is something you should bear in mind if you do come up with an alternative for the background sync API that supports Safari.</li>
</ul>

<h2 id="enhancing-the-user-experience">Enhancing The User Experience</h2>

<p>Since the entire process happens in the background, we need a way to inform the users when images are stored, waiting to be uploaded, or have been successfully uploaded. Implementing certain <strong>UI elements</strong> for this purpose will indeed enhance the experience for the users. These UI elements may include toast notifications, upload status indicators like spinners (to show active processes), progress bars (to show state progress), network status indicators, or buttons to provide retry and cancel options.</p>

<h2 id="wrapping-up">Wrapping Up</h2>

<p>Poor internet connectivity can disrupt the user experience of a web application. However, by leveraging PWA technologies such as <code>IndexedDB</code>, service workers, and the Background Sync API, developers can help improve the reliability of web applications for their users, especially those in areas with unreliable internet connectivity.</p>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(gg, yk)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item><item><author>Matt Zeunert</author><title>How To Fix Largest Contentful Paint Issues With Subpart Analysis</title><link>https://www.smashingmagazine.com/2025/03/how-to-fix-largest-contentful-issues-with-subpart-analysis/</link><pubDate>Thu, 06 Mar 2025 10:00:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2025/03/how-to-fix-largest-contentful-issues-with-subpart-analysis/</guid><description>Struggling with slow Largest Contentful Paint (LCP)? Newly introduced by Google, LCP subparts help you pinpoint where page load delays come from. Now, in the Chrome UX Report, this data provides real visitor insights to speed up your site and boost rankings. Matt Zeunert unpacks what LCP subparts are, what they mean for your website speed, and how you can measure them.</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2025/03/how-to-fix-largest-contentful-issues-with-subpart-analysis/" />
              <title>How To Fix Largest Contentful Paint Issues With Subpart Analysis</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>How To Fix Largest Contentful Paint Issues With Subpart Analysis</h1>
                  
                    
                    <address>Matt Zeunert</address>
                  
                  <time datetime="2025-03-06T10:00:00&#43;00:00" class="op-published">2025-03-06T10:00:00+00:00</time>
                  <time datetime="2025-03-06T10:00:00&#43;00:00" class="op-modified">2026-02-09T03:03:08+00:00</time>
                </header>
                <p>This article is sponsored by <b>DebugBear</b></p>
                

<p>The <a href="https://www.debugbear.com/docs/metrics/largest-contentful-paint?utm_campaign=sm-9">Largest Contentful Paint</a> (LCP) in Core Web Vitals measures how quickly a website loads from a visitor’s perspective. It looks at how long after opening a page the largest content element becomes visible. If your website is loading slowly, that’s bad for user experience and can also cause your site to <a href="https://developers.google.com/search/docs/appearance/page-experience#ranking">rank lower in Google</a>.</p>

<p>When trying to fix LCP issues, it’s not always clear what to focus on. Is the server too slow? Are images too big? Is the content not being displayed? Google has been working to address that recently by introducing <a href="https://www.debugbear.com/blog/lcp-subparts?utm_campaign=sm-9">LCP subparts</a>, which tell you where page load delays are coming from. They’ve also added this data to the <a href="https://www.debugbear.com/blog/chrome-user-experience-report?utm_campaign=sm-9">Chrome UX Report</a>, allowing you to see what causes delays for real visitors on your website!</p>

<p>Let’s take a look at what the LCP subparts are, what they mean for your website speed, and how you can measure them.</p>

<h2 id="the-four-lcp-subparts">The Four LCP Subparts</h2>

<p>LCP subparts split the Largest Contentful Paint metric into four different components:</p>

<ol>
<li><strong>Time to First Byte (TTFB)</strong>: How quickly the server responds to the document request.</li>
<li><strong>Resource Load Delay</strong>: Time spent before the LCP image starts to download.</li>
<li><strong>Resource Load Time</strong>: Time spent downloading the LCP image.</li>
<li><strong>Element Render Delay</strong>: Time before the LCP element is displayed.</li>
</ol>

<p>The resource timings only apply if the largest page element is an image or background image. For text elements, the Load Delay and Load Time components are always zero.</p>

<h2 id="how-to-measure-lcp-subparts">How To Measure LCP Subparts</h2>

<p>One way to measure how much each component contributes to the LCP score on your website is to use DebugBear’s <a href="https://www.debugbear.com/test/website-speed?utm_campaign=sm-9">website speed test</a>. Expand the Largest Contentful Paint metric to see subparts and other details related to your LCP score.</p>

<p>Here, we can see that TTFB and image Load Duration together account for 78% of the overall LCP score. That tells us that these two components are the most impactful places to start optimizing.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/1-lcp-subparts.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="441"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/1-lcp-subparts.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/1-lcp-subparts.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/1-lcp-subparts.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/1-lcp-subparts.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/1-lcp-subparts.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/1-lcp-subparts.png"
			
			sizes="100vw"
			alt="LCP Subparts"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/1-lcp-subparts.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>What’s happening during each of these stages? A network <a href="https://www.debugbear.com/docs/waterfall?utm_campaign=sm-9">request waterfall</a> can help us understand what resources are loading through each stage.</p>

<p>The LCP Image Discovery view filters the waterfall visualization to just the resources that are relevant to displaying the Largest Contentful Paint image. In this case, each of the first three stages contains one request, and the final stage finishes quickly with no new resources loaded. But that depends on your specific website and won’t always be the case.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/2-lcp-image-discovery.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="331"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/2-lcp-image-discovery.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/2-lcp-image-discovery.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/2-lcp-image-discovery.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/2-lcp-image-discovery.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/2-lcp-image-discovery.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/2-lcp-image-discovery.png"
			
			sizes="100vw"
			alt="LCP image discovery"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/2-lcp-image-discovery.png'>Large preview</a>)
    </figcaption>
  
</figure>

<h2 id="time-to-first-byte">Time To First Byte</h2>

<p>The first step to display the largest page element is fetching the document HTML. We recently published an <a href="https://www.smashingmagazine.com/2025/02/time-to-first-byte-beyond-server-response-time/">article about how to improve the TTFB metric</a>.</p>

<p>In this example, we can see that creating the server connection doesn’t take all that long. Most of the time is spent waiting for the server to generate the page HTML. So, to improve the TTFB, we need to speed up that process or cache the HTML so we can skip the HTML generation entirely.</p>

<h2 id="resource-load-delay">Resource Load Delay</h2>

<p>The “resource” we want to load is the LCP image. Ideally, we just have an <code>&lt;img&gt;</code> tag near the top of the HTML, and the browser finds it right away and starts loading it.</p>

<p>But sometimes, we get a <a href="https://www.debugbear.com/blog/lcp-resource-load-delay?utm_campaign=sm-9">Load Delay</a>, as is the case here. Instead of loading the image directly, the page uses <code>lazysize.js</code>, <strong>an image lazy loading library</strong> that only loads the LCP image once it has detected that it will appear in the viewport.</p>

<p>Part of the Load Delay is caused by having to download that JavaScript library. But the browser also needs to complete the page layout and start rendering content before the library will know that the image is in the viewport. After finishing the request, there’s a CPU task (in orange) that leads up to the <a href="https://www.debugbear.com/docs/metrics/first-contentful-paint?utm_campaign=sm-9">First Contentful Paint</a> milestone, when the page starts rendering. Only then does the library trigger the LCP image request.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/3-load-delay.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="255"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/3-load-delay.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/3-load-delay.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/3-load-delay.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/3-load-delay.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/3-load-delay.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/3-load-delay.png"
			
			sizes="100vw"
			alt="Load Delay"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/3-load-delay.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>How do we optimize this? First of all, instead of using a lazy loading library, you can use the native <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#loading"><code>loading=&quot;lazy&quot;</code> image attribute</a>. That way, loading images <strong>no longer depends on first loading JavaScript code</strong>.</p>

<p>But more specifically, <a href="https://www.debugbear.com/docs/lcp-lazily-loaded?utm_campaign=sm-9">the LCP image should not be lazily loaded</a>. That way, the browser can start loading it as soon as the HTML code is ready. According to Google, you should aim to <a href="https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay">eliminate resource load delay entirely</a>.</p>

<h2 id="resources-load-duration">Resources Load Duration</h2>

<p>The <a href="https://www.debugbear.com/blog/lcp-resource-load-duration?utm_campaign=sm-9">Load Duration subpart</a> is probably the most straightforward: you need to download the LCP image before you can display it!</p>

<p>In this example, the image is loaded from the same domain as the HTML. That’s good because the browser doesn’t have to connect to a new server.</p>

<p>Other techniques you can use to reduce load delay:</p>

<ul>
<li>Use a <a href="https://www.debugbear.com/blog/image-formats?utm_campaign=sm-9">modern image format</a> that provides better compression.</li>
<li>Load images at a size that <a href="https://developer.chrome.com/docs/lighthouse/performance/uses-responsive-images">matches the size they are displayed at</a>.</li>
<li>Deprioritize other resources that might <a href="https://www.debugbear.com/blog/bandwidth-competition-page-speed?utm_campaign=sm-9">compete with the LCP image</a>.</li>
</ul>

<h2 id="element-render-delay">Element Render Delay</h2>

<p>The fourth and final LCP component, <a href="https://www.debugbear.com/blog/lcp-render-delay?utm_campaign=sm-9">Render Delay</a>, is often the most confusing. The resource has loaded, but for some reason, the browser isn’t ready to show it to the user yet!</p>

<p>Luckily, in the example we’ve been looking at so far, the LCP image appears quickly after it’s been loaded. One common reason for render delay is that <strong>the LCP element is not an image</strong>. In that case, the render delay is caused by <strong>render-blocking scripts</strong> and <strong>stylesheets</strong>. The text can only appear after these have loaded and the browser has completed the rendering process.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/4-render-delay.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="395"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/4-render-delay.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/4-render-delay.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/4-render-delay.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/4-render-delay.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/4-render-delay.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/4-render-delay.png"
			
			sizes="100vw"
			alt="Render Delay"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/4-render-delay.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>Another reason you might see render delay is when the website <a href="https://www.debugbear.com/blog/preload-largest-contentful-paint-image?utm_campaign=sm-9">preloads the LCP image</a>. Preloading is a good idea, as it practically eliminates any load delay and ensures the image is loaded early.</p>

<p>However, if the image finishes downloading before the page is ready to render, you’ll see an increase in render delay on the page. And that’s fine! You’ve improved your website speed overall, but after optimizing your image, you’ve uncovered a new bottleneck to focus on.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/5-render-delay-preloaded-lcp-image.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="382"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/5-render-delay-preloaded-lcp-image.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/5-render-delay-preloaded-lcp-image.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/5-render-delay-preloaded-lcp-image.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/5-render-delay-preloaded-lcp-image.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/5-render-delay-preloaded-lcp-image.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/5-render-delay-preloaded-lcp-image.png"
			
			sizes="100vw"
			alt="Render Delay with preloaded LCP image"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/5-render-delay-preloaded-lcp-image.png'>Large preview</a>)
    </figcaption>
  
</figure>

<h2 id="lcp-subparts-in-real-user-crux-data">LCP Subparts In Real User CrUX Data</h2>

<p>Looking at the Largest Contentful Paint subparts in lab-based tests can provide a lot of insight into where you can optimize. But all too often, the LCP in <a href="https://www.debugbear.com/blog/lcp-lab-field-differences?utm_campaign=sm-9">the lab doesn’t match what’s happening for real users</a>!</p>

<p>That’s why, in February 2025, Google started <a href="https://developer.chrome.com/blog/crux-2025-02">including subpart data in the CrUX data report</a>. It’s not (yet?) included in PageSpeed Insights, but you can see those metrics in DebugBear’s “Web Vitals” tab.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/6-crux-lcp-subparts.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="523"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/6-crux-lcp-subparts.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/6-crux-lcp-subparts.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/6-crux-lcp-subparts.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/6-crux-lcp-subparts.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/6-crux-lcp-subparts.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/6-crux-lcp-subparts.png"
			
			sizes="100vw"
			alt="Subpart data in the CrUX data report"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/6-crux-lcp-subparts.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>One super useful bit of info here is <strong>the LCP resource type</strong>: it tells you how many visitors saw the LCP element as a text element or an image.</p>

<p>Even for the same page, different visitors will see slightly different content. For example, different elements are visible based on the device size, or some visitors will see a cookie banner while others see the actual page content.</p>

<p>To make the data easier to interpret, Google only reports subpart data for images.</p>

<blockquote>If the LCP element is usually text on the page, then the subparts info won’t be very helpful, as it won’t apply to most of your visitors.</blockquote>

<p>But breaking down text LCP is relatively easy: everything that’s not part of the TTFB score is render-delayed.</p>

<h2 id="track-subparts-on-your-website-with-real-user-monitoring">Track Subparts On Your Website With Real User Monitoring</h2>

<p><a href="https://www.smashingmagazine.com/2023/08/running-page-speed-test-monitoring-versus-measuring/">Lab data doesn’t always match what real users experience.</a> CrUX data is superficial, <strong>only reported for high-traffic pages</strong>, and takes at least <strong>4 weeks</strong> to fully update after a change has been rolled out.</p>

<p>That’s why a <a href="https://www.debugbear.com/real-user-monitoring?utm_campaign=sm-9">real-user monitoring tool like DebugBear</a> comes in handy when fixing your LCP scores. You can <strong>track scores across all pages</strong> on your website over time and get dedicated dashboards for each LCP subpart.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/7-dashboards-each-lcp-subpart.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="601"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/7-dashboards-each-lcp-subpart.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/7-dashboards-each-lcp-subpart.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/7-dashboards-each-lcp-subpart.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/7-dashboards-each-lcp-subpart.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/7-dashboards-each-lcp-subpart.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/7-dashboards-each-lcp-subpart.png"
			
			sizes="100vw"
			alt="Dashboards for each LCP subpart"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/7-dashboards-each-lcp-subpart.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>You can also <strong>review specific visitor experiences</strong>, see what the LCP image was for them, inspect a request waterfall, and check LCP subpart timings. <a href="https://www.debugbear.com/signup?utm_campaign=sm-9">Sign up for a free trial</a>.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/8-lcp-scores-visitor-experiences.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="582"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/8-lcp-scores-visitor-experiences.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/8-lcp-scores-visitor-experiences.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/8-lcp-scores-visitor-experiences.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/8-lcp-scores-visitor-experiences.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/8-lcp-scores-visitor-experiences.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/8-lcp-scores-visitor-experiences.png"
			
			sizes="100vw"
			alt="DebugBear tool where you can review visitor experiences and check LCP subpart timings"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/how-fix-largest-contentful-issues-subpart-analysis/8-lcp-scores-visitor-experiences.png'>Large preview</a>)
    </figcaption>
  
</figure>

<h2 id="conclusion">Conclusion</h2>

<p>Having more granular metric data available for the Largest Contentful Paint gives web developers a big leg up when making their website faster.</p>

<p>Including subparts in CrUX provides new insight into how real visitors experience your website and can tell if the optimizations you’re considering would really be impactful.</p>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(gg, yk)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item><item><author>Matt Zeunert</author><title>Time To First Byte: Beyond Server Response Time</title><link>https://www.smashingmagazine.com/2025/02/time-to-first-byte-beyond-server-response-time/</link><pubDate>Wed, 12 Feb 2025 17:00:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2025/02/time-to-first-byte-beyond-server-response-time/</guid><description>Optimizing web performance means looking beyond surface-level metrics. Time to First Byte (TTFB) is crucial, but improving it requires more than tweaking server response time. Matt Zeunert breaks down what TTFB is, what causes its poor score, and why reducing server response time alone isn’t enough for optimization and often won’t be the most impactful change you can make to your website.</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2025/02/time-to-first-byte-beyond-server-response-time/" />
              <title>Time To First Byte: Beyond Server Response Time</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>Time To First Byte: Beyond Server Response Time</h1>
                  
                    
                    <address>Matt Zeunert</address>
                  
                  <time datetime="2025-02-12T17:00:00&#43;00:00" class="op-published">2025-02-12T17:00:00+00:00</time>
                  <time datetime="2025-02-12T17:00:00&#43;00:00" class="op-modified">2026-02-09T03:03:08+00:00</time>
                </header>
                <p>This article is sponsored by <b>DebugBear</b></p>
                

<p>Loading your website HTML quickly has a big impact on visitor experience. After all, no page content can be displayed until after the first chunk of the HTML has been loaded. That’s why the <a href="https://www.debugbear.com/docs/metrics/time-to-first-byte?utm_campaign=sm-8">Time to First Byte</a> (TTFB) metric is important: it measures how soon after navigation the browser starts receiving the HTML response.</p>

<p>Generating the HTML document quickly plays a big part in minimizing TTFB delays. But actually, there’s a lot more to optimizing this metric. In this article, we’ll take a look at what else can cause poor TTFB and what you can do to fix it.</p>

<h2 id="what-components-make-up-the-time-to-first-byte-metric">What Components Make Up The Time To First Byte Metric?</h2>

<p>TTFB stands for Time <em>to</em> First Byte. But where does it measure <em>from</em>?</p>

<p>Different tools handle this differently. Some only count the time spent sending the HTTP request and getting a response, ignoring everything else that needs to happen first before the resource can be loaded. However, when looking at Google’s <a href="https://www.debugbear.com/docs/metrics/core-web-vitals?utm_campaign=sm-8">Core Web Vitals</a>, TTFB starts from the time <a href="https://developer.chrome.com/docs/crux/methodology/metrics#ttfb-metric">when the users start navigating to a new page</a>. That means TTFB includes:</p>

<ul>
<li>Cross-origin redirects,</li>
<li>Time spent connecting to the server,</li>
<li>Same-origin redirects, and</li>
<li>The actual request for the HTML document.</li>
</ul>

<p>We can see an example of this in this <a href="https://developer.mozilla.org/en-US/blog/optimize-web-performance/#working_with_network_request_waterfalls">request waterfall visualization</a>.</p>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/1-request-waterfall-visualization.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="290"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/1-request-waterfall-visualization.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/1-request-waterfall-visualization.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/1-request-waterfall-visualization.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/1-request-waterfall-visualization.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/1-request-waterfall-visualization.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/1-request-waterfall-visualization.png"
			
			sizes="100vw"
			alt="Request waterfall visualization"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/1-request-waterfall-visualization.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>The <a href="https://www.debugbear.com/blog/reduce-initial-server-response-time?utm_campaign=sm-8">server response time</a> here is only 183 milliseconds, or about 12% of the overall TTFB metric. Half of the time is instead spent on a cross-origin redirect &mdash; a separate HTTP request that returns a redirect response before we can even make the request that returns the website’s HTML code. And when we make that request, most of the time is spent on establishing the server connection.</p>

<p>Connecting to a server on the web typically takes three round trips on the network:</p>

<ol>
<li><strong>DNS:</strong> Looking up the server IP address.</li>
<li><strong>TCP:</strong> Establishing a reliable connection to the server.</li>
<li><strong>TLS:</strong> Creating a secure encrypted connection.</li>
</ol>

<h2 id="what-network-latency-means-for-time-to-first-byte">What Network Latency Means For Time To First Byte</h2>

<p>Let’s add up all the network round trips in the example above:</p>

<ul>
<li>2 server connections: 6 round trips.</li>
<li>2 HTTP requests: 2 round trips.</li>
</ul>

<p>That means that before we even get the first response byte for our page <strong>we actually have to send data back and forth between the browser and a server eight times!</strong></p>

<p>That’s where network latency comes in, or <a href="https://www.debugbear.com/blog/network-round-trip-time-latency?utm_campaign=sm-8">network round trip time</a> (RTT) if we look at the time it takes to send data to a server and receive a response in the browser. On a high-latency connection with a 150 millisecond RTT, making those eight round trips will take 1.2 seconds. So, even if the server always responds instantly, we can’t get a TTFB lower than that number.</p>

<p>Network latency depends a lot on the geographic distances between the visitor’s device and the server the browser is connecting to. You can see the impact of that in practice by running a <a href="https://www.debugbear.com/test/ttfb?utm_campaign=sm-8">global TTFB test</a> on a website. Here, I’ve tested a website that’s hosted in Brazil. We get good TTFB scores when testing from Brazil and the US East Coast. However, visitors from Europe, Asia, or Australia wait a while for the website to load.</p>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/2-global-ttfb-test.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="393"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/2-global-ttfb-test.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/2-global-ttfb-test.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/2-global-ttfb-test.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/2-global-ttfb-test.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/2-global-ttfb-test.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/2-global-ttfb-test.png"
			
			sizes="100vw"
			alt="Visualisation with a map of a global TTFB test"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/2-global-ttfb-test.png'>Large preview</a>)
    </figcaption>
  
</figure>

<h2 id="what-content-delivery-networks-mean-for-time-to-first-byte">What Content Delivery Networks Mean for Time to First Byte</h2>

<p>One way to speed up your website is by using a <a href="https://www.cloudflare.com/en-gb/learning/cdn/what-is-a-cdn/">Content Delivery Network</a> (CDN). These services provide a network of globally distributed server locations. Instead of each round trip going all the way to where your web application is hosted, browsers instead connect to a nearby CDN server (called an edge node). That greatly reduces the time spent on establishing the server connection, improving your overall TTFB metric.</p>

<p>By default, the actual HTML request still has to be sent to your web app. However, if your content isn’t dynamic, you can also <a href="https://www.debugbear.com/blog/cdn-cache?utm_campaign=sm-8">cache responses at the CDN edge node</a>. That way, the request can be served entirely through the CDN instead of data traveling all across the world.</p>

<p>If we run a TTFB test on a website that uses a CDN, we can see that each server response comes from a regional data center close to where the request was made. In many cases, we get a TTFB of under 200 milliseconds, thanks to the response already being cached at the edge node.</p>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/3-global-ttfb-test.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="787"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/3-global-ttfb-test.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/3-global-ttfb-test.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/3-global-ttfb-test.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/3-global-ttfb-test.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/3-global-ttfb-test.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/3-global-ttfb-test.png"
			
			sizes="100vw"
			alt="An expanded version of TTFB test with a list of test locations with its server responses"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/3-global-ttfb-test.png'>Large preview</a>)
    </figcaption>
  
</figure>

<h2 id="how-to-improve-time-to-first-byte">How To Improve Time To First Byte</h2>

<p>What you need to do to improve your website’s TTFB score depends on what its biggest contributing component is.</p>

<ul>
<li>A lot of time is spent establishing the connection: <strong>Use a global CDN.</strong></li>
<li>The server response is slow: <strong>Optimize your application code</strong> or <strong>cache the response</strong></li>
<li>Redirects delay TTFB: <a href="https://www.debugbear.com/blog/avoid-multiple-page-redirects?utm_campaign=sm-8"><strong>Avoid chaining redirects</strong></a> and <strong>optimize the server</strong> returning the redirect response.</li>
</ul>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/4-ttfb-details.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="314"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/4-ttfb-details.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/4-ttfb-details.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/4-ttfb-details.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/4-ttfb-details.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/4-ttfb-details.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/4-ttfb-details.png"
			
			sizes="100vw"
			alt="TTFB details, including Redirect, DNS Lookup, TCP Connection, SSL Handshake, Response"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/4-ttfb-details.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>Keep in mind that TTFB depends on how visitors are accessing your website. For example, if they are logged into your application, the page content probably can’t be served from the cache. You may also see a spike in TTFB when running an ad campaign, as visitors are redirected through a click-tracking server.</p>

<h2 id="monitor-real-user-time-to-first-byte">Monitor Real User Time To First Byte</h2>

<p>If you want to get a breakdown of what TTFB looks like for different visitors on your website, you need <a href="https://www.debugbear.com/real-user-monitoring?utm_campaign=sm-8">real user monitoring</a>. That way, you can break down how visitor location, login status, or the referrer domain impact real user experience.</p>

<p><a href="https://www.debugbear.com/?utm_campaign=sm-8">DebugBear</a> can help you collect real user metrics for Time to First Byte, Google Core Web Vitals, and other page speed metrics. You can track individual TTFB components like TCP duration or redirect time and break down website performance by country, ad campaign, and more.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/5-time-to-first-byte-map.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="381"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/5-time-to-first-byte-map.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/5-time-to-first-byte-map.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/5-time-to-first-byte-map.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/5-time-to-first-byte-map.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/5-time-to-first-byte-map.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/5-time-to-first-byte-map.png"
			
			sizes="100vw"
			alt="Time to First Byte map"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/time-to-first-byte-beyond-server-response-time/5-time-to-first-byte-map.png'>Large preview</a>)
    </figcaption>
  
</figure>

<h2 id="conclusion">Conclusion</h2>

<p>By looking at everything that’s involved in serving the first byte of a website to a visitor, we’ve seen that just reducing server response time isn’t enough and often won’t even be the most impactful change you can make on your website.</p>

<p>Just because your website is fast in one location doesn’t mean it’s fast for everyone, as website speed varies based on where the visitor is accessing your site from.</p>

<p><strong>Content Delivery Networks</strong> are an incredibly powerful way to improve TTFB. Even if you don’t use any of their advanced features, just using their global server network saves a lot of time when establishing a server connection.</p>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(gg, yk)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item><item><author>Eleanor Hecks</author><title>The Importance Of Graceful Degradation In Accessible Interface Design</title><link>https://www.smashingmagazine.com/2024/12/importance-graceful-degradation-accessible-interface-design/</link><pubDate>Fri, 06 Dec 2024 09:00:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2024/12/importance-graceful-degradation-accessible-interface-design/</guid><description>Few things are as frustrating to a user as when a site won’t respond. Unfortunately, it’s also an all-too-common scenario. Many websites and apps depend on so many elements that one of any number of errors could cause the whole thing to fail. As prevalent as such instances may be, they’re preventable through the practice of graceful degradation.</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2024/12/importance-graceful-degradation-accessible-interface-design/" />
              <title>The Importance Of Graceful Degradation In Accessible Interface Design</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>The Importance Of Graceful Degradation In Accessible Interface Design</h1>
                  
                    
                    <address>Eleanor Hecks</address>
                  
                  <time datetime="2024-12-06T09:00:00&#43;00:00" class="op-published">2024-12-06T09:00:00+00:00</time>
                  <time datetime="2024-12-06T09:00:00&#43;00:00" class="op-modified">2026-02-09T03:03:08+00:00</time>
                </header>
                
                

<p>Graceful degradation is a design approach that ensures the basics of a website will still function even if specific individual parts of it stop working. The approach removes <strong>single points of failure</strong>: just because one thing stops working doesn’t mean the system as a whole fails. A site following this principle fails in pieces instead of all at once, so the most important features remain available when some components encounter an error.</p>

<p>The idea or the concept of single points of failure is well known in the manufacturing sector. It’s <a href="https://link.springer.com/article/10.1007/s00170-024-13223-5">one of the most common resilience</a> strategies in manufacturing and supply chain operations. A factory with multiple sources of material can keep working even when one supplier becomes unavailable. However, it’s become increasingly crucial to web development as user expectations around availability and functionality rise.</p>

<p><strong>Data center redundancy</strong> is a common example of graceful degradation in web development. By using multiple server components, websites ensure they’ll stay up when one or more servers fail. In a design context, it may look like guaranteeing the lack of support for a given feature in a user’s browser or device doesn’t render an app unusable.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/1-escalators.jpg">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="534"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/1-escalators.jpg 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/1-escalators.jpg 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/1-escalators.jpg 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/1-escalators.jpg 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/1-escalators.jpg 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/1-escalators.jpg"
			
			sizes="100vw"
			alt="Escalators"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Image source: <a href='https://unsplash.com/photos/architectural-photo-of-escalator-eBi0v1D_po8'>unsplash</a>. (<a href='https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/1-escalators.jpg'>Large preview</a>)
    </figcaption>
  
</figure>

<p>Escalators are a familiar real-world example of the same concept. When they stop working, they can still get people from one floor to the next by acting as stairs. They may not be as functional as they normally are, but they’re not entirely useless.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/2-bbc-page.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="654"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/2-bbc-page.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/2-bbc-page.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/2-bbc-page.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/2-bbc-page.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/2-bbc-page.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/2-bbc-page.png"
			
			sizes="100vw"
			alt="The BBC News webpage"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/2-bbc-page.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>The BBC News webpage is a good example of graceful degradation in web design. As this screenshot shows, the site prioritizes loading navigation and the text within a news story over images. Consequently, slow speeds or old, incompatible browser plugins may make pictures unavailable, but the site’s core function &mdash; sharing the news &mdash; is still accessible.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/3-adobe-express.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="396"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/3-adobe-express.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/3-adobe-express.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/3-adobe-express.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/3-adobe-express.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/3-adobe-express.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/3-adobe-express.png"
			
			sizes="100vw"
			alt="Adobe Express website with a pop-up that a browser is unsupported"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/3-adobe-express.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>In contrast, the Adobe Express website is an example of what happens without graceful degradation. Instead of making some features unavailable or dropping load times, the entire site is inaccessible on some browsers. Consequently, users have to update or switch software to use the web app, which isn’t great for accessibility.</p>

<div data-audience="non-subscriber" data-remove="true" class="feature-panel-container">

<aside class="feature-panel" style="">
<div class="feature-panel-left-col">

<div class="feature-panel-description"><p>Meet <strong><a data-instant href="/printed-books/image-optimization/">Image Optimization</a></strong>, Addy Osmani’s new practical guide to optimizing and delivering <strong>high-quality images</strong> on the web. Everything in one single <strong>528-pages</strong> book.</p>
<a data-instant href="https://www.smashingmagazine.com/printed-books/image-optimization/" class="btn btn--green btn--large" style="">Jump to table of contents&nbsp;↬</a></div>
</div>
<div class="feature-panel-right-col"><a data-instant href="https://www.smashingmagazine.com/printed-books/image-optimization/" class="feature-panel-image-link">
<div class="feature-panel-image"><picture><source type="image/avif" srcSet="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/2c669cf1-c6ef-4c87-9901-018b04f7871f/image-optimization-shop-cover-opt.avif" />
<img
    loading="lazy"
    decoding="async"
    class="feature-panel-image-img"
    src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/87fd0cfa-692e-459c-b2f3-15209a1f6aa7/image-optimization-shop-cover-opt.png"
    alt="Feature Panel"
    width="480"
    height="697"
/>
</picture>
</div>
</a>
</div>
</aside>
</div>

<h2 id="graceful-degradation-vs-progressive-enhancement">Graceful Degradation vs. Progressive Enhancement</h2>

<p>The graceful degradation approach acts as the opposite of <strong>progressive enhancement</strong> &mdash; an <a href="https://piccalil.li/blog/its-about-time-i-tried-to-explain-what-progressive-enhancement-actually-is/">approach in which a designer</a> builds the basics of a website and progressively adds features that are turned on only if a browser is capable of running them. Each layer of features is turned off by default, allowing for one seamless user experience designed to work for everyone.</p>

<p>There is much debate between designers about whether graceful degradation or progressive enhancement is the best way to build site functionality. In reality, though, both are important. Each method has unique <em>pros and cons</em>, so the two can complement each other to provide the most resilience.</p>

<p>Progressive enhancement is a good strategy when building a <em>new</em> site or app because you ensure a functional experience for everyone from the start. However, new standards and issues can emerge in the future, which is where graceful degradation comes in. This approach helps you <em>adjust</em> an existing website to comply with new accessibility standards or resolve a compatibility problem you didn’t notice earlier.</p>

<blockquote class="pull-quote">
  <p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aFocusing%20solely%20on%20one%20design%20principle%20or%20the%20other%20will%20limit%20accessibility.%20Progressive%20enhancement%20alone%20struggles%20to%20account%20for%20post-launch%20functionality%20issues,%20while%20graceful%20degradation%20alone%20may%20fail%20to%20provide%20the%20most%20feature-rich%20baseline%20experience.%20Combining%20both%20will%20produce%20the%20best%20result.%0a&url=https://smashingmagazine.com%2f2024%2f12%2fimportance-graceful-degradation-accessible-interface-design%2f">
      
Focusing solely on one design principle or the other will limit accessibility. Progressive enhancement alone struggles to account for post-launch functionality issues, while graceful degradation alone may fail to provide the most feature-rich baseline experience. Combining both will produce the best result.

    </a>
  </p>
  <div class="pull-quote__quotation">
    <div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
  </div>
</blockquote>

<h2 id="how-graceful-degradation-impacts-accessibility">How Graceful Degradation Impacts Accessibility</h2>

<p>Ensuring your site or app remains functional is crucial for accessibility. When core functions become unavailable, the platform is no longer accessible to anyone. On a smaller scale, if features like text-to-speech readers or video closed captioning stop working, users with sight difficulties may be unable to enjoy the site.</p>

<p>Graceful degradation’s impact on accessibility is all the larger when considering varying device capabilities. As the average person spends <a href="https://www.bdo.com/getmedia/fcbde42a-6a36-4e5f-be6b-143276d7cdd0/RCP_Smart-Retail_Insight_3-20_WEB.pdf?ext=.pdf">3.6 hours each day</a> on their phone, failing to ensure a site supports less powerful mobile browsers will alienate a considerable chunk of your audience. Even if some complex functions may not work on mobile, sacrificing those to keep the bulk of the website available on phones ensures broader accessibility.</p>

<p>Outdated browsers are another common accessibility issue you can address with graceful degradation. Consider this <a href="https://it.fdu.edu/tech-alert/adobe-flash-is-not-supported-on-the-fdu-network/">example from Fairleigh Dickinson University</a> about Adobe Flash, which most modern browsers no longer support.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/4-adobe-flash.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="558"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/4-adobe-flash.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/4-adobe-flash.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/4-adobe-flash.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/4-adobe-flash.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/4-adobe-flash.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/4-adobe-flash.png"
			
			sizes="100vw"
			alt="Adobe Flash"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/4-adobe-flash.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>Software still using Flash cannot use the multi-factor authentication feature in question. As a result, users with older programs can’t log in. Graceful degradation may compromise by making some functionality unavailable to Flash-supporting browsers while still allowing general access. That way, people don’t need to upgrade to use the service.</p>

<div class="partners__lead-place"></div>

<h2 id="how-to-incorporate-graceful-degradation-into-your-site">How to Incorporate Graceful Degradation Into Your Site</h2>

<p>Graceful degradation removes technological barriers to accessibility. In a broader sense, it also keeps your site or app running at all times, even amid unforeseen technical difficulties. While there are many ways you can achieve that, here are some general best practices to follow.</p>

<h3 id="identify-mission-critical-functions">Identify Mission-Critical Functions</h3>

<p>The first step in ensuring graceful degradation is determining what your <strong>core functions</strong> are. You can only guarantee the availability of mission-critical features once you know what’s essential and what isn’t.</p>

<p>Review your user data to see what your audience interacts with most &mdash; these are generally elements worth prioritizing. Anything related to site security, transactions, and readability is also crucial. Infrequently used features or elements like video players and interactive maps are nice to have but okay to sacrifice if you must to ensure mission-critical components remain available.</p>

<h3 id="build-redundancy">Build Redundancy</h3>

<p>Once you’ve categorized site functions by criticality, you can ensure redundancy for the most important ones. That may mean <strong>replicating elements in a few forms</strong> to work on varying browsers or devices. Alternatively, you could provide multiple services to carry out important functions, like supporting alternate payment methods or providing both video and text versions of content.</p>

<p>Remember that redundancy applies to the hardware your platform runs on, too. The Uptime Institute <a href="https://uptimeinstitute.com/tiers">classifies data centers into tiers</a>, which you can use to determine what redundant systems you need. Similarly, make sure you can run your site on multiple servers to avoid a crash should one go down.</p>

<h3 id="accommodate-all-browsers">Accommodate All Browsers</h3>

<p>Remember that graceful degradation is also about supporting software and hardware of varying capabilities. One of the most important considerations under that umbrella for web design is to <strong>accommodate outdated browsers</strong>.</p>

<p>While <a href="https://designerly.com/how-to-make-a-mobile-version-of-your-website/">mobile devices don’t support Flash</a>, some older versions of desktop browsers still use it. You can work with both by avoiding Flash &mdash; you can often use HTML5 instead &mdash; but not requiring users to have a non-Flash-supporting browser. Similarly, you can offer low-bandwidth, simple alternatives to any features that take up considerable processing power to keep things accessible on older systems.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/5-microsoft-edge-error-message.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="403"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/5-microsoft-edge-error-message.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/5-microsoft-edge-error-message.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/5-microsoft-edge-error-message.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/5-microsoft-edge-error-message.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/5-microsoft-edge-error-message.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/5-microsoft-edge-error-message.png"
			
			sizes="100vw"
			alt="Microsoft Edge error message"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/importance-graceful-degradation-accessible-interface-design/5-microsoft-edge-error-message.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>Remember to <strong>pay attention to newer software’s security settings</strong>, too. Error messages like this one <a href="https://answers.microsoft.com/en-us/microsoftedge/forum/all/i-am-trying-to-go-to-a-website-but-it-says-that/82486fec-02b2-4e83-9ca6-c9f8088d8d97">a Microsoft user posted about</a> can appear if a site does not support some browsers’ updated security protocols. Always keep up with updates from popular platforms like Chrome and Safari to meet these standards and avoid such access issues.</p>

<h3 id="employ-load-balancing-and-caching">Employ Load Balancing and Caching</h3>

<p>Load balancing is another crucial step in graceful degradation. Many cloud services automatically distribute traffic between server resources to prevent overloading. Enabling this also ensures that requests can be processed on a different part of the system if another fails.</p>

<p>Caching is similar. By storing critical data, you build a fallback plan if an external service or application program interface (API) doesn’t work. When the API doesn’t respond, you can load the cached data instead. As a result, <a href="https://aws.amazon.com/caching/">caches significantly reduce latency</a> in many cases, but you should be aware that you can’t cache everything. Focus on the most critical functions.</p>

<h3 id="test-before-publishing">Test Before Publishing</h3>

<p>Finally, be sure to test your website for accessibility issues before taking it live. Access it from multiple devices, including various browser versions. See if you can run it on a single server to test its ability to balance loads.</p>

<p>You likely won’t discover all possible errors in testing, but it’s better to catch some than none. Remember to test your site’s functionality before any updates or redesigns, too.</p>

<div class="partners__lead-place"></div>

<h2 id="getting-started-with-graceful-degradation">Getting Started With Graceful Degradation</h2>

<p>Designers, both big and small, can start their graceful degradation journey by tweaking some settings with their web hosting service. AWS <a href="https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/rel_mitigate_interaction_failure_graceful_degradation.html">offers guidance for managing failures</a> you can use to build degradation into your site’s architecture. Hosting providers should also allow you to upgrade your storage plan and configure your server settings to provide redundancy and balance loads.</p>

<p>Businesses large enough to run their own data centers should install redundant server capacity and uninterruptible power supplies to keep things running. Smaller organizations can instead rely on their code, using semantic HTML to keep it simple enough for multiple browsers. Programming nonessential things like images and videos to stop when bandwidth is low will also help.</p>

<p>Virtualization systems like <a href="https://kubernetes.io/">Kubernetes</a> are also useful as a way to scale site capacity and help load elements separately from one another to maintain accessibility. Testing tools like <a href="https://www.browserstack.com/">BrowserStack</a>, <a href="https://wave.webaim.org/">WAVE</a>, and <a href="https://www.htmlvalidator.com/">CSS HTML Validator</a> can assist you by revealing if your site has functional issues on some browsers or for certain users.</p>

<p>At its core, web accessibility is about <strong>ensuring a platform works as intended for all people</strong>. While design features may be the most obvious part of that goal, technical defenses also play a role. A site is only accessible when it works, so you must <strong>keep it functional</strong>, even when unexpected hiccups occur.</p>

<p>Graceful degradation is not a perfect solution, but it prevents a small issue from becoming a larger one. Following these five steps to implement it on your website or app will ensure that your work in creating an accessible design doesn’t go to waste.</p>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(yk)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item><item><author>Victor Ponamariov</author><title>How To Manage Dangerous Actions In User Interfaces</title><link>https://www.smashingmagazine.com/2024/09/how-manage-dangerous-actions-user-interfaces/</link><pubDate>Fri, 27 Sep 2024 15:00:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2024/09/how-manage-dangerous-actions-user-interfaces/</guid><description>One of the main laws that applies to almost everything in our lives, including building digital products, is Murphy’s Law: “Anything that can go wrong will go wrong.” Our goal is to prevent things from going wrong and, if they do, mitigate the consequences. In this article, Victor Ponamarev explores different strategies for preventing users from making mistakes.</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2024/09/how-manage-dangerous-actions-user-interfaces/" />
              <title>How To Manage Dangerous Actions In User Interfaces</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>How To Manage Dangerous Actions In User Interfaces</h1>
                  
                    
                    <address>Victor Ponamariov</address>
                  
                  <time datetime="2024-09-27T15:00:00&#43;00:00" class="op-published">2024-09-27T15:00:00+00:00</time>
                  <time datetime="2024-09-27T15:00:00&#43;00:00" class="op-modified">2026-02-09T03:03:08+00:00</time>
                </header>
                
                

<p>By definition, an interface is a layer between the user and a system, serving the purpose of communication between them. Interacting with the interface usually requires users to perform certain actions.</p>

<p>Different actions can lead to various outcomes, some of which might be critical.</p>

<p>While we often need to provide additional protection in case users attempt to perform dangerous or irreversible actions, It’s good to remember that one of <a href="https://www.nngroup.com/articles/ten-usability-heuristics/">the ten usability heuristics</a> called “Error Prevention” says:</p>

<blockquote>“Good error messages are important, but the best designs carefully <strong>prevent problems from occurring in the first place</strong>. Either eliminate error-prone conditions or check for them and present users with a confirmation option before they commit to the action.”</blockquote>

<h2 id="what-is-a-dangerous-action">What Is A Dangerous Action?</h2>

<p>Surprisingly, when we talk about dangerous actions, it doesn’t necessarily mean that something is being deleted.</p>

<p>Here’s an example of a dangerous action from the banking application I use:</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/1-screenshot-bank-application.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="636"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/1-screenshot-bank-application.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/1-screenshot-bank-application.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/1-screenshot-bank-application.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/1-screenshot-bank-application.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/1-screenshot-bank-application.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/1-screenshot-bank-application.png"
			
			sizes="100vw"
			alt="A screenshot from a bank application providing a loan."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      A screenshot from a bank application providing a loan. (<a href='https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/1-screenshot-bank-application.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>The bank approved a loan for me, and as soon as I clicked <em>“Get Money,”</em> it meant that I had signed the necessary documents and accepted the loan. All I have to do is tap the yellow button, and I’ll get the money.</p>

<p>As a result of an accidental tap, you might end up taking a loan when you didn’t intend to, which is why this action can be considered significant and dangerous.</p>

<p><strong>Therefore, a dangerous action does not necessarily mean deleting something.</strong></p>

<p>Some examples may include the following:</p>

<ul>
<li>Sending an email,</li>
<li>Placing an order,</li>
<li>Publishing a post,</li>
<li>Making a bank transaction,</li>
<li>Signing a legal document,</li>
<li>Permanently blocking a user,</li>
<li>Granting or revoking permissions.

<br /></li>
</ul>

<div data-audience="non-subscriber" data-remove="true" class="feature-panel-container">

<aside class="feature-panel" style="">
<div class="feature-panel-left-col">

<div class="feature-panel-description"><p>Meet <strong><a data-instant href="/printed-books/typescript-in-50-lessons/">“TypeScript in 50 Lessons”</a></strong>, our shiny new guide to TypeScript. With detailed <strong>code walkthroughs</strong>, hands-on examples and common gotchas. For developers who know enough <strong>JavaScript</strong> to be dangerous.</p>
<a data-instant href="/printed-books/typescript-in-50-lessons/" class="btn btn--green btn--large" style="">Jump to table of contents&nbsp;↬</a></div>
</div>
<div class="feature-panel-right-col"><a data-instant href="/printed-books/typescript-in-50-lessons/" class="feature-panel-image-link">
<div class="feature-panel-image"><picture><source type="image/avif" srcSet="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/2732dfe9-e1ee-41c3-871a-6252aeda741c/typescript-panel.avif" />
<img
    loading="lazy"
    decoding="async"
    class="feature-panel-image-img"
    src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/c2f2c6d6-4e85-449a-99f5-58bd053bc846/typescript-shop-cover-opt.png"
    alt="Feature Panel"
    width="481"
    height="698"
/>
</picture>
</div>
</a>
</div>
</aside>
</div>

<h2 id="ways-to-confirm-dangerous-actions">Ways To Confirm Dangerous Actions</h2>

<p>There are many methods to prevent users from losing their data or taking irreversible actions unintentionally. One approach is to ask users to explicitly confirm their actions.</p>

<p>There are several ways to implement this, each with its own pros and cons.</p>

<h3 id="modal-dialogs">Modal Dialogs</h3>

<p>First of all, we should understand the difference between modal and non-modal dialogs. It’s better to think about <strong><em>modality state</em></strong> since dialogs, popups, alerts &mdash; all of these might be presented either in the modal state or not. I will use the term dialogs as a general reference, but the keyword here is <strong>modality.</strong></p>

<blockquote>“Modality is a design technique that presents content in a separate, dedicated mode that prevents interaction with the parent view and requires an explicit action to dismiss.”<br /><br />&mdash; <a href="https://developer.apple.com/design/human-interface-guidelines/modality">Apple design guides</a></blockquote>

<p><strong>Modal dialogs require immediate user action.</strong> In other words, you cannot continue working with an application until you respond in some way.</p>

<p><strong>Non-modal dialogs, on the other hand, allow you to keep using the application</strong> without interruption. A common example of a non-modal element is a toast message that appears in the corner of the screen and does not require you to do anything to continue using the app.</p>

<p>When used properly, modal dialogs are an effective way to prevent accidental clicks on dangerous actions.</p>

<p>The main problem with them is that if they are used to confirm routine actions (such as marking a task as done), they can cause irritation and create a habit of mindlessly confirming them on autopilot.</p>

<p>However, this is one of the most popular methods. Besides, it can be combined with other methods, so let’s dive into it deeper.</p>

<h4 id="when-to-use-them">When To Use Them</h4>

<p>Use modal dialogs when a user action will have serious consequences, especially if the result of the action is irreversible. Typical cases include deleting a post or project, confirming a transaction, and so on.</p>

<p>It depends on what kind of action users want to take, but the main thing to keep in mind is <strong><em>how serious the consequences are and whether the action is reversible or not.</em></strong></p>

<h4 id="things-to-keep-in-mind">Things To Keep In Mind</h4>

<ol>
<li><strong>Avoid vague language.</strong><br />
If you ask users, <em>“Are you sure?”</em> chances are, they will not have any doubts.</li>
<li>In the title, specify what exactly will happen or which entity will be affected (e.g., project name, user name, amount of money).</li>
<li><strong>Provide an icon that indicates that the action is dangerous</strong>.<br />
It both increases the chances that users will not automatically confirm it and is <strong>good for accessibility reasons</strong> (people with color blindness will notice the icon even if it appears grey to them, signaling its importance).</li>
<li>In the description, be specific and highlight the necessary information.</li>
<li>The CTA button should also contain <strong>a word that reflects the action</strong>.<br />
Instead of <em>“Yes”</em> or <em>“Confirm,”</em> use more descriptive options like <em>“Delete,”</em> <em>“Pay $97,”</em> <em>“Make Transaction,”</em> <em>“Send Message,”</em> and so on &mdash; including the entity name or amount of money in the button is also helpful. Compare: <em>“Confirm”</em> versus <em>“Pay $97.”</em> The latter is much more specific.</li>
</ol>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/2-general-language-confirmation-dialogs.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="614"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/2-general-language-confirmation-dialogs.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/2-general-language-confirmation-dialogs.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/2-general-language-confirmation-dialogs.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/2-general-language-confirmation-dialogs.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/2-general-language-confirmation-dialogs.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/2-general-language-confirmation-dialogs.png"
			
			sizes="100vw"
			alt="Comparison of two modal dialogs for confirming a dangerous action."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Avoid general language in confirmation dialogs. Instead, be as specific as possible. (<a href='https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/2-general-language-confirmation-dialogs.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p><strong>However, this might not be enough.</strong></p>

<p>In some cases, you may require an extra action. A typical solution is to ask users to type something (e.g., a project name) to unblock the CTA button.</p>

<p>Here are a few examples:</p>

<p><a href="https://convertkit.com/"><strong>ConvertKit</strong></a> asks users to type <em>“DO IT”</em> when removing subscribers.</p>

<p><strong>Pro tip</strong>: <em>Note that they placed the buttons on the left side! This is a nice example of applying <a href="https://lawsofux.com/law-of-proximity/">proximity law</a>. It seems reasonable since the submit button is closer to the form (even if it consists of only one input).</em></p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/3-convertkit.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="450"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/3-convertkit.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/3-convertkit.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/3-convertkit.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/3-convertkit.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/3-convertkit.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/3-convertkit.png"
			
			sizes="100vw"
			alt="Confirmation modal dialog from ConvertKit asking you to confirm deleting subscribers."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      ConvertKit asks for an extra action if you want to delete your subscribers. (<a href='https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/3-convertkit.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p><a href="https://resend.com/"><strong>Resend</strong></a> asks users to type <em>“DELETE”</em> if they want to delete an API key, which could have very serious consequences. The API key might be used in many of your apps, and you don’t want to break anything.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/4-resend-modal-dialog.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="450"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/4-resend-modal-dialog.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/4-resend-modal-dialog.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/4-resend-modal-dialog.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/4-resend-modal-dialog.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/4-resend-modal-dialog.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/4-resend-modal-dialog.png"
			
			sizes="100vw"
			alt="Resend modal dialog asking you to confirm API key deletion."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Resend asks for extra action as well if you want to delete your API key. (<a href='https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/4-resend-modal-dialog.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>This modal is one of the best examples of following the best practices:</p>

<ul>
<li>The title says what the action is (<em>“Delete API Key”</em>).</li>
<li>In the text, they mentioned the name of the API Key in bold and in a different color (<em>“Onboarding”</em>).</li>
<li>The red label that the action can not be undone makes it clearer that this is a serious action.</li>
<li>Extra action is required (typing <em>“DELETE”</em>).</li>
<li>The CTA button has both a color indicator (red usually is used for destructive actions) and a proper label &mdash; <em>“Delete API Key”</em>. Not a general word, e.g., <em>“Confirm”</em> or <em>“Delete.”</em></li>
</ul>

<p>Notice that Resend also places buttons on the left side, just as ConvertKit does.</p>

<p><strong>Note</strong>: <em>While generally <a href="https://adamsilver.io/blog/the-problem-with-disabled-buttons-and-what-to-do-instead/">disabling submit buttons is considered bad practice</a>, this is one of the cases where it is acceptable. The dialog’s request is clear and straightforward both in ConvertKit and Resend examples.</em></p>

<p>Moreover, we can even skip the submit button altogether. This applies to cases where users are asked to input an OTP, PIN, or 2FA code. For example, the bank app I use does not even have a log in button.</p>

<p>On the one hand, we still ask users to perform an extra action (input the code). On the other hand, it eliminates the need for an additional click.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/5-bank-application-no-sumbit-button.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="530"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/5-bank-application-no-sumbit-button.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/5-bank-application-no-sumbit-button.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/5-bank-application-no-sumbit-button.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/5-bank-application-no-sumbit-button.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/5-bank-application-no-sumbit-button.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/5-bank-application-no-sumbit-button.png"
			
			sizes="100vw"
			alt="A screenshot of the login page of a bank app that asks you for a PIN code only and does not have the submit button."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      A bank application asks for your code to log in without a submit button. (<a href='https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/5-bank-application-no-sumbit-button.png'>Large preview</a>)
    </figcaption>
  
</figure>

<h4 id="accessibility-concerns">Accessibility Concerns</h4>

<p>There is ongoing debate about whether or not to include a submit button when entering a simple OTP. By “simple,” I mean one that consists of 4-6 digits.</p>

<p>While I am not an accessibility expert, I don’t see any major downsides to omitting the submit button in straightforward cases like this.</p>

<p>First, the OTP step is typically an intermediate part of the user flow, meaning a form with four inputs appears during some process. The first input is automatically focused, and users can navigate through them using the Tab key.</p>

<p>The key point is that, due to the small amount of information required (four digits), it is generally acceptable to auto-submit the form as soon as the digits are entered, even if a mistake is made.</p>

<p>On the one hand, if we care about accessibility, nothing stops us from providing users control over the inputs. On the other hand, auto-submission streamlines the process in most cases, and in the rare event of an error, the user can easily re-enter the digits.</p>

<h3 id="danger-zones">Danger Zones</h3>

<p>For the most critical actions, you may use the so-called “Danger zone” pattern.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/6-github-repository-danger-zone-settings.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="450"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/6-github-repository-danger-zone-settings.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/6-github-repository-danger-zone-settings.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/6-github-repository-danger-zone-settings.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/6-github-repository-danger-zone-settings.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/6-github-repository-danger-zone-settings.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/6-github-repository-danger-zone-settings.png"
			
			sizes="100vw"
			alt="Github repository danger zone settings."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Github repository danger zone settings. (<a href='https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/6-github-repository-danger-zone-settings.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>A common way to implement this is to either have a dedicated page or place the set of actions at the bottom of the settings/account page.</p>

<p>It might contain one or more actions and is usually combined with other methods, e.g., a modal dialog. The more actions you have, the more likely you’ll need a dedicated page.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/7-plausible-danger-zone.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="450"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/7-plausible-danger-zone.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/7-plausible-danger-zone.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/7-plausible-danger-zone.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/7-plausible-danger-zone.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/7-plausible-danger-zone.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/7-plausible-danger-zone.png"
			
			sizes="100vw"
			alt="A separate page for danger zone actions in the Plausible application."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Plausible has a dedicated page for the Danger zone. (<a href='https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/7-plausible-danger-zone.png'>Large preview</a>)
    </figcaption>
  
</figure>

<h4 id="when-to-use-them-1">When To Use Them</h4>

<p>Use a Danger Zone to group actions that are irreversible or have a high potential for data loss or significant outcomes for users.</p>

<p>These actions typically include things like account deletion, data wiping, or permission changes that could affect the user’s access or data.</p>

<h4 id="things-to-keep-in-mind-1">Things To Keep In Mind</h4>

<ol>
<li>Use colors like red, warning icons, or borders to visually differentiate the Danger Zone from the rest of the page.</li>
<li>Each action in the Danger Zone should have <strong>a clear description of what will happen if the user proceeds</strong> so that users understand the potential consequences.</li>
<li><strong>Ask users for extra effort.</strong> Usually, the actions are irreversible and critical. In this case, you may ask users to repeat their password or use 2FA because if someone else gets access to the page, it will not be that easy to do the harmful action.</li>
<li><strong>Keep only truly critical actions there.</strong> Avoid making a danger zone for the sake of having one.</li>
</ol>

<h3 id="inline-guards">Inline Guards</h3>

<p>Recently, I discovered that some apps have started using inline confirmation. This means that when you click on a dangerous action, it changes its label and asks you to click again.</p>

<p>This pattern is used by apps like Zapier and Typefully. While at first it seems convenient, it has sparked a lot of discussion and questions on <a href="https://x.com/vponamariov/status/1787832616722338016">X</a> and <a href="https://www.linkedin.com/posts/vitalyfriedman_ux-design-activity-7200522626224582658-AGVB">Linkedin</a>.</p>


<figure class="video-embed-container break-out">
  <div class="video-embed-container--wrapper"
	
  >
    <iframe class="video-embed-container--wrapper-iframe" src="https://player.vimeo.com/video/1007314838"
        frameborder="0"
        allow="autoplay; fullscreen; picture-in-picture"
        allowfullscreen>
    </iframe>
	</div>
	
		<figcaption>Typefully asks for confirmation when deleting a post.</figcaption>
	
</figure>

<h4 id="when-to-use-them-2">When To Use Them</h4>

<p>This is for non-critical actions that might be accidentally executed, usually due to a misclick.</p>

<p>There was a concern mentioned by the community of designers regarding the case of users still being able to execute the action by double-clicking.</p>

<p>However, there are three things to consider:</p>

<ol>
<li>This kind of confirmation is convenient for actions that are not dangerous, but at the same time, it’d be better to ask for an extra effort.</li>
<li><strong>Ideally</strong>, we should provide an option to undo the action or push the deleted item to an archive page (in case we delete something). This is a good combination to make sure that users are safe.</li>
<li>The purpose of inline confirmation is to prevent <strong>accidental</strong> clicks, contrasting with cases where we alert users to the serious consequences of their actions.</li>
</ol>

<p>Even though the <a href="https://lawsofux.com/jakobs-law/">Jakob’s law</a> says that</p>

<blockquote>“Users spend most of their time on other sites. This means that users prefer your site to work the same way as all the other sites they already know.”</blockquote>

<p>It doesn’t mean that you cannot facilitate the usage of an app by introducing new patterns. Otherwise, the web wouldn’t evolve at all.</p>

<blockquote class="pull-quote">
  <p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aThere%20is%20a%20fine%20line%20when%20patterns%20gradually%20change,%20both%20in%20terms%20of%20design%20%28e.g.,%20transitioning%20from%20skeuomorphism%20to%20flat,%20minimalistic%20design%29%20and%20usability%20%28e.g.,%20push%20notifications,%20real-time%20support%29.%0a&url=https://smashingmagazine.com%2f2024%2f09%2fhow-manage-dangerous-actions-user-interfaces%2f">
      
There is a fine line when patterns gradually change, both in terms of design (e.g., transitioning from skeuomorphism to flat, minimalistic design) and usability (e.g., push notifications, real-time support).

    </a>
  </p>
  <div class="pull-quote__quotation">
    <div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
  </div>
</blockquote>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/8-zapier-confirmation-deleting.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="450"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/8-zapier-confirmation-deleting.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/8-zapier-confirmation-deleting.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/8-zapier-confirmation-deleting.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/8-zapier-confirmation-deleting.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/8-zapier-confirmation-deleting.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/8-zapier-confirmation-deleting.png"
			
			sizes="100vw"
			alt="Zapier asks for confirmation when deleting an action."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Zapier asks for confirmation when deleting an action. (<a href='https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/8-zapier-confirmation-deleting.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>I’ve seen attempts to try to fix accidental double-clicking by changing the position of the inline confirmation label that appears after the first click.</p>

<p>But this creates layout shifts. When users work with the app daily, it may cause more irritation than help.</p>

<p>As an option, we can solve this issue by adding a tiny delay, e.g., 100-200ms, to prevent double-clicking.</p>

<p>It also matters who your users are. Remember the good old days when we used to click a dozen times to launch Internet Explorer and ended up with dozens of open instances?</p>

<p>If your target audience is likely to do this, apparently, the pattern will not work.</p>

<p>However, for apps like Zapier or Typefully, <em>my assumption</em> is that the target audience might benefit from the pattern.</p>

<h3 id="two-factor-authorization-confirmation">Two-factor Authorization Confirmation</h3>

<p>This method involves sending a confirmation request, with or without some kind of verification code, to another place, such as:</p>

<ul>
<li>SMS,</li>
<li>Email,</li>
<li>Authenticator app on mobile,</li>
<li>Push notifications (e.g., instead of sending SMS, you may choose to send push notifications),</li>
<li>Messengers.</li>
</ul>

<p><strong>Notice</strong>: <em>I’m not talking about authentication (namely, login process), but rather a confirmation action.</em></p>

<p>An example that I personally face a lot is an app for sending cryptocurrency. Since this is a sensitive request, apart from submitting the requisition from a website, I should also approve it via email.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/9-transaction-email-confirmation.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="450"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/9-transaction-email-confirmation.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/9-transaction-email-confirmation.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/9-transaction-email-confirmation.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/9-transaction-email-confirmation.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/9-transaction-email-confirmation.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/9-transaction-email-confirmation.png"
			
			sizes="100vw"
			alt="Confirmation email for making money transaction."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      An app asking to verify a transaction via email. (<a href='https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/9-transaction-email-confirmation.png'>Large preview</a>)
    </figcaption>
  
</figure>

<h4 id="when-to-use-it">When To Use It</h4>

<p>It can be used for such operations as money transfers, ownership transfers, and account deletion (even if you have a danger zone). Most of us use this method quite often when we pay online, and our banks send us OTP (one-time password or one-time code).</p>

<p>It may go after the first initial protection method, e.g., a confirmation dialog.</p>

<p>As you can see, the methods are often combined and used together. We should not consider each of them in isolation but rather in the context of the whole business process.</p>

<h3 id="passkeys">Passkeys</h3>

<p>Passkeys are a modern, password-less authentication method designed to enhance both security and user experience.</p>

<blockquote>“Passkeys are a replacement for passwords. A password is something that can be remembered and typed, and a passkey is a secret stored on one’s devices, unlocked with biometrics.”<br /><br />&mdash; <a href="https://passkeys.dev/docs/intro/what-are-passkeys/">passkeys.dev</a></blockquote>

<p>There are a few pros of using passkeys over 2FA, both in terms of security and UX:</p>

<ol>
<li>Unlike 2FA, which typically requires entering a code from another device or app (e.g., SMS or authenticator apps), passkeys streamline the confirmation process. They <strong>don’t require switching between devices or waiting for a code to arrive</strong>, providing immediate authentication.</li>
<li>While 2FA provides extra protection, it is vulnerable to phishing, SIM-swapping, or interception. Passkeys are much more resistant to such attacks because they use public-private key cryptography. This means <strong>no secret code is ever sent over the network</strong>, making it phishing-resistant and not reliant on SMS or email, which can be compromised.</li>
<li>Passkeys require less mental effort from users. There’s no need to remember a password or type a code &mdash; just authenticate with a fingerprint, facial recognition, or device-specific PIN. This way, we <a href="https://en.wikipedia.org/wiki/Cognitive_load">reduce cognitive load</a>.</li>
<li>With passkeys, the authentication process is almost <strong>instant</strong>. Unlike 2FA, where users might have to wait for a code or switch to another device, passkeys give us the opportunity to confirm actions without switching context, e.g., opening your email inbox or copying OTP from a mobile device.</li>
</ol>

<p>The passkeys are <a href="https://passkeys.dev/device-support/">widely supported</a> and more and more <a href="https://www.passkeys.io/who-supports-passkeys">companies</a> adopt it.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/10-passkey-companies.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="450"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/10-passkey-companies.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/10-passkey-companies.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/10-passkey-companies.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/10-passkey-companies.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/10-passkey-companies.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/10-passkey-companies.png"
			
			sizes="100vw"
			alt="Screenshot from passkeys.io showing some of the companies that have already adopted the passkeys technology."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      A screenshot from <a href='https://www.passkeys.io/who-supports-passkeys'>passkeys.io</a> showing some of the companies that have already adopted the passkeys technology. (<a href='https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/10-passkey-companies.png'>Large preview</a>)
    </figcaption>
  
</figure>

<h3 id="second-person-confirmation">Second-person Confirmation</h3>

<p>This is a mechanism when two users are involved in the process. We may call them initiator and approver.</p>

<p>In this case, the initiator makes a request to take some action while the approver decides whether to confirm it or not.</p>

<p>In both roles, a confirmation dialog or other UI patterns may be used. However, the main idea is to separate responsibilities and decrease the probability of a bad decision.</p>

<p>Actually, you have likely encountered this method many times before. For example, a developer submits a pull request, while a code reviewer decides whether to confirm it or decline.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/11-github-merge-pull-request.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="450"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/11-github-merge-pull-request.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/11-github-merge-pull-request.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/11-github-merge-pull-request.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/11-github-merge-pull-request.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/11-github-merge-pull-request.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/11-github-merge-pull-request.png"
			
			sizes="100vw"
			alt="Merging a pull request on GitHub."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Merging a pull request on GitHub. (<a href='https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/11-github-merge-pull-request.png'>Large preview</a>)
    </figcaption>
  
</figure>

<h4 id="when-to-use-it-1">When To Use It</h4>

<p>It is best suited for situations when the seriousness of decisions requires few people involved.</p>

<p>There is a direct analogy from real life. Take a look at the picture below:</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/12-doctors-discussion.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="450"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/12-doctors-discussion.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/12-doctors-discussion.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/12-doctors-discussion.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/12-doctors-discussion.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/12-doctors-discussion.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/12-doctors-discussion.png"
			
			sizes="100vw"
			alt="A picture where two doctors discussing an issue."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Image source: <a href='https://unsplash.com/photos/a-man-showing-something-on-the-computer-5VkNa1LrS8A'>Unsplash</a>. (<a href='https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/12-doctors-discussion.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>The Council of Physicians reminds us that in medicine, seeking a second opinion is crucial, as collaboration and diverse perspectives often result in more informed decisions and better patient care. This is a perfect example of when a second opinion or an approver is essential.</p>

<p>Here, you will find some apps that use this method:</p>

<ul>
<li><strong>GitHub</strong>, as previously mentioned, for merging pull requests.</li>
<li><strong>Jira</strong> and other similar apps. For example, when you move issues through a certain workflow stage, it may require manager approval.</li>
<li><strong>Banking applications.</strong> When you make a high-value transaction, it could be necessary to verify it for legal issues.</li>
<li><strong>Deel</strong>, which is a global hiring and payroll. One part (e.g., employer) draws up a contract and sends it to another part (e.g., freelancer), and the freelancer accepts it.</li>
</ul>

<p>But here is the thing: We can consider it a separate method or rather an approach for implementing business logic because even if another person confirms an action, it is still a dangerous action, with the only difference being that now it’s another person who should approve it.</p>

<p>So, all of the examples mentioned above are not exactly a standalone specific way to protect users from making wrong decisions from the UI point of view. It’s rather an approach that helps us to reduce the number of critical mistakes.</p>

<div class="partners__lead-place"></div>

<h2 id="do-we-actually-need-to-ask-users">Do We Actually Need To Ask Users?</h2>

<p>When you ask users to take action, you should be aware of its original purpose.</p>

<blockquote class="pull-quote">
  <p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aThe%20fact%20that%20users%20make%20actions%20does%20not%20mean%20that%20they%20make%20them%20consciously.%0a&url=https://smashingmagazine.com%2f2024%2f09%2fhow-manage-dangerous-actions-user-interfaces%2f">
      
The fact that users make actions does not mean that they make them consciously.

    </a>
  </p>
  <div class="pull-quote__quotation">
    <div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
  </div>
</blockquote>

<p>There are many behavioral phenomena that come from psychology, to name a few:</p>

<ul>
<li><a href="https://en.wikipedia.org/wiki/Cognitive_inertia"><strong>Cognitive inertia</strong></a>: The tendency of a person to stick to familiar decisions, even if they are not suitable for the current situation. For instance, the vast majority of people don’t read user agreements. They simply agree with the lengthy text because it’s necessary from the legal point of view.</li>
<li><a href="https://en.wikipedia.org/wiki/Availability_heuristic"><strong>Availability Heuristic</strong></a>: People often make decisions based on information that is easily accessible or familiar to them rather than making a mental effort. When users see the same confirmation popups, they might automatically accept them based on their previous successful experience. Of course, sooner or later, it might not work, and the acceptance of required action can lead to bad consequences.</li>
<li><a href="https://en.wikipedia.org/wiki/Cognitive_miser"><strong>Cognitive Miser</strong></a>: The human mind is considered to be a cognitive miser due to the tendency of humans to think and solve problems in simpler and less effortful ways rather than in more sophisticated and effortful ways, regardless of intelligence. This explains why many users just click “yes” or “agree” without carefully reading the text.</li>
<li>Quite a representative example is <a href="https://en.wikipedia.org/wiki/Banner_blindness"><strong>banner blindness</strong></a>, even though not related to confirmation but, in fact, revolves around the same human behavior idiosyncrasies.</li>
</ul>

<p>A reasonable question that may arise: What are the alternatives?</p>

<p>Even though we cannot entirely affect users’ behavior, there are a few tactics we can use.</p>

<h3 id="delaying">Delaying</h3>

<p>In some scenarios, we can artificially delay the task execution in a graceful way.</p>

<p>One of my favorite examples is an app called Glovo, which is a food delivery app. Let’s have a look at the three screens you will see when you order something.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/13-food-delivery-verification-process.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="567"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/13-food-delivery-verification-process.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/13-food-delivery-verification-process.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/13-food-delivery-verification-process.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/13-food-delivery-verification-process.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/13-food-delivery-verification-process.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/13-food-delivery-verification-process.png"
			
			sizes="100vw"
			alt="Workflow of a food delivery app that uses an illusion of progress."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Workflow of a food delivery app that uses an illusion of progress. (<a href='https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/13-food-delivery-verification-process.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>The first screen is a cart with items you chose to buy (and an annoying promotion of subscription that takes ⅓ of the screen).</p>

<p>After you tap the “confirm order” button, you’ll see the second screen, which asks you whether everything is correct. However, the information appears gradually with fade-in animation. Also, you can see there is a progress bar, which is a <strong>fake one</strong>.</p>

<p>After a few seconds, you’ll see another screen that shows that the app is trying to charge your card; this time, it’s a real process. After the transaction proceeds, you’ll see the status of the order and approximate delivery time.</p>

<p><strong>Pro tip</strong>: <em>When you show the status of the order and visually highlight or animate the first step, it makes users more confident that the order will be completed. Because of the trick that is called <a href="https://lawsofux.com/goal-gradient-effect/">Goal-Gradient Effect</a>.</em></p>

<p>You’ve just paid, and “something starts happening” (at least visually), which is a sign that <em>“Oh, they should have already started preparing my order. That’s nice!”</em></p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/14-real-purchase-action.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="540"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/14-real-purchase-action.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/14-real-purchase-action.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/14-real-purchase-action.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/14-real-purchase-action.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/14-real-purchase-action.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/14-real-purchase-action.png"
			
			sizes="100vw"
			alt="Real purchase action that takes place after an artificial delay."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Real purchase action that takes place after an artificial delay. (<a href='https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/14-real-purchase-action.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>The purpose of the screen with a fake progress bar is to let users verify the order details and confirm them.</p>

<p>But this is done in a very exquisite way:</p>

<ol>
<li>On the first screen, you click <em>“confirm order”</em>. It doesn’t invoke any modals or popups, such as <em>“Are you sure?”</em>.</li>
<li>On the second screen, users can see how information about their order appears right away, and the scroll bar at the bottom goes further. It seems like that app is doing something, but it’s an illusion. An illusion that makes you take another quick look at what you’ve just ordered.</li>
</ol>

<p>In the previous version of the app, you couldn’t even skip the process; you could only cancel it. Now they added the <em>“Continue”</em> button, which is essentially <em>“Yes, I’m sure”</em> confirmation.</p>

<p>This means that we return back again to the drawbacks of classic confirmation modals since users can skip the process. But the approach is different: it’s a combination of a feedback loop from the app and skipping the process.</p>

<p>This combination makes users pay attention to the address, order, and price at least sometimes, and it gives them time to cancel the order, while in the classic approach, the confirmation is <em>“yes or no?”</em> which is more likely to be confirmed right away.</p>

<h3 id="the-undo-option">The Undo Option</h3>

<p>The undo pattern allows users to reverse an action they have just performed, providing a safety net that reduces anxiety around making mistakes.</p>

<p>Unlike confirmation modals that interrupt the workflow to ask for user confirmation, the undo pattern provides a smoother experience by allowing actions to be completed with the option to reverse them if needed.</p>

<h4 id="when-to-use-it-2">When To Use It</h4>

<p>It works perfectly fine for non-destructive, reversible actions &amp;mdashl actions that don’t have significant and immediate consequences:</p>

<ul>
<li>Reversing actions when editing a document (The beloved <kbd>ctrl</kbd> + <kbd>z</kbd> shortcut);</li>
<li>Removing a file (if it goes to the trash bin first);</li>
<li>Changing the status of a task (e.g., if you accidentally marked a task completed);</li>
<li>Deleting a message in a chat;</li>
<li>Applying filters to a photo.</li>
</ul>

<p>Combined with a timer, you can extend the number of options since such tasks as sending an email or making a money transfer could be undone.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/15-undo-with-timer.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="267"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/15-undo-with-timer.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/15-undo-with-timer.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/15-undo-with-timer.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/15-undo-with-timer.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/15-undo-with-timer.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/15-undo-with-timer.png"
			
			sizes="100vw"
			alt="Toast notification with undo action and timer."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      An example of an undo toast with a timer. (<a href='https://files.smashing.media/articles/how-manage-dangerous-actions-user-interfaces/15-undo-with-timer.png'>Large preview</a>)
    </figcaption>
  
</figure>

<h4 id="when-you-cannot-use-it">When You Cannot Use It</h4>

<p>It’s not suitable for actions that have serious consequences, such as the following:</p>

<ul>
<li>Deleting an account;</li>
<li>Submitting legal documents;</li>
<li>Purchasing goods (refund is not the same as the  undo option);</li>
<li>Making requests for third-party APIs (in most cases).</li>
</ul>

<h4 id="how-to-implement-them">How To Implement Them?</h4>

<ol>
<li>The most common way that most people use every day is to provide a shortcut (<kbd>ctrl</kbd> + <kbd>z</kbd>). However, it’s constrained to some cases, such as text editors, moving files between folders, and so on.</li>
<li>Toasts are probably the most common way to implement these web and mobile apps. The only thing that you should keep in mind is that it should stand out enough to be noticed. Hiding them in a corner with a tiny message and color that is not noticeable might not work &mdash; especially on wide screens.</li>
<li>A straightforward solution is simply to have a button that does the undo option. Preferably close to the button that evokes the action that you want to undo.</li>
</ol>

<p>The undo option is tightly related to the concept called <strong>soft deleting</strong>, which is widely used in backend frameworks such as <a href="https://laravel.com/docs/11.x/eloquent#soft-deleting">Laravel</a>.</p>

<p>The concept means that when users delete something via the UI, it <em>looks like it has been deleted</em>, but in the database, we keep the data but mark it as deleted. The data is not lost, which is why the undo option is possible since we don’t actually delete anything but rather mark it as deleted.</p>

<p>This is a good technique to ensure that data is never lost. However, not every table needs this.</p>

<p>For example, if you delete an account and don&rsquo;t want users to restore it (perhaps due to legal regulations), then you should erase the data completely. But in many cases, it might be a good idea to consider soft deleting. In the worst case, you’ll be able to manually restore user data if it cannot be done via the UI for some reason.</p>

<div class="partners__lead-place"></div>

<h2 id="conclusion">Conclusion</h2>

<p>There’s something I want everyone to keep in mind, regardless of who you are or what you do.</p>

<p>Every situation is unique. A certain approach might work or fail for a variety of reasons. You might sometimes wonder why a specific decision was made, but you may not realize how many times the interface was revised based on real user feedback.</p>

<p>User behavior is affected by many factors, including country, age, culture, education, familiarity with certain patterns, disabilities, and more.</p>

<p>What’s crucial is to <strong>stay in control of your data and users and be prepared to respond when something goes wrong</strong>. Following best practices is important, but you must still verify if they work in your specific case.</p>

<p>Just like in chess, there are many rules &mdash; and even more exceptions.</p>

<h3 id="further-reading">Further Reading</h3>

<ul>
<li><a href="https://developer.apple.com/design/human-interface-guidelines/modality">Modality</a>, Apple</li>
<li>“<a href="https://medium.com/@joaopegb/ux-writing-an-effective-cancel-dialog-confirmation-on-web-539b73a39929">An effective ‘Cancel’ dialog confirmation on Web</a>,” João Bexiga</li>
<li>“<a href="https://joshwayne.com/posts/confirm-or-undo/">Confirm or undo? Which is the better option?</a>,” Josh Wayne</li>
<li>“<a href="https://surajsinghbisht054.medium.com/understanding-soft-delete-and-hard-delete-in-software-development-best-practices-and-importance-539a935d71b5">Understanding Soft Delete and Hard Delete</a>,” Suraj Singh Bisht</li>
<li>“<a href="https://www.nngroup.com/articles/confirmation-dialog/">Confirmation Dialogs Can Prevent User Errors &mdash; If Not Overused</a>,” Jakob Nielsen</li>
<li>“<a href="https://uxdesign.cc/are-you-sure-you-want-to-do-this-microcopy-for-confirmation-dialogues-1d94a0f73ac6">Microcopy for confirmation dialogues</a>,” Kinneret Yifrah</li>
<li><a href="https://www.passkeys.io/">What is a passkey?</a>, passkeys.io</li>
</ul>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(vf, il, yk)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item><item><author>Joana Cerejo</author><title>Why Anticipatory Design Isn’t Working For Businesses</title><link>https://www.smashingmagazine.com/2024/09/why-anticipatory-design-not-working-businesses/</link><pubDate>Tue, 10 Sep 2024 10:00:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2024/09/why-anticipatory-design-not-working-businesses/</guid><description>Anticipatory design, powered by Artificial Intelligence (AI), Machine learning (ML), and Big Data (BD), promises to transform user experiences by predicting and fulfilling needs before users even express them. While this proactive approach seems revolutionary, many businesses struggle to meet the high expectations it sets. Joana Cerejo delves into the challenges of anticipatory design, highlights key failures, and offers a framework to help designers and businesses succeed in this complex landscape.</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2024/09/why-anticipatory-design-not-working-businesses/" />
              <title>Why Anticipatory Design Isn’t Working For Businesses</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>Why Anticipatory Design Isn’t Working For Businesses</h1>
                  
                    
                    <address>Joana Cerejo</address>
                  
                  <time datetime="2024-09-10T10:00:00&#43;00:00" class="op-published">2024-09-10T10:00:00+00:00</time>
                  <time datetime="2024-09-10T10:00:00&#43;00:00" class="op-modified">2026-02-09T03:03:08+00:00</time>
                </header>
                
                

<p>Consider the early days of the internet, when websites like NBC News and Amazon cluttered their pages with flashing banners and labyrinthine menus. In the early 2000s, Steve Krug’s book <em>Don’t Make Me Think</em> arrived like a lighthouse in a storm, advocating for simplicity and user-centric design.</p>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/1-nbc-amazon-2000s.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="514"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/1-nbc-amazon-2000s.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/1-nbc-amazon-2000s.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/1-nbc-amazon-2000s.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/1-nbc-amazon-2000s.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/1-nbc-amazon-2000s.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/1-nbc-amazon-2000s.png"
			
			sizes="100vw"
			alt="A comparison of early 2000s website designs: NBC News’s website with flashing banners on the left and Amazon’s late 1990s website with confusing navigation on the right."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      <strong>On the left</strong>: NBC News’s early 2000’s website with flashing banners. <strong>On the right</strong>: Amazon’s late 1990s website with confusing navigation. (Image source: <a href='https://www.webdesignmuseum.org/'>Web Design Museum</a>) (<a href='https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/1-nbc-amazon-2000s.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>Today’s digital world is flooded with choices, information, and data, which is both exciting and overwhelming. Unlike Krug’s time,</p>

<blockquote class="pull-quote">
  <p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aToday,%20the%20problem%20isn%e2%80%99t%20interaction%20complexity%20but%20opacity.%20AI-powered%20solutions%20often%20lack%20transparency%20and%20explainability,%20raising%20concerns%20about%20user%20trust%20and%20accountability.%0a&url=https://smashingmagazine.com%2f2024%2f09%2fwhy-anticipatory-design-not-working-businesses%2f">
      
Today, the problem isn’t interaction complexity but opacity. AI-powered solutions often lack transparency and explainability, raising concerns about user trust and accountability.

    </a>
  </p>
  <div class="pull-quote__quotation">
    <div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
  </div>
</blockquote>

<p>The era of click-and-command is fading, giving way to a more seamless and intelligent relationship between humans and machines.</p>

<h3 id="expanding-on-krug-s-call-for-clarity-the-pillars-of-anticipatory-design">Expanding on Krug’s Call for Clarity: The Pillars of Anticipatory Design</h3>

<p>Krug’s emphasis on clarity in design is more relevant than ever. In anticipatory design, clarity is not just about simplicity or ease of use &mdash; it’s about transparency and accountability. These two pillars are crucial but often missing as businesses navigate this new paradigm. Users today find themselves in a digital landscape that is not only confusing but increasingly intrusive. AI predicts their desires based on past behavior but rarely explains how these predictions are made, leading to growing mistrust.</p>

<p><strong>Transparency</strong> is the foundation of clarity. It involves openly communicating how AI-driven decisions are made, what data is being collected, and how it is being used to anticipate needs. By demystifying these processes, designers can alleviate user concerns about privacy and control, thereby building trust.</p>

<p><strong>Accountability</strong> complements transparency by ensuring that anticipatory systems are designed with ethical considerations in mind. This means creating mechanisms for users to understand, question, and override automated decisions if needed. When users feel that the system is accountable to them, their trust in the technology &mdash; and the brand &mdash; deepens.</p>

<div data-audience="non-subscriber" data-remove="true" class="feature-panel-container">

<aside class="feature-panel" style="">
<div class="feature-panel-left-col">

<div class="feature-panel-description"><p>Meet <strong><a data-instant href="/printed-books/touch-design-for-mobile-interfaces/">Touch Design for Mobile Interfaces</a></strong>, Steven Hoober’s brand-new guide on <strong>designing for mobile</strong> with proven, universal, human-centric guidelines. <strong>400 pages</strong>, jam-packed with in-depth user research and <strong>best practices</strong>.</p>
<a data-instant href="https://www.smashingmagazine.com/printed-books/touch-design-for-mobile-interfaces/" class="btn btn--green btn--large" style="">Jump to table of contents&nbsp;↬</a></div>
</div>
<div class="feature-panel-right-col"><a data-instant href="https://www.smashingmagazine.com/printed-books/touch-design-for-mobile-interfaces/" class="feature-panel-image-link">
<div class="feature-panel-image"><picture><source type="image/avif" srcSet="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/14bcab88-b622-47f6-a51d-76b0aa003597/touch-design-book-shop-opt.avif" />
<img
    loading="lazy"
    decoding="async"
    class="feature-panel-image-img"
    src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/b14658fc-bb2d-41a6-8d1a-70eaaf1b8ec8/touch-design-book-shop-opt.png"
    alt="Feature Panel"
    width="480"
    height="697"
/>
</picture>
</div>
</a>
</div>
</aside>
</div>

<h2 id="what-makes-a-service-anticipatory">What Makes a Service Anticipatory?</h2>

<p>Image AI like a waiter at a restaurant. Without AI, they wait for you to interact with them and place your order. But with anticipatory design powered by AI and ML, the waiter can analyze your past orders (historical data) and current behavior (contextual data) &mdash; perhaps, by noticing you always start with a glass of sparkling water.</p>

<p>This proactive approach has evolved since the late 1990s, with early examples like Amazon’s recommendation engine and TiVo’s predictive recording. These pioneering services demonstrated the potential of predictive analytics and ML to create personalized, seamless user experiences.</p>

<h3 id="amazon-s-recommendation-engine-late-1990s">Amazon’s Recommendation Engine (Late 1990s)</h3>

<p>Amazon was a pioneer in using data to predict and suggest products to customers, setting the standard for personalized experiences in e-commerce.</p>

<h3 id="tivo-1999">TiVo (1999)</h3>

<p>TiVo’s ability to learn users’ viewing habits and automatically record shows marked an early step toward predictive, personalized entertainment.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/2-1999s-tivo.jpeg">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="601"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/2-1999s-tivo.jpeg 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/2-1999s-tivo.jpeg 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/2-1999s-tivo.jpeg 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/2-1999s-tivo.jpeg 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/2-1999s-tivo.jpeg 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/2-1999s-tivo.jpeg"
			
			sizes="100vw"
			alt="A photo of a TiVO device from 1999."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      1999’s TiVO. (<a href='https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/2-1999s-tivo.jpeg'>Large preview</a>)
    </figcaption>
  
</figure>

<h3 id="netflix-s-recommendation-system-2006">Netflix’s Recommendation System (2006)</h3>

<p>Netflix began offering personalized movie recommendations based on user ratings and viewing history in 2006. It helped popularize the idea of anticipatory design in the digital entertainment space.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/3-netflix-2006.jpeg">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="650"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/3-netflix-2006.jpeg 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/3-netflix-2006.jpeg 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/3-netflix-2006.jpeg 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/3-netflix-2006.jpeg 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/3-netflix-2006.jpeg 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/3-netflix-2006.jpeg"
			
			sizes="100vw"
			alt="A screenshot of Netflix’s website from 2006."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Netflix in 2006. (Image source: <a href='https://www.webdesignmuseum.org/gallery/netflix-in-2006'>Web Design Museum</a>) (<a href='https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/3-netflix-2006.jpeg'>Large preview</a>)
    </figcaption>
  
</figure>

<h2 id="how-businesses-can-achieve-anticipatory-design">How Businesses Can Achieve Anticipatory Design</h2>

<p>Designing for anticipation is designing for a future that is not here yet but has already started moving toward us.</p>

<p>Designing for anticipation involves more than reacting to current trends; it requires businesses to plan strategically for future user needs. Two critical concepts in this process are <strong>forecasting</strong> and <strong>backcasting</strong>.</p>

<ul>
<li><strong>Forecasting</strong> analyzes past trends and data to predict future outcomes, helping businesses anticipate user needs.</li>
<li><strong>Backcasting</strong> starts with a desired future outcome and works backward to identify the steps needed to achieve that goal.</li>
</ul>

<p>Think of it like planning a dream vacation. Forecasting would involve looking at your past trips to guess where you might go next. But backcasting lets you pick your ideal destination first, then plan the perfect itinerary to get you there.</p>

<h3 id="forecasting-a-core-concept-for-future-oriented-design">Forecasting: A Core Concept for Future-Oriented Design</h3>

<p>This method helps in planning and decision-making based on probable future scenarios. Consider Netflix, which uses forecasting to analyze viewers’ past viewing habits and predict what they might want to watch next. By leveraging data from millions of users, Netflix can anticipate individual preferences and serve personalized recommendations that keep users engaged and satisfied.</p>

<h3 id="backcasting-planning-from-the-desired-future">Backcasting: Planning From the Desired Future</h3>

<p>Backcasting takes a different approach. Instead of using data to predict the future, it starts with defining a desired future outcome &mdash; a clear user intent. The process then works backward to identify the steps needed to achieve that goal. This goal-oriented approach crafts an experience that actively guides users toward their desired future state.</p>

<p>For instance, a financial planning app might start with a user’s long-term financial goal, such as saving for retirement, and then design an experience that guides the user through each step necessary to reach that goal, from budgeting tips to investment recommendations.</p>

<h3 id="integrating-forecasting-and-backcasting-in-anticipatory-design">Integrating Forecasting and Backcasting In Anticipatory Design</h3>

<p>The true power of anticipatory design emerges when businesses efficiently integrate both forecasting and backcasting into their design processes.</p>

<p>For example, Tesla’s approach to electric vehicles exemplifies this integration. By forecasting market trends and user preferences, Tesla can introduce features that appeal to users today. Simultaneously, by backcasting from a vision of a sustainable future, Tesla designs its vehicles and infrastructure to guide society toward a world where electric cars are the norm and carbon emissions are significantly reduced.</p>

<h2 id="over-promising-and-under-delivering-the-pitfalls-of-anticipatory-design">Over-Promising and Under-Delivering: The Pitfalls of Anticipatory Design</h2>

<p>As businesses increasingly adopt anticipatory design, the integration of forecasting and backcasting becomes essential. Forecasting allows businesses to predict and respond to immediate user needs, while backcasting ensures these responses align with long-term goals. Despite its potential, anticipatory design often fails in execution, leaving few examples of success.</p>

<p>Over the past decade, I’ve observed and documented the rise and fall of several ambitious anticipatory design ventures. Among them, three &mdash; <strong>Digit</strong>, <strong>LifeBEAM Vi</strong> Sense Headphones, and <strong>Mint</strong> &mdash; highlight the challenges of this approach.</p>

<h3 id="digit-struggling-with-contextual-understanding">Digit: Struggling with Contextual Understanding</h3>

<p><strong>Digit</strong> aimed to simplify personal finance with algorithms that automatically saved money based on user spending. However, the service often missed the mark, lacking the contextual awareness necessary to accurately assess users’ real-time financial situations. This led to unexpected withdrawals, frustrating users, especially those living paycheck to paycheck. The result was a breakdown in trust, with the service feeling more intrusive than supportive.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/4-digit-app-website-2020.jpg">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="404"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/4-digit-app-website-2020.jpg 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/4-digit-app-website-2020.jpg 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/4-digit-app-website-2020.jpg 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/4-digit-app-website-2020.jpg 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/4-digit-app-website-2020.jpg 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/4-digit-app-website-2020.jpg"
			
			sizes="100vw"
			alt="A screenshot of the Digit app website from 2020."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Digit app website in 2020. (<a href='https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/4-digit-app-website-2020.jpg'>Large preview</a>)
    </figcaption>
  
</figure>

<h3 id="lifebeam-vi-sense-headphones-complexity-and-user-experience-challenges">LifeBEAM Vi Sense Headphones: Complexity and User Experience Challenges</h3>

<p><strong>LifeBEAM Vi</strong> Sense Headphones was marketed as an AI-driven fitness coach, promising personalized guidance during workouts. In practice, the AI struggled to deliver tailored coaching, offering generic and unresponsive advice. As a result, users found the experience difficult to navigate, ultimately limiting the product’s appeal and effectiveness. This disconnection between the promised personalized experience and the actual user experience left many disappointed.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/5-vi-headphones-application.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="363"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/5-vi-headphones-application.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/5-vi-headphones-application.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/5-vi-headphones-application.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/5-vi-headphones-application.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/5-vi-headphones-application.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/5-vi-headphones-application.png"
			
			sizes="100vw"
			alt="A photo of Vi’s headphones and application."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Vi’s headphones and application. (<a href='https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/5-vi-headphones-application.png'>Large preview</a>)
    </figcaption>
  
</figure>

<h3 id="mint-misalignment-with-user-goals">Mint: Misalignment with User Goals</h3>

<p><strong>Mint</strong> aimed to empower users to manage their finances by providing automated budgeting tools and financial advice. While the service had the potential to anticipate user needs, users often found that the suggestions were not tailored to their unique financial situations, resulting in generic advice that did not align with their personal goals.</p>

<p>The lack of personalized, actionable steps led to a mismatch between user expectations and service delivery. This misalignment caused some users to disengage, feeling that <strong>Mint</strong> was not fully attuned to their unique financial journeys.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/6-mint-app-website-2021.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="435"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/6-mint-app-website-2021.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/6-mint-app-website-2021.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/6-mint-app-website-2021.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/6-mint-app-website-2021.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/6-mint-app-website-2021.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/6-mint-app-website-2021.png"
			
			sizes="100vw"
			alt="A screenshot of the Mint app website from 2021."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Mint app website in 2021. (<a href='https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/6-mint-app-website-2021.png'>Large preview</a>)
    </figcaption>
  
</figure>

<div class="partners__lead-place"></div>

<h2 id="the-risks-of-over-promising-and-under-delivering">The Risks of Over-promising and Under-Delivering</h2>

<p>The stories of <strong>Digit</strong>, <strong>LifeBEAM Vi</strong> Sense, and <strong>Mint</strong> underscore a common pitfall: over-promising and under-delivering. These services focused too much on predictive power and not enough on user experience. When anticipatory systems fail to consider individual nuances, they breed frustration rather than satisfaction, highlighting the importance of aligning design with human experience.</p>

<p><strong>Digit</strong>’s approach to automated savings, for instance, became problematic when users found its decisions opaque and unpredictable. Similarly, <strong>LifeBEAM’s Vi</strong> Sense headphones struggled to meet diverse user needs, while <strong>Mint</strong>’s rigid tools failed to offer the personalized insights users expected. These examples illustrate the delicate balance anticipatory design must strike between proactive assistance and user control.</p>

<h3 id="failure-to-evolve-with-user-needs">Failure to Evolve with User Needs</h3>

<p>Many anticipatory services rely heavily on data-driven forecasting, but predictions can fall short without understanding the broader user context. <strong>Mint</strong> initially provided value with basic budgeting tools but failed to evolve with users’ growing needs for more sophisticated financial advice. <strong>Digit</strong>, too, struggled to adapt to different financial habits, leading to dissatisfaction and limited success.</p>

<h3 id="complexity-and-usability-issues">Complexity and Usability Issues</h3>

<blockquote>Balancing the complexity of predictive systems with usability and transparency is a key challenge in anticipatory design.</blockquote>

<p>When systems become overly complex, as seen with <strong>LifeBEAM Vi</strong> Sense headphones, users may find them difficult to navigate or control, compromising trust and engagement. <strong>Mint</strong>’s generic recommendations, born from a failure to align immediate user needs with long-term goals, further illustrate the risks of complexity without clarity.</p>

<h3 id="privacy-and-trust-issues">Privacy and Trust Issues</h3>

<p>Trust is critical in anticipatory design, particularly in services handling sensitive data like finance or health. <strong>Digit</strong> and <strong>Mint</strong> both encountered trust issues as users grew skeptical of how decisions were made and whether these services truly had their best interests in mind. Without clear communication and control, even the most sophisticated systems risk alienating users.</p>

<h3 id="inadequate-handling-of-edge-cases-and-unpredictable-scenarios">Inadequate Handling of Edge Cases and Unpredictable Scenarios</h3>

<p>While forecasting and backcasting work well for common scenarios, they can struggle with edge cases or unpredictable user behaviors. If an anticipatory service can’t handle these effectively, it risks providing a poor user experience and, in the worst-case scenario, harming the user. Anticipatory systems must be prepared to handle edge cases and unpredictable scenarios.</p>

<p><strong>LifeBEAM Vi</strong> Sense headphones struggled when users deviated from expected fitness routines, offering a one-size-fits-all experience that failed to adapt to individual needs. This highlights the importance of allowing users control, even when a system proactively assists them.</p>

<h2 id="designing-for-anticipatory-experiences">Designing for Anticipatory Experiences</h2>

<blockquote>Anticipatory design should empower users to achieve their goals, not just automate tasks.</blockquote>

<p>We can follow a layered approach to plan a service that can evolve according to user actions and explicit ever-evolving intent.</p>

<p>But how do we design for intent without misaligning anticipation and user control or mismatching user expectations and service delivery?</p>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/7-core-user-intent-anticipation-design.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="628"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/7-core-user-intent-anticipation-design.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/7-core-user-intent-anticipation-design.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/7-core-user-intent-anticipation-design.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/7-core-user-intent-anticipation-design.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/7-core-user-intent-anticipation-design.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/7-core-user-intent-anticipation-design.png"
			
			sizes="100vw"
			alt="A diagram illustrating the core of user intent in anticipation design."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      The core of user intent in anticipatory design. (<a href='https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/7-core-user-intent-anticipation-design.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>At the core of this approach is <strong>intent</strong> &mdash; the primary purpose or goal that the design must achieve. Surrounding this are <strong>workflows</strong>, which represent the structured tasks to achieve the intent. Finally, <strong>algorithms</strong> analyze user data and optimize these workflows.</p>

<p>For instance, <strong>Thrive</strong> (see the image below), a digital wellness platform, aligns algorithms and workflows with the core intent of improving well-being. By anticipating user needs and offering personalized programs, <strong>Thrive</strong> helps users achieve sustained behavior change.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/8-thrive-personalized-well-being-platform.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="409"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/8-thrive-personalized-well-being-platform.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/8-thrive-personalized-well-being-platform.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/8-thrive-personalized-well-being-platform.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/8-thrive-personalized-well-being-platform.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/8-thrive-personalized-well-being-platform.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/8-thrive-personalized-well-being-platform.png"
			
			sizes="100vw"
			alt="A diagram representing Thrive, a personalized well-being platform utilizing layered anticipatory design."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Thrive: A personalized well-being platform utilizing a layered anticipatory design. (<a href='https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/8-thrive-personalized-well-being-platform.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>It perfectly exemplifies the three-layered concentric representation for achieving behavior change through anticipatory design:</p>

<p><strong>1. Innermost layer: Intent</strong></p>

<p><strong>Improve overall well-being</strong>: Thrive’s core intent is to help users achieve a healthier and more fulfilling life. This encompasses aspects like managing stress, improving sleep quality, and boosting energy levels.</p>

<p><strong>2. Middle layer: Workflows</strong></p>

<p><strong>Personalized programs and support</strong>: Thrive uses user data (sleep patterns, activity levels, mood) to create programs tailored to their specific needs and goals. These programs involve various workflows, such as:</p>

<ul>
<li><strong>Guided meditations and breathing exercises</strong> to manage stress and anxiety.</li>
<li><strong>Personalized sleep routines</strong> aimed at improving sleep quality.</li>
<li><strong>Educational content and coaching tips</strong> to promote healthy habits and lifestyle changes.</li>
</ul>

<p><strong>3. Outermost layer: Algorithms</strong></p>

<p><strong>Data analysis and personalized recommendations</strong>: Thrive utilizes algorithms to analyze user data and generate actionable insights. These algorithms perform tasks like the following:</p>

<ul>
<li><strong>Identify patterns</strong> in sleep, activity, and mood to understand user challenges.</li>
<li><strong>Predict user behavior</strong> to recommend interventions that address potential issues.</li>
<li><strong>Optimize program recommendations</strong> based on user progress and data analysis.</li>
</ul>

<p>By aligning algorithms and workflows with the core intent of improving well-being, Thrive provides a personalized and proactive approach to behavior change. Here’s how it benefits users:</p>

<ul>
<li><strong>Sustained behavior change</strong>: Personalized programs and ongoing support empower users to develop healthy habits for the long term.</li>
<li><strong>Data-driven insights</strong>: User data analysis helps users gain valuable insights into their well-being and identify areas for improvement.</li>
<li><strong>Proactive support</strong>: Anticipates potential issues and recommends interventions before problems arise.</li>
</ul>

<h2 id="the-future-of-anticipatory-design-combining-anticipation-with-foresight">The Future of Anticipatory Design: Combining Anticipation with Foresight</h2>

<p>Anticipatory design is inherently future-oriented, making it both appealing and challenging. To succeed, businesses must combine <strong>anticipation</strong> &mdash; predicting future needs &mdash; with <strong>foresight</strong>, a systematic approach to analyzing and preparing for future changes.</p>

<p><strong>Foresight</strong> involves considering alternative future scenarios and making informed decisions to navigate toward desired outcomes. For example, <strong>Digit</strong> and <strong>Mint</strong> struggled because they didn’t adequately handle edge cases or unpredictable scenarios, a failure in their foresight strategy (see an image below).</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/9-expanding-concept-intent.jpg">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="409"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/9-expanding-concept-intent.jpg 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/9-expanding-concept-intent.jpg 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/9-expanding-concept-intent.jpg 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/9-expanding-concept-intent.jpg 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/9-expanding-concept-intent.jpg 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/9-expanding-concept-intent.jpg"
			
			sizes="100vw"
			alt="A diagram expanding on the concept of intent by illustrating two key components of anticipatory design: anticipation and foresight."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Expanding on the concept of intent by illustrating two key components of anticipatory design: anticipation and foresight. (<a href='https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/9-expanding-concept-intent.jpg'>Large preview</a>)
    </figcaption>
  
</figure>

<p>As mentioned, while forecasting and backcasting work well for common scenarios, they can struggle with edge cases or unpredictable user behaviors. Under anticipatory design, if we demote foresight for a second plan, the business will fail to account for and prepare for emerging trends and disruptive changes. Strategic foresight helps companies to prepare for the future and develop strategies to address possible challenges and opportunities.</p>

<p>The Foresight process generally involves interrelated activities, including data research, trend analysis, planning scenarios, and impact assessment. The ultimate goal is to gain a broader and deeper understanding of the future to make more informed and strategic decisions in the design process and foresee possible frictions and pitfalls in the user experience.</p>

<h3 id="actionable-insights-for-designer">Actionable Insights for Designer</h3>

<ul>
<li><strong>Enhance contextual awareness</strong><br />
Help data scientists or engineers to ensure that the anticipatory systems can understand and respond to the full context of user needs, not just historical data. Plan for pitfalls so you can design safety measures where the user can control the system.</li>
<li><strong>Maintain user control</strong><br />
Provide users with options to customize or override automated decisions, ensuring they feel in control of their experiences.</li>
<li><strong>Align short-term predictions with long-term goals</strong><br />
Use forecasting and backcasting to create a balanced approach that meets immediate needs while guiding users toward their long-term objectives.</li>
</ul>

<div class="partners__lead-place"></div>

<h2 id="proposing-an-anticipatory-design-framework">Proposing an Anticipatory Design Framework</h2>

<p>Predicting the future is no easy task. However, design can borrow foresight techniques to imagine, anticipate, and shape a future where technology seamlessly integrates with users evolving needs. To effectively implement anticipatory design, it’s essential to <strong>balance human control with AI automation</strong>. Here’s a 3-step approach to integrate future thinking into your workflow:</p>

<ol>
<li><strong>Anticipate Directions of Change</strong><br />
Identify major trends shaping the future.</li>
<li><strong>Imagine Alternative Scenarios</strong><br />
Explore potential futures to guide impactful design decisions.</li>
<li><strong>Shape Our Choices</strong><br />
Leverage these scenarios to align design with user needs and long-term goals.</li>
</ol>

<p>This proposed framework (see an image above) aims to integrate forecasting and backcasting while emphasizing user intent, transparency, and continuous improvement, ensuring that businesses create experiences that are both predictive and deeply aligned with user needs.</p>

<h3 id="step-1-anticipate-directions-of-change">Step 1: Anticipate Directions of Change</h3>

<p><strong>Objective:</strong> Identify the major trends and forces shaping the future landscape.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/10-representation-anticipatory-design-decision-making-process.jpg">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="450"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/10-representation-anticipatory-design-decision-making-process.jpg 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/10-representation-anticipatory-design-decision-making-process.jpg 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/10-representation-anticipatory-design-decision-making-process.jpg 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/10-representation-anticipatory-design-decision-making-process.jpg 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/10-representation-anticipatory-design-decision-making-process.jpg 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/10-representation-anticipatory-design-decision-making-process.jpg"
			
			sizes="100vw"
			alt="A diagram representing the anticipatory design decision-making process."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Representation of anticipatory design decision-making process. (<a href='https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/10-representation-anticipatory-design-decision-making-process.jpg'>Large preview</a>)
    </figcaption>
  
</figure>

<p><strong>Components:</strong></p>

<p><strong>1. Understand the User’s Intent</strong></p>

<ul>
<li><strong>User Research</strong>: Conduct in-depth user research through interviews, surveys, and observations to uncover user goals, motivations, pain points, and long-term aspirations or Jobs-to-be-Done (JTBD). This foundational step helps clearly define the user’s intent.</li>
<li><strong>Persona Development</strong>: Develop detailed user personas that represent the target audience, including their long-term goals and desired outcomes. Prioritize understanding how the service can adapt in real-time to changing user needs, offering recommendations, or taking actions aligned with the persona’s current context.</li>
</ul>

<p><strong>2. Forecasting: Predicting Near-Term User Needs</strong></p>

<ul>
<li><strong>Data Collection and Analysis</strong>: Collaborate closely with data scientists and data engineers to analyze historical data (past interactions), user behavior, and external factors. This collaboration ensures that predictive analytics enhance overall user experience, allowing designers to better understand the implications of data on user behaviors.</li>
<li><strong>Predictive Modeling</strong>: Implement continuous learning algorithms that refine predictions over time. Regularly assess how these models evolve, adapting to users’ changing needs and circumstances.</li>
<li><strong>Explore the Delphi Method</strong>: This is a structured communication technique that gathers expert opinions to reach a consensus on future developments. It’s particularly useful for exploring complex issues with uncertain outcomes. Use the Delphi Method to gather insights from industry experts, user researchers, and stakeholders about future user needs and the best strategies to meet those needs. The consensus achieved can help in clearly defining the long-term goals and desired outcomes.</li>
</ul>

<p><strong>Activities:</strong></p>

<ul>
<li>Conduct interviews and workshops with experts using the Delphi Method to validate key trends.</li>
<li>Analyze data and trends to forecast future directions.</li>
</ul>

<h3 id="step-2-imagine-alternative-scenarios">Step 2: Imagine Alternative Scenarios</h3>

<p><strong>Objective:</strong> Explore a range of potential futures based on these changing directions.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/11-hcd-process-accommodate-alternative-scenarios-decision-making.jpg">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="450"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/11-hcd-process-accommodate-alternative-scenarios-decision-making.jpg 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/11-hcd-process-accommodate-alternative-scenarios-decision-making.jpg 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/11-hcd-process-accommodate-alternative-scenarios-decision-making.jpg 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/11-hcd-process-accommodate-alternative-scenarios-decision-making.jpg 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/11-hcd-process-accommodate-alternative-scenarios-decision-making.jpg 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/11-hcd-process-accommodate-alternative-scenarios-decision-making.jpg"
			
			sizes="100vw"
			alt="A diagram illustrating the Human-centered design process to accommodate alternative scenarios in the decision-making."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      The HCD process to accommodate alternative scenarios in the decision-making. (<a href='https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/11-hcd-process-accommodate-alternative-scenarios-decision-making.jpg'>Large preview</a>)
    </figcaption>
  
</figure>

<p><strong>Components:</strong></p>

<p><strong>1. Scenario Planning</strong></p>

<ul>
<li><strong>Scenario Development</strong>: It involves creating detailed, plausible future scenarios based on various external factors, such as technological advancements, social trends, and economic changes. Develop multiple future scenarios that represent different possible user contexts and their impact on their needs.</li>
<li><strong>Scenario Analysis</strong>: From these scenarios, you can outline the long-term goals that users might have in each scenario and design services that anticipate and address these needs. Assess how these scenarios impact user needs and experiences.</li>
</ul>

<p><strong>2. Backcasting: Designing from the Desired Future</strong></p>

<ul>
<li><strong>Define Desired Outcomes</strong>: Clearly outline the long-term goals or future states that users aim to achieve. Use backcasting to reduce cognitive load by designing a service that anticipates future needs, streamlining user interactions, and minimizing decision-making efforts.

<ul>
<li><strong>Use Visioning Planning</strong>: This is a creative process that involves imagining the ideal future state you want to achieve. It helps in setting clear, long-term goals by focusing on the desired outcomes rather than current constraints. Facilitate workshops or brainstorming sessions with stakeholders to co-create a vision of the future. Define what success looks like from the user’s perspective and use this vision to guide the backcasting process.</li>
</ul></li>
<li><strong>Identify Steps to Reach Goals</strong>: Reverse-engineer the user journey by starting from the desired future state and working backward. Identify the necessary steps and milestones and ensure these are communicated transparently to users, allowing them control over their experience.</li>
<li><strong>Create Roadmaps</strong>: Develop detailed roadmaps that outline the sequence of actions needed to transition from the current state to the desired future state. These roadmaps should anticipate obstacles, respect privacy, and avoid manipulative behaviors, empowering users rather than overwhelming them.</li>
</ul>

<p><strong>Activities:</strong></p>

<ul>
<li>Develop and analyze alternative scenarios to explore various potential futures.</li>
<li>Use backcasting to create actionable roadmaps from these scenarios, ensuring they align with long-term goals.</li>
</ul>

<h3 id="step-3-shape-our-choices">Step 3: Shape Our Choices</h3>

<p><strong>Objective:</strong> Leverage these scenarios to spark new ideas and guide impactful design decisions.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/12-representation-final-step.jpg">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/12-representation-final-step.jpg 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/12-representation-final-step.jpg 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/12-representation-final-step.jpg 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/12-representation-final-step.jpg 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/12-representation-final-step.jpg 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/12-representation-final-step.jpg"
			
			sizes="100vw"
			alt="A diagram representing the final step of the anticipatory design process."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Representation of the final step. (<a href='https://files.smashing.media/articles/why-anticipatory-design-not-working-businesses/12-representation-final-step.jpg'>Large preview</a>)
    </figcaption>
  
</figure>

<p><strong>Components:</strong></p>

<p><strong>1. Integrate into the Human-Centered Design Process</strong></p>

<ul>
<li><strong>Iterative Design with Forecasting and Backcasting</strong>: Embed insights from forecasting and backcasting into every stage of the design process. Use these insights to inform user research, prototype development, and usability testing, ensuring that solutions address both predicted future needs and desired outcomes. Continuously refine designs based on user feedback.</li>
<li><strong>Agile Methodologies</strong>: Adopt agile development practices to remain flexible and responsive. Ensure that the service continuously learns from user interactions and feedback, refining its predictions and improving its ability to anticipate needs.</li>
</ul>

<p><strong>2. Implement and Monitor: Ensuring Ongoing Relevance</strong></p>

<ul>
<li><strong>User Feedback Loops</strong>: Establish continuous feedback mechanisms to refine predictive models and workflows. Use this feedback to adjust forecasts and backcasted plans as necessary, keeping the design aligned with evolving user expectations.</li>
<li><strong>Automation Tools</strong>: Collaborate with data scientists and engineers to deploy automation tools that execute workflows and monitor progress toward goals. These tools should adapt based on new data, evolving alongside user behavior and emerging trends.</li>
<li><strong>Performance Metrics</strong>: Define key performance indicators (KPIs) to measure the effectiveness, accuracy, and quality of the anticipatory experience. Regularly review these metrics to ensure that the system remains aligned with intended outcomes.</li>
<li><strong>Continuous Improvement</strong>: Maintain a cycle of continuous improvement where the system learns from each interaction, refining its predictions and recommendations over time to stay relevant and useful.

<ul>
<li><strong>Use Trend Analysis</strong>: This involves identifying and analyzing patterns in data over time to predict future developments. This method helps you understand the direction in which user behaviors, technologies, and market conditions are heading. Use trend analysis to identify emerging trends that could influence user needs in the future. This will inform the desired outcomes by highlighting what users might require or expect from a service as these trends evolve.</li>
</ul></li>
</ul>

<p><strong>Activities:</strong></p>

<ul>
<li>Implement design solutions based on scenario insights and iterate based on user feedback.</li>
<li>Regularly review and adjust designs using performance metrics and continuous improvement practices.</li>
</ul>

<h2 id="conclusion-navigating-the-future-of-anticipatory-design">Conclusion: Navigating the Future of Anticipatory Design</h2>

<p>Anticipatory design holds immense potential to revolutionize user experiences by predicting and fulfilling needs before they are even articulated. However, as seen in the examples discussed, the gap between expectation and execution can lead to user dissatisfaction and erode trust.</p>

<p>To navigate the future of anticipatory design successfully, businesses must prioritize <strong>transparency</strong>, <strong>accountability</strong>, and <strong>user empowerment</strong>. By enhancing contextual awareness, maintaining user control, and aligning short-term predictions with long-term goals, companies can create experiences that are not only innovative but also deeply resonant with their users’ needs.</p>

<p>Moreover, combining anticipation with foresight allows businesses to prepare for a range of future scenarios, ensuring that their designs remain relevant and effective even as circumstances change. The proposed 3-step framework &mdash; anticipating directions of change, imagining alternative scenarios, and shaping our choices &mdash; provides a practical roadmap for integrating these principles into the design process.</p>

<p>As we move forward, the challenge will be to balance the power of AI with the human need for clarity, control, and trust. By doing so, businesses can fulfill the promise of anticipatory design, creating products and services that are not only efficient and personalized but also ethical and user-centric.</p>

<p>In the end,</p>

<blockquote class="pull-quote">
  <p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aThe%20success%20of%20anticipatory%20design%20will%20depend%20on%20its%20ability%20to%20enhance,%20rather%20than%20replace,%20the%20human%20experience.%0a&url=https://smashingmagazine.com%2f2024%2f09%2fwhy-anticipatory-design-not-working-businesses%2f">
      
The success of anticipatory design will depend on its ability to enhance, rather than replace, the human experience.

    </a>
  </p>
  <div class="pull-quote__quotation">
    <div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
  </div>
</blockquote>

<p>It is a tool to empower users, not to dictate their choices. When done right, anticipatory design can lead to a future where technology seamlessly integrates with our lives, making everyday experiences simpler, more intuitive, and ultimately more satisfying.</p>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(yk)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item><item><author>Paul Boag</author><title>The Big Difference Between Digital Product And Web Design</title><link>https://www.smashingmagazine.com/2024/09/big-difference-between-digital-product-and-web-design/</link><pubDate>Tue, 03 Sep 2024 09:00:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2024/09/big-difference-between-digital-product-and-web-design/</guid><description>Designing for digital products requires a different mindset than traditional websites. It’s all about continuous adaptation, refining, and iterating as user behavior and needs evolve. Paul Boag reflects on the key differences, including how the frequency of usage impacts your design approach and what you can do about it.</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2024/09/big-difference-between-digital-product-and-web-design/" />
              <title>The Big Difference Between Digital Product And Web Design</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>The Big Difference Between Digital Product And Web Design</h1>
                  
                    
                    <address>Paul Boag</address>
                  
                  <time datetime="2024-09-03T09:00:00&#43;00:00" class="op-published">2024-09-03T09:00:00+00:00</time>
                  <time datetime="2024-09-03T09:00:00&#43;00:00" class="op-modified">2026-02-09T03:03:08+00:00</time>
                </header>
                
                

<p>In the early days of the web, I remember how annoying it was when print designers would claim they could design websites, too. They assumed that just because they could design for one medium, they could design for the other.</p>

<p>That assumption often led to bad user experiences. The skills for effective web design are quite different from those for print design.</p>

<p>A similar thing happens today. Designers know how to design traditional marketing and e-commerce sites. They, therefore, presume they have the skills to work on SaaS apps and other digital projects.</p>

<p>But when it comes to design, there’s <strong>a big distinction between traditional websites and digital products</strong>. If we want to work on digital products, we need to understand those differences and adopt a different approach to our work.</p>

<h2 id="people-interact-with-digital-products-more-regularly">People Interact with Digital Products More Regularly</h2>

<p>The biggest difference is that users interact with digital products <em>more</em> than most websites.</p>

<p>Think about your own web use. What are the sites you visit most often? If you listed your top ten, well over half would be some form of digital product, from a social media application to a productivity tool.</p>

<p>So, with that in mind, let’s dive into the specifics of <em>how</em> the frequency of usage impacts our design approach and what we can do about it.</p>

<div data-audience="non-subscriber" data-remove="true" class="feature-panel-container">

<aside class="feature-panel" style="">
<div class="feature-panel-left-col">

<div class="feature-panel-description"><p>Meet <strong><a data-instant href="/printed-books/touch-design-for-mobile-interfaces/">Touch Design for Mobile Interfaces</a></strong>, Steven Hoober’s brand-new guide on <strong>designing for mobile</strong> with proven, universal, human-centric guidelines. <strong>400 pages</strong>, jam-packed with in-depth user research and <strong>best practices</strong>.</p>
<a data-instant href="https://www.smashingmagazine.com/printed-books/touch-design-for-mobile-interfaces/" class="btn btn--green btn--large" style="">Jump to table of contents&nbsp;↬</a></div>
</div>
<div class="feature-panel-right-col"><a data-instant href="https://www.smashingmagazine.com/printed-books/touch-design-for-mobile-interfaces/" class="feature-panel-image-link">
<div class="feature-panel-image"><picture><source type="image/avif" srcSet="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/14bcab88-b622-47f6-a51d-76b0aa003597/touch-design-book-shop-opt.avif" />
<img
    loading="lazy"
    decoding="async"
    class="feature-panel-image-img"
    src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/b14658fc-bb2d-41a6-8d1a-70eaaf1b8ec8/touch-design-book-shop-opt.png"
    alt="Feature Panel"
    width="480"
    height="697"
/>
</picture>
</div>
</a>
</div>
</aside>
</div>

<h2 id="why-frequency-of-use-matters-so-much">Why Frequency of Use Matters So Much</h2>

<p>The more we interact with a web app or website, the more important the overall user experience becomes. Users develop <strong>deeper connections</strong> with digital products. They also form <strong>more complex mental models of products</strong> they use often. This changes how they see the app in two fundamental ways.</p>

<h3 id="friction-becomes-significantly-more-irritating">Friction Becomes Significantly More Irritating</h3>

<p>First, friction points become increasingly annoying. Users interact with a digital product many times per day. Any small problem in the interface compounds quickly.</p>

<p>When you encounter a clunky UI or confusing workflow on a website you only visit once in a while, it’s frustrating but easy to overlook. But, when that same friction occurs in an app you use multiple times per day, it becomes a major source of irritation.</p>

<h3 id="change-undermines-our-procedural-knowledge">Change Undermines Our Procedural Knowledge</h3>

<p>Second, the more we use an app, the more familiar we become with it and how it works. We end up using the app automatically, without even thinking, much like when you’ve been driving a car for years, you don’t think about the process. This is known as <a href="https://en.wikipedia.org/wiki/Procedural_knowledge">procedural knowledge</a>.</p>

<p>This is great news for digital product designers, as it means we can create interfaces that become <strong>second nature</strong> to our users. But, if we break their mental models or introduce unexpected changes, we risk causing frustration and disruption.</p>

<p>So, knowing these two things, how does this affect our approach to digital product design? Well, let’s start by considering the problem of friction.</p>

<h2 id="fixing-friction-points">Fixing Friction Points</h2>

<p>As digital product designers, we need to become obsessed with removing friction from the user experience. Failure to do so will alienate users over time and ultimately lead to churn.</p>

<p>To mitigate friction, we need to constantly seek out friction points. We need to diagnose the exact problem and then test any solution to ensure it does, in fact, make things better.</p>

<p>So, how exactly do we find friction points?</p>

<h3 id="finding-friction">Finding Friction</h3>

<p>The most obvious way is to <strong>listen to customers</strong>. User feedback is crucial in identifying friction points in the user experience. However, we can’t simply rely on that. Analytics can be your friend, too.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/1-microsoft-clarity-insights.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="486"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/1-microsoft-clarity-insights.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/1-microsoft-clarity-insights.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/1-microsoft-clarity-insights.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/1-microsoft-clarity-insights.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/1-microsoft-clarity-insights.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/1-microsoft-clarity-insights.png"
			
			sizes="100vw"
			alt="Screenshot from Microsoft Clarity with essential insights"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Microsoft Clarity offers essential insights to pinpoint issues on your app. (<a href='https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/1-microsoft-clarity-insights.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>Microsoft Clarity offers essential insights to pinpoint issues on your app.</p>

<p>I would highly recommend using a tool like <a href="https://clarity.microsoft.com/projects">Microsoft Clarity</a>. It gives detailed insights into user behavior. They help find points of friction. These include the following:</p>

<ul>
<li><strong>Rage clicks</strong>: Where individuals continuously click on something due to frustration.</li>
<li><strong>Dead clicks</strong>: Where people click on something that is not clickable.</li>
<li><strong>Excessive scrolling</strong>: Where users scroll up and down looking for something.</li>
<li><strong>Quick backs</strong>: Where a person accidentally lands on a screen and promptly navigates back to the previous one.</li>
<li><strong>Error messages</strong>: Where the user is triggering an error in the system.</li>
</ul>

<p>These will help you identify potential friction points that you can then investigate further.</p>

<div class="partners__lead-place"></div>

<h3 id="diagnosing-friction">Diagnosing Friction</h3>

<p>Once you know where things are going wrong, you can use heat maps and session recordings in Clarity. They will help you understand the problem. Why are people excessively scrolling or rage-clicking, for example?</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/2-clarity-session-recordings.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="486"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/2-clarity-session-recordings.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/2-clarity-session-recordings.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/2-clarity-session-recordings.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/2-clarity-session-recordings.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/2-clarity-session-recordings.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/2-clarity-session-recordings.png"
			
			sizes="100vw"
			alt="A screenshot of session recordings in Clarity"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Session recordings are valuable for pinpointing particular problems in the interface. (<a href='https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/2-clarity-session-recordings.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>Session recordings are valuable for pinpointing particular problems in the interface.</p>

<p>If the heat maps or session recordings don’t make things clear, that is where you would need to consider <strong>usability testing</strong>.</p>

<p>Once you understand the problem, you can then begin exploring solutions and testing them rigorously to ensure they effectively reduce friction.</p>

<h3 id="testing-your-friction-busting-solutions">Testing Your Friction Busting Solutions</h3>

<p>How you test your solution to the point of friction will depend on the size and complexity of the changes you need to make.</p>

<p>For small changes, such as tweaking the UI or changing some text, A/B testing is often the best approach. You show the new solution to a subset of your users and measure the impact on those indicators of frustration.</p>

<p>But A/B testing isn’t always the right approach. If your app has lower levels of traffic, getting results from a statistically significant A/B test can be time-consuming.</p>

<p>Also, when your solution involves big changes, like adding new features or redesigning many screens, A/B testing can be expensive. That is because you need to first fully develop the solution before you can test it, meaning that it can prove costly if that solution turns out not to work.</p>

<p>Your best approach in such situations is to <strong>create a prototype for remote testing</strong>.</p>

<p>Initially, I usually conduct unfacilitated testing with a tool such as <a href="https://maze.co/">Maze</a>. Unfacilitated testing is easy to set up. It requires minimal time investment, and Maze offers analytics, so you don’t necessarily need to watch every session back.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/3-maze-remote-testing.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="486"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/3-maze-remote-testing.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/3-maze-remote-testing.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/3-maze-remote-testing.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/3-maze-remote-testing.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/3-maze-remote-testing.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/3-maze-remote-testing.png"
			
			sizes="100vw"
			alt="Screenshot of Maze homepage where it says that User insights available at the speed of product development"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Maze serves as a valuable resource for conducting remote testing, offering both test data and recordings for each test. (<a href='https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/3-maze-remote-testing.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>Maze serves as a valuable resource for conducting remote testing, offering both test data and recordings for each test.</p>

<p>If testing uncovers issues you can’t fix, then try <strong>facilitated testing</strong>. Facilitated testing enables you to delve into any arising issues by asking questions.</p>

<p>Once you have a solution that works, it’s time to roll that feature out. But you need to be careful at this point because of the procedural knowledge I mentioned earlier.</p>

<div class="partners__lead-place"></div>

<h2 id="dealing-with-the-dangers-of-procedural-knowledge">Dealing With the Dangers of Procedural Knowledge</h2>

<p>Introducing fixes to a user interface has a good chance of breaking a user’s procedural knowledge. Interface elements are often moved and so are no longer where users expect to find them, or they look different, and so users miss them.</p>

<p>This can upset many existing customers. That can panic stakeholders and lead to rash decisions.</p>

<p>To some extent, you need to accept that this is inevitable and prepare stakeholders for this eventuality. Users will normally adapt in a couple of weeks of regular use, and so there is no immediate need to panic.</p>

<p>That said, there are things you can do to mitigate the reaction.</p>

<ol>
<li>To start with, you can <strong>let people know that change is coming</strong>. This allows people to mentally adapt to the change before it occurs.</li>
<li>Secondly, if the change is significant, you may wish to <strong>give people the ability to opt out of it</strong>, at least in the short term. That is why some apps roll out features in beta and give users the option to opt in or out. This provides a sense of control that reduces people’s reactions.</li>
<li>Finally, you can also <strong>provide guidance within the user interface itself</strong>. Tooltips and overlays can show users where features have been moved so new interface elements can be highlighted.</li>
</ol>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/4-slack-tooltips.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="498"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/4-slack-tooltips.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/4-slack-tooltips.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/4-slack-tooltips.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/4-slack-tooltips.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/4-slack-tooltips.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/4-slack-tooltips.png"
			
			sizes="100vw"
			alt="Screenshot from Slack onboarding with an open tooltip"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Slack use tooltips to explain how their interface works. (<a href='https://files.smashing.media/articles/big-difference-between-digital-product-and-web-design/4-slack-tooltips.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>Slack use tooltips to explain how their interface works.</p>

<p>The key is to strike a balance. You must add needed improvements while causing minimal disruption to users’ workflows. You will also need to carefully monitor adoption and adapt accordingly.</p>

<h2 id="change-the-way-we-work">Change The Way We Work</h2>

<p>That constant monitoring and adaptation lies at the heart of digital product design. You cannot rely solely on the initial solution but must be prepared to continuously refine and iterate as user behavior and needs evolve.</p>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(yk)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item><item><author>Paul Boag</author><title>Rethinking The Role Of Your UX Teams And Move Beyond Firefighting</title><link>https://www.smashingmagazine.com/2024/07/rethinking-role-ux-teams-mov-beyond-firefighting/</link><pubDate>Mon, 29 Jul 2024 18:00:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2024/07/rethinking-role-ux-teams-mov-beyond-firefighting/</guid><description>Many UX professionals often find themselves working alone, and usually face more projects impacting user experience than they can handle. In this article, Paul Boag explains how UX teams can be transformed into a significant driver of customer-centric innovation within organizations.</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2024/07/rethinking-role-ux-teams-mov-beyond-firefighting/" />
              <title>Rethinking The Role Of Your UX Teams And Move Beyond Firefighting</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>Rethinking The Role Of Your UX Teams And Move Beyond Firefighting</h1>
                  
                    
                    <address>Paul Boag</address>
                  
                  <time datetime="2024-07-29T18:00:00&#43;00:00" class="op-published">2024-07-29T18:00:00+00:00</time>
                  <time datetime="2024-07-29T18:00:00&#43;00:00" class="op-modified">2026-02-09T03:03:08+00:00</time>
                </header>
                
                

<p>In my experience of building and supporting UX teams, most of them are significantly under-resourced. In fact, the term &ldquo;team&rdquo; can often be a stretch, with many user experience professionals finding themselves alone in their roles.</p>

<p>Typically, there are way more projects that impact the user experience than the team can realistically work on. Consequently, most UX teams are in a constant state of firefighting and achieve relatively little in improving the overall experience.</p>

<p>We can complain about being under-resourced as much as we want, but the truth is that our teams are unlikely to grow to a size where we have sufficient staff to address every detail of the experience. Therefore, in this post, I want to step back and reconsider the role of user experience professionals and how UX teams can best improve the user experience of an organization.</p>

<div data-audience="non-subscriber" data-remove="true" class="feature-panel-container">

<aside class="feature-panel" style="">
<div class="feature-panel-left-col">

<div class="feature-panel-description"><p>Meet <strong><a data-instant href="https://www.smashingconf.com/online-workshops/">Smashing Workshops</a></strong> on <strong>front-end, design &amp; UX</strong>, with practical takeaways, live sessions, <strong>video recordings</strong> and a friendly Q&amp;A. With Brad Frost, Stéph Walter and <a href="https://smashingconf.com/online-workshops/workshops">so many others</a>.</p>
<a data-instant href="smashing-workshops" class="btn btn--green btn--large" style="">Jump to the workshops&nbsp;↬</a></div>
</div>
<div class="feature-panel-right-col"><a data-instant href="smashing-workshops" class="feature-panel-image-link">
<div class="feature-panel-image">
<img
    loading="lazy"
    decoding="async"
    class="feature-panel-image-img"
    src="/images/smashing-cat/cat-scubadiving-panel.svg"
    alt="Feature Panel"
    width="257"
    height="355"
/>

</div>
</a>
</div>
</aside>
</div>

<h2 id="what-is-the-role-of-a-ux-professional">What Is The Role Of A UX Professional?</h2>

<p>There is a danger that as UX professionals, we focus too much on the tools of our trade rather than the desired outcome.</p>

<p>In other words, we tend to think that our role involves activities such as:</p>

<ul>
<li>Prototyping</li>
<li>User research</li>
<li>Interface design</li>
<li>Testing with users</li>
</ul>

<p>But these are merely the means to an end, not the end goal itself. These activities are also time-consuming and resource-intensive, potentially monopolizing the attention of a small UX team.</p>

<p>Our true role is to improve the user experience as they interact with our organization&rsquo;s digital channels.</p>

<blockquote class="pull-quote">
  <p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=The%20ultimate%20goal%20for%20a%20UX%20team%20should%20be%20to%20tangibly%20enhance%20the%20customer%20experience,%20rather%20than%20solely%20focusing%20on%20executing%20design%20artifacts.%20&url=https://smashingmagazine.com%2f2024%2f07%2frethinking-role-ux-teams-mov-beyond-firefighting%2f">
      The ultimate goal for a UX team should be to tangibly enhance the customer experience, rather than solely focusing on executing design artifacts. 
    </a>
  </p>
  <div class="pull-quote__quotation">
    <div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
  </div>
</blockquote>

<p>This reframing of our role opens up new possibilities for how we can best serve our organizations and their customers. Instead of solely focusing on the tactical activities of UX, we must proactively identify the most impactful opportunities to enhance the overall customer experience.</p>

<h2 id="changing-how-we-approach-our-role">Changing How We Approach Our Role</h2>

<p>If our goal is to elevate the customer experience, rather than solely executing UX activities, we need to change how we approach our role, especially in under-resourced teams.</p>

<p>To maximize our impact, we must shift from a tactical, project-based mindset to a more strategic, leadership-oriented one.</p>

<blockquote class="pull-quote">
  <p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=We%20need%20to%20become%20experience%20evangelists%20who%20can%20influence%20the%20broader%20organization%20and%20inspire%20others%20to%20prioritize%20and%20champion%20user%20experience%20improvements%20across%20the%20business.%20&url=https://smashingmagazine.com%2f2024%2f07%2frethinking-role-ux-teams-mov-beyond-firefighting%2f">
      We need to become experience evangelists who can influence the broader organization and inspire others to prioritize and champion user experience improvements across the business. 
    </a>
  </p>
  <div class="pull-quote__quotation">
    <div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
  </div>
</blockquote>

<p>As I help shape UX teams in organizations, I achieve this by focusing on four critical areas:</p>

<ul>
<li><a href="#the-creation-of-resources">The creation of shared resources</a>,</li>
<li><a href="#the-provision-of-training">The provision of training</a>,</li>
<li><a href="#the-offering-of-consultative-services">The offering of consultative services</a> and</li>
<li><a href="#building-a-ux-community">The building of community</a>.</li>
</ul>

<p>Let’s explore these in turn.</p>

<div data-audience="non-subscriber" data-remove="true" class="feature-panel-container">

<aside class="feature-panel" style="">
<div class="feature-panel-left-col">

<div class="feature-panel-description"><p>Meet <strong><a data-instant href="https://www.smashingconf.com/online-workshops/">Smashing Workshops</a></strong> on <strong>front-end, design &amp; UX</strong>, with practical takeaways, live sessions, <strong>video recordings</strong> and a friendly Q&amp;A. With Brad Frost, Stéph Walter and <a href="https://smashingconf.com/online-workshops/workshops">so many others</a>.</p>
<a data-instant href="smashing-workshops" class="btn btn--green btn--large" style="">Jump to the workshops&nbsp;↬</a></div>
</div>
<div class="feature-panel-right-col"><a data-instant href="smashing-workshops" class="feature-panel-image-link">
<div class="feature-panel-image">
<img
    loading="lazy"
    decoding="async"
    class="feature-panel-image-img"
    src="/images/smashing-cat/cat-scubadiving-panel.svg"
    alt="Feature Panel"
    width="257"
    height="355"
/>

</div>
</a>
</div>
</aside>
</div>

<h3 id="the-creation-of-resources">The Creation Of Resources</h3>

<p>It is important for any UX team to demonstrate its value to the organization. One way to achieve this is by creating a set of tangible resources that can be utilized by others throughout the organization.</p>

<p>Therefore, when creating a new UX team, I initially focus on establishing a core set of resources that provide value and leave an impressive impression.</p>

<p>Some of the resources I typically focus on producing include:</p>

<ul>
<li><strong>User Experience Playbook</strong><br />
An online learning resource featuring articles, guides, and cheatsheets that cover topics ranging from conducting surveys to performing AB testing.</li>
<li><strong>Design System</strong><br />
A set of user interface components that can be used by teams to quickly prototype ideas and fast-track their development projects.</li>
<li><strong>Recommended Supplier List</strong><br />
A list of UX specialists that have been vetted by the team, so departments can be confident in hiring them if they want help improving the user experience.</li>
<li><strong>User Research Assets</strong><br />
A collection of personas, journey maps, and data on user behavior for each of the most common audiences that the organization interacts with.</li>
</ul>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/rethinking-role-ux-teams-mov-beyond-firefighting/rethinking-UX-service-manual.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="579"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/rethinking-role-ux-teams-mov-beyond-firefighting/rethinking-UX-service-manual.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/rethinking-role-ux-teams-mov-beyond-firefighting/rethinking-UX-service-manual.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/rethinking-role-ux-teams-mov-beyond-firefighting/rethinking-UX-service-manual.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/rethinking-role-ux-teams-mov-beyond-firefighting/rethinking-UX-service-manual.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/rethinking-role-ux-teams-mov-beyond-firefighting/rethinking-UX-service-manual.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/rethinking-role-ux-teams-mov-beyond-firefighting/rethinking-UX-service-manual.png"
			
			sizes="100vw"
			alt="A service manual or digital playbook"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      A service manual or digital playbook can serve as a powerful resource to assist and educate colleagues throughout your organization. (<a href='https://files.smashing.media/articles/rethinking-role-ux-teams-mov-beyond-firefighting/rethinking-UX-service-manual.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>These resources need to be viewed as living services that your UX team supports and refines over time. Note as well that these resources include educational elements. The importance of education and training cannot be overstated.</p>

<h3 id="the-provision-of-training">The Provision Of Training</h3>

<p>By providing training and educational resources, your UX team can empower and upskill the broader organization, enabling them to better prioritize and champion user experience improvements. This approach effectively extends the team’s reach beyond its limited internal headcount, seeking to turn everybody into user experience practitioners.</p>

<p>This training provision should include a blend of &lsquo;live&rsquo; learning and self-learning materials, with a greater focus on the latter since it can be created once and updated periodically.</p>

<p>Most of the self-learning content will be integrated into the playbook and will either be custom-created by your UX team (when specific to your organization) or purchased (when more generic).</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/rethinking-role-ux-teams-mov-beyond-firefighting/rethinking-ux-design-courses-learn-ux-design-online.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="579"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/rethinking-role-ux-teams-mov-beyond-firefighting/rethinking-ux-design-courses-learn-ux-design-online.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/rethinking-role-ux-teams-mov-beyond-firefighting/rethinking-ux-design-courses-learn-ux-design-online.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/rethinking-role-ux-teams-mov-beyond-firefighting/rethinking-ux-design-courses-learn-ux-design-online.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/rethinking-role-ux-teams-mov-beyond-firefighting/rethinking-ux-design-courses-learn-ux-design-online.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/rethinking-role-ux-teams-mov-beyond-firefighting/rethinking-ux-design-courses-learn-ux-design-online.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/rethinking-role-ux-teams-mov-beyond-firefighting/rethinking-ux-design-courses-learn-ux-design-online.png"
			
			sizes="100vw"
			alt="Interaction Design Foundation"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Services like the Interaction Design Foundation offers a wide range of self-learning training materials that can be integrated into your training program. (<a href='https://files.smashing.media/articles/rethinking-role-ux-teams-mov-beyond-firefighting/rethinking-ux-design-courses-learn-ux-design-online.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>In addition to this self-learning content, the team can also offer longer workshops, lunchtime inspirational presentations, and possibly even in-house conferences.</p>

<p>Of course, the devil can be in the details when it comes to the user experience, so colleagues across the organization will also need individual support.</p>

<h3 id="the-offering-of-consultative-services">The Offering Of Consultative Services</h3>

<p>Although your UX team may not have the capacity to work directly on every customer experience initiative, you can provide consultative services to guide and support other teams. This strategic approach enables your UX team to have a more significant impact by empowering and upskilling the broader organization, rather than solely concentrating on executing design artifacts.</p>

<p>Services I tend to offer include:</p>

<ul>
<li><strong>UX reviews</strong><br />
A chance for those running digital services to ask a UX professional to review their existing services and identify areas for improvement.</li>
<li><strong>UX discovery</strong><br />
A chance for those considering developing a digital service to get it assessed based on whether there is a user need.</li>
<li><strong>Workshop facilitation</strong><br />
Your UX team could offer a range of UX workshops to help colleagues understand user needs better or formulate project ideas through <a href="https://www.interaction-design.org/literature/topics/design-thinking">design thinking</a>.</li>
<li><strong>Consultancy clinics</strong><br />
Regular timeslots where those with questions about UX can “drop in” and talk with a UX expert.</li>
</ul>

<p>But it is important that your UX team limits their involvement and resists the urge to get deeply involved in the execution of every project. Their role is to be an advisor, not an implementer.</p>

<p>Through the provision of these consultative services, your UX team will start identifying individuals across the organization who value user experience and recognize its importance to some degree. The ultimate goal is to transform these individuals into advocates for UX, a process that can be facilitated by establishing a UX community within your organization.</p>

<h3 id="building-a-ux-community">Building A UX Community</h3>

<p>Building a UX community within the organization can amplify the impact of your UX team&rsquo;s efforts and create a cohesive culture focused on customer experience. This community can serve as a network of champions and advocates for user experience, helping spread awareness and best practices throughout the organization.</p>

<p>Begin by creating a mailing list or a Teams/Slack channel. Using these platforms, your UX team can exchange best practices, tips, and success stories. Additionally, you can interact with the community by posing questions, creating challenges, and organizing group activities.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/rethinking-role-ux-teams-mov-beyond-firefighting/rethinking-ux-design-principles.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="619"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/rethinking-role-ux-teams-mov-beyond-firefighting/rethinking-ux-design-principles.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/rethinking-role-ux-teams-mov-beyond-firefighting/rethinking-ux-design-principles.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/rethinking-role-ux-teams-mov-beyond-firefighting/rethinking-ux-design-principles.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/rethinking-role-ux-teams-mov-beyond-firefighting/rethinking-ux-design-principles.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/rethinking-role-ux-teams-mov-beyond-firefighting/rethinking-ux-design-principles.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/rethinking-role-ux-teams-mov-beyond-firefighting/rethinking-ux-design-principles.png"
			
			sizes="100vw"
			alt="Determine your organization’s design principles"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Utilize your community to assist in determining your organization’s design principles. This approach will not only involve the community but also lend greater authority to the design principles. (<a href='https://files.smashing.media/articles/rethinking-role-ux-teams-mov-beyond-firefighting/rethinking-ux-design-principles.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>For example, your UX team could facilitate the creation of <a href="https://principles.design/">design principles</a> by the community, which could then be promoted organization-wide. The team could also nurture a sense of friendly competition by encouraging community members to rate their digital services against the <a href="https://en.wikipedia.org/wiki/System_usability_scale">System Usability Scale</a> or another metric.</p>

<p>The goal is to keep UX advocates engaged and advocating for UX within their teams, with a continual focus on growing the group and bringing more people into the fold.</p>

<p>Finally, this community can be rewarded for their contributions. For example, they could have priority access to services or early access to educational programs. Anything to make them feel like they are a part of something special.</p>

<div class="partners__lead-place"></div>

<h2 id="an-approach-not-without-its-challenges">An Approach Not Without Its Challenges</h2>

<p>I understand that many of my suggestions may seem unattainable. Undoubtedly, you are deeply immersed in day-to-day project tasks and troubleshooting. I acknowledge that it is much easier to establish this model when starting from a blank canvas. However, it is possible to transition an existing UX team from tactical project work to UX leadership.</p>

<p>The key to success lies in establishing a new, clear mandate for the group, rather than having it defined by past expectations. This new mandate needs to be supported by senior management, which means securing their buy-in and understanding of the broader value that user experience can provide to the organization.</p>

<p>I tend to approach this by suggesting that your UX team be redefined as <a href="https://www.usertesting.com/blog/coe-center-of-excellence">a center of excellence</a> (CoE). A CoE refers to a team or department that develops specialized expertise in a particular area and then disseminates that knowledge throughout the organization.</p>

<p>This term is familiar to management and helps shift management and colleague thinking away from viewing the team as UX implementors to a leadership role. Alongside this new definition, I also seek to establish new objectives and key performance indicators with management.</p>

<p>These new objectives should <strong>focus on education and empowerment</strong>, not implementation. When it comes to key performance indicators, they should revolve around the organization&rsquo;s understanding of UX, overall user satisfaction, and productivity metrics, rather than the success or failure of individual projects.</p>

<p>It is not an easy shift to make, but if you do it successfully, your UX team can evolve into a powerful force for driving customer-centric innovation throughout the organization.</p>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(vf, il)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item><item><author>Eric Bailey</author><title>Getting To The Bottom Of Minimum WCAG-Conformant Interactive Element Size</title><link>https://www.smashingmagazine.com/2024/07/getting-bottom-minimum-wcag-conformant-interactive-element-size/</link><pubDate>Fri, 19 Jul 2024 13:00:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2024/07/getting-bottom-minimum-wcag-conformant-interactive-element-size/</guid><description>WCAG provides guidance for making interactive elements more accessible by specifying minimum size requirements. In fact, the requirements are documented in two Success Criteria: 2.5.5 and 2.5.8. Despite this, WCAG can be difficult to achieve due to a number of misconceptions about the requirements. In this article, Eric Bailey discusses the nuances of interactive element sizes and clarifies what it looks like to provide accessible interactive experiences using WCAG-compliant target sizes.</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2024/07/getting-bottom-minimum-wcag-conformant-interactive-element-size/" />
              <title>Getting To The Bottom Of Minimum WCAG-Conformant Interactive Element Size</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>Getting To The Bottom Of Minimum WCAG-Conformant Interactive Element Size</h1>
                  
                    
                    <address>Eric Bailey</address>
                  
                  <time datetime="2024-07-19T13:00:00&#43;00:00" class="op-published">2024-07-19T13:00:00+00:00</time>
                  <time datetime="2024-07-19T13:00:00&#43;00:00" class="op-modified">2026-02-09T03:03:08+00:00</time>
                </header>
                
                

<p>There are many rumors and misconceptions about conforming to WCAG criteria for the minimum sizing of interactive elements. I’d like to use this post to demystify <strong>what is needed for baseline compliance</strong> and to point out an approach for making successful and inclusive interactive experiences using ample target sizes.</p>

<h2 id="minimum-conformant-pixel-size">Minimum Conformant Pixel Size</h2>

<p>Getting right to it: When it comes to pure Web Content Accessibility Guidelines (WCAG) conformance, <strong>the bare minimum</strong> <a href="https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum.html#dfn-css-pixel"><strong>pixel size</strong></a> <strong>for an interactive, non-inline element is 24×24 pixels</strong>. This is outlined in <a href="https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum.html">Success Criterion 2.5.8: Target Size (Minimum)</a>.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/1-aa-compliant.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="316"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/1-aa-compliant.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/1-aa-compliant.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/1-aa-compliant.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/1-aa-compliant.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/1-aa-compliant.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/1-aa-compliant.png"
			
			sizes="100vw"
			alt="Two panels, each featuring a bright pink square. The first panel’s square measures 16 pixels×16 pixels, and its title reads, ‘Not WCAG 2.2 AA Conformant’. The second panel’s square measures 24×24 pixels, and its title reads, ‘WCAG 2.2 AA Conformant.’"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/1-aa-compliant.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>Success Criterion 2.5.8 is <strong>level AA</strong>, which is the most commonly used level for public, mass-consumed websites. This Success Criterion (or SC for short) is sometimes confused for <a href="https://www.w3.org/WAI/WCAG22/Understanding/target-size-enhancedhttps://www.w3.org/WAI/WCAG22/Understanding/target-size-enhanced">SC 2.5.5 Target Size (Enhanced)</a>, which is level AAA. The two are distinct and provide separate guidance for properly sizing interactive elements, even if they appear similar at first glance.</p>

<p>SC 2.5.8 is relatively new to WCAG, having been released as <a href="https://www.w3.org/WAI/standards-guidelines/wcag/new-in-22/#258-target-size-minimum-aa">part of WCAG version 2.2</a>, which was published on October 5th, 2023. WCAG 2.2 is <strong>the most current version of the standard</strong>, but this newer release date means that knowledge of its existence isn’t as widespread as the older SC, especially outside of web accessibility circles. That said, <strong>WCAG 2.2 will remain the standard</strong> until WCAG 3.0 is released, something that is likely going to take 10–15 years or more to happen.</p>

<p>SC 2.5.5 calls for larger interactive elements sizes that are at least <strong>44×44 pixels</strong> (compared to the SC 2.5.8 requirement of 24×24 pixels). At the same time, notice that SC 2.5.5 is <a href="https://tetralogical.com/blog/2021/11/26/understanding-wcag-level-aaa/"><strong>level AAA</strong></a> (compared to SC 2.5.8, level AA) which is a level reserved for specialized support beyond level AA.</p>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/2-aaa-compliant.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="316"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/2-aaa-compliant.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/2-aaa-compliant.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/2-aaa-compliant.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/2-aaa-compliant.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/2-aaa-compliant.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/2-aaa-compliant.png"
			
			sizes="100vw"
			alt="Two panels, each featuring a bright pink square. The first panel’s square measures 24 pixels×24 pixels, and its title reads, ‘Not WCAG 2.2 AAA Conformant’. The second panel’s square measures 44×44 pixels, and its title reads, ‘WCAG 2.2 AAA Conformant.’"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/2-aaa-compliant.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p><strong>Sites that need to be fully <a href="https://www.w3.org/TR/WCAG22/#conformance-reqs">WCAG Level AAA conformant</a> are rare</strong>. Chances are that if you are making a website or web app, you’ll only need to support level AA. Level AAA is often reserved for large or highly specialized institutions.</p>

<div data-audience="non-subscriber" data-remove="true" class="feature-panel-container">

<aside class="feature-panel" style="">
<div class="feature-panel-left-col">

<div class="feature-panel-description"><p>Meet <strong><a data-instant href="/printed-books/typescript-in-50-lessons/">“TypeScript in 50 Lessons”</a></strong>, our shiny new guide to TypeScript. With detailed <strong>code walkthroughs</strong>, hands-on examples and common gotchas. For developers who know enough <strong>JavaScript</strong> to be dangerous.</p>
<a data-instant href="/printed-books/typescript-in-50-lessons/" class="btn btn--green btn--large" style="">Jump to table of contents&nbsp;↬</a></div>
</div>
<div class="feature-panel-right-col"><a data-instant href="/printed-books/typescript-in-50-lessons/" class="feature-panel-image-link">
<div class="feature-panel-image"><picture><source type="image/avif" srcSet="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/2732dfe9-e1ee-41c3-871a-6252aeda741c/typescript-panel.avif" />
<img
    loading="lazy"
    decoding="async"
    class="feature-panel-image-img"
    src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/c2f2c6d6-4e85-449a-99f5-58bd053bc846/typescript-shop-cover-opt.png"
    alt="Feature Panel"
    width="481"
    height="698"
/>
</picture>
</div>
</a>
</div>
</aside>
</div>

<h3 id="making-interactive-elements-larger-with-css-padding">Making Interactive Elements Larger With CSS Padding</h3>

<p>The family of <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/padding"><code>padding</code>-related properties</a> in CSS can be used to extend the interactive area of an element to make it conformant. For example, declaring <code>padding: 4px;</code> on an element that measures 16×16 pixels invisibly increases its bounding box to a total of 24×24 pixels. This, in turn, means the interactive element satisfies SC 2.5.8.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/3-padding.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="316"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/3-padding.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/3-padding.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/3-padding.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/3-padding.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/3-padding.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/3-padding.png"
			
			sizes="100vw"
			alt="Two panels, each featuring a bright pink square with a thick, lighter pink outer border. The first panel’s square measures 16 pixels×16 pixels, and its outer border measures 4 pixels wide. Its title reads, ‘WCAG 2.2 AA Conformant’. The second panel’s square measures 24×24 pixels, and its outer border measures 10 pixels wide, and its title reads, ‘WCAG 2.2 AAA Conformant.’"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      16 + 4  + 4 = 24. 24 + 10 + 10 = 44. (<a href='https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/3-padding.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>This is a good trick for making smaller interactive elements easier to click and tap. If you want more information about this sort of thing, I enthusiastically recommend <a href="https://ishadeed.com/">Ahmad Shadeed</a>’s post, “<a href="https://ishadeed.com/article/target-size/">Designing better target sizes</a>”.</p>

<p>I think it’s also worth noting that <strong>CSS <code>margin</code> could also hypothetically be used to achieve level AA conformance</strong> since the SC includes a spacing exception:</p>

<blockquote>The size of the <a href="https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum.html#dfn-target">target</a> for <a href="https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum.html#dfn-pointer-input">pointer inputs</a> is at least 24×24 <a href="https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum.html#dfn-css-pixel">CSS pixels</a>, except where:<br /><br /><strong>Spacing:</strong> Undersized targets (those less than 24×24 CSS pixels) are positioned so that if a 24 CSS pixel diameter circle is centered on the <a href="https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum.html#dfn-minimum-bounding-box">bounding box</a> of each, the circles do not intersect another target or the circle for another undersized target;<br /><br />[…]</blockquote>

<p>The difference here is that <strong>padding extends the interactive area, while margin does not</strong>. Through this lens, you’ll want to honor the spirit of the success criterion because <a href="https://adrianroselli.com/2023/12/2-5-8-adversarial-conformance.html#Adversarial">partial conformance is adversarial conformance</a>. At the end of the day, we want to help people successfully click or tap interactive elements, such as buttons.</p>

<h3 id="what-about-inline-interactive-elements">What About Inline Interactive Elements?</h3>

<p>We tend to think of targets in terms of block elements &mdash; elements that are displayed on their own line, such as a button at the end of a call-to-action. However, interactive elements can be inline elements as well. Think of links in a paragraph of text.</p>

<p>Inline interactive elements, such as text links in paragraphs, <strong>do not</strong> need to meet the 24×24 pixel minimum requirement. Just as <code>margin</code> is an exception in <a href="https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum.html#exceptions">SC 2.5.8: Target Size (Minimum)</a>, so are inline elements with an interactive target:</p>

<blockquote>The size of the <a href="https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum.html#dfn-target">target</a> for <a href="https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum.html#dfn-pointer-input">pointer inputs</a> is at least 24×24 <a href="https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum.html#dfn-css-pixel">CSS pixels</a>, except where:<br /><br />[…]<br /><br /><strong>Inline:</strong> The target is in a sentence or its size is otherwise constrained×the line-height of non-target text;<br /><br />[…]</blockquote>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/4-inline.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="316"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/4-inline.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/4-inline.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/4-inline.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/4-inline.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/4-inline.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/4-inline.png"
			
			sizes="100vw"
			alt="Two panels, each titled ‘WCAG 2.2 Conformant’. The first panel shows a wireframe illustration of an underlined link placed in a paragraph of text. The second panel shows a wireframe illustration of a form with two inputs and a submit button. The submit button and link are colored blue to suggest they both are related in terms of compliance."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/4-inline.png'>Large preview</a>)
    </figcaption>
  
</figure>

<h2 id="apple-and-android-the-source-of-more-confusion">Apple And Android: The Source Of More Confusion</h2>

<p>If the differences between interactive elements that are inline and block are still confusing, that’s probably because the whole situation is even further muddied by third-party human interface guidelines requiring interactive sizes closer to what the level AAA Success Criterion 2.5.5 Target Size (Enhanced) demands.</p>

<p>For example, Apple’s “<a href="https://developer.apple.com/design/human-interface-guidelines/">Human Interface Guidelines</a>” and Google’s “<a href="https://m3.material.io">Material Design</a>” are guidelines for how to design interfaces for their respective platforms. Apple’s guidelines recommend that <a href="https://developer.apple.com/design/human-interface-guidelines/accessibility#Buttons-and-controls">interactive elements are 44×44 points</a>, whereas Google’s guides stipulate target sizes that are <a href="https://m3.material.io/foundations/designing/structure#b421e522-35a6-47cd-bfc6-bf94cbacf7bb">at least 48×48 using density-independent pixels</a>.</p>

<p>These may satisfy Apple and Google requirements for designing interfaces, but <em>are they WCAG-conformant</em> Apple and Google &mdash; not to mention any other organization with UI guidelines &mdash; can specify whatever interface requirements they want, but <em>are they copasetic with WCAG SC 2.5.5 and SC 2.5.8?</em></p>

<p>It’s important to ask this question because there is a hierarchy when it comes to accessibility compliance, and it contains legal levels:</p>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/5-the-law.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="658"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/5-the-law.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/5-the-law.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/5-the-law.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/5-the-law.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/5-the-law.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/5-the-law.png"
			
			sizes="100vw"
			alt="A vertically-oriented flowchart. There are six layers. The topmost layer has one node labeled ‘WCAG’. The second layer down has one node labeled ‘International law’. The third layer down has two nodes. The first node is labeled, ‘Governments: United States, EU, etc.’ The second node is labeled, ‘Companies: Apple, Google, etc.’ The fourth layer down is labeled ‘Human interface guidelines’. The fifth layer down is labeled ‘Design systems’. The sixth and final layer has four nodes. The nodes are labeled, ‘Websites’, ‘Webapps’, ‘Apps’, and ‘Kiosks’. Arrows flow downward from each node to show the parent/child hierarchy."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/5-the-law.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>Human interface guidelines often inform design systems, which, in turn, influence the sites and apps that are built by authors like us. But they’re not the “authority” on accessibility compliance. Notice how everything is (and ought to be) influenced by WCAG at the very top of the chain.</p>

<p>Even if these third-party interface guidelines conform to SC 2.5.5 and 2.5.8, it’s still tough to tell when they are expressed in “<a href="https://developer.apple.com/design/human-interface-guidelines/images#Resolution">points</a>” and “<a href="https://developer.android.com/design/ui/mobile/guides/layout-and-content/grids-and-units">density independent pixels</a>” which aren’t pixels, but often get conflated as such. I’d advise not getting too deep into researching <a href="https://www.oddbird.net/2024/07/09/zoomies/#what%E2%80%99s-a-(css)-pixel%3F">what a pixel truly is</a>. Trust me when I say it’s a road you don’t want to go down. But whatever the case, the inconsistent use of unit sizes exacerbates the issue.</p>

<h2 id="can-t-we-just-use-a-media-query">Can’t We Just Use A Media Query?</h2>

<p>I’ve also observed some developers attempting to use <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@media/pointer">the <code>pointer</code> media feature</a> as a clever “trick” to <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@media/pointer#coarse">detect when a touchscreen is present</a>, then conditionally adjust an interactive element’s size as a way to get around the WCAG requirement.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/6-media-query.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="406"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/6-media-query.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/6-media-query.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/6-media-query.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/6-media-query.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/6-media-query.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/6-media-query.png"
			
			sizes="100vw"
			alt="Two panels, with an overall title of, ‘Don’t do this’. Each panel has a visual, followed×CSS code. The first panel’s visual is a small pink square. The second panel’s visual is a larger pink square. The CSS code shows how using an any-pointer: coarse media query can turn an 18-pixel wide×18 pixel tall button into a 44-pixel wide×44 pixel tall button."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/6-media-query.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>After all, mouse cursors are for fine movements, and touchscreens are for more broad gestures, right? Not always. The thing is, <strong>devices are multimodal</strong>. They can support <a href="https://hacks.mozilla.org/2013/04/detecting-touch-its-the-why-not-the-how/">many different kinds of input</a> and don’t require a special switch to flip or button to press to do so. A straightforward example of this is switching between a trackpad and a keyboard while you browse the web. A less considered example is a device with a touchscreen that also supports a trackpad, keyboard, mouse, and voice input.</p>

<p>You might think that the combination of trackpad, keyboard, mouse, and voice inputs sounds like some sort of absurd, obscure Frankencomputer, but what I just described is a <a href="https://www.microsoft.com/en-us/surface/devices/surface-laptop-7th-edition">Microsoft Surface laptop</a>, and guess what? They’re <a href="https://www.windowscentral.com/surface-windows-fy22-q2-revenue-report">pretty popular</a>.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/7-microsoft-surface-laptop.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="477"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/7-microsoft-surface-laptop.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/7-microsoft-surface-laptop.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/7-microsoft-surface-laptop.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/7-microsoft-surface-laptop.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/7-microsoft-surface-laptop.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/7-microsoft-surface-laptop.png"
			
			sizes="100vw"
			alt="A silver Microsoft Surface laptop. It is opened, posed towards the viewer to show its keyboard and trackpad, as well as a full-color display featuring an abstract, prismatic whorl of paper-thin organic shapes. The Windows 11 taskbar is also shown."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/7-microsoft-surface-laptop.png'>Large preview</a>)
    </figcaption>
  
</figure>

<div class="partners__lead-place"></div>

<h2 id="responsive-design-vs-inclusive-design">Responsive Design Vs. Inclusive Design</h2>

<p>There is a difference between the two, even though they are often used interchangeably. Let’s delineate the two as clearly as possible:</p>

<ul>
<li>Responsive Design is about designing for an <strong>unknown device</strong>.</li>
<li>Inclusive Design is about designing for an <strong>unknown user</strong>.</li>
</ul>

<p>The other end of this consideration is that people with <a href="https://www.w3.org/WAI/people-use-web/abilities-barriers/#physical">motor control conditions</a> &mdash; like hand tremors or arthritis &mdash; can and do use mice inputs. This means that fine input actions may be painful and difficult, yet ultimately still possible to perform.</p>

<p>People also use more precise input mechanisms for touchscreens all the time, including both <a href="https://www.apple.com/apple-pencil/">official accessories</a> and <a href="https://www.amazon.com/s?k=stylus+pen+for+touchscreen">aftermarket devices</a>. In other words, some devices designed to accommodate coarse input can also be used for <a href="https://procreate.com/">fine detail work</a>.</p>

<p>I’d be remiss if I didn’t also point out that people plug mice and keyboards into smartphones. We cannot automatically say that they only support coarse pointers:</p>


<figure class="video-embed-container">
  <div
  
  class="video-embed-container--wrapper">
		<lite-youtube
			videoid="6vi10v4WZS0"
      
			
		></lite-youtube>
	</div>
	
</figure>

<p>My point is that a <strong>mode-based approach to inclusive design is a trap</strong>. This isn’t even about <a href="https://www.linkedin.com/pulse/what-world-view-tap-asymmetry-nora-nishia-burtschi">view–tap asymmetry</a>. Creating entire alternate experiences based on assumed input mode reinforces an ugly “us versus them” mindset. It’s also far more work to set up, maintain, and educate others.</p>

<p>It’s better to proactively accommodate an unknown number of unknown people using an unknown suite of devices in unknown ways by <a href="https://ericwbailey.website/published/contrast-color-is-a-good-thing-but-also-solving-the-problem-at-the-wrong-layer/#further-issues"><strong>providing an inclusive experience by default</strong></a>. Doing so has a list of benefits:</p>

<ul>
<li>More proactively accommodating,</li>
<li>Less effort to create,</li>
<li>Less effort to maintain,</li>
<li>Less data to download, and</li>
<li>Less compliance risk.</li>
</ul>

<p>After all, <a href="https://news.mit.edu/2024/mouth-based-touchpad-augmental-0605">that tap input might be coming from a tongue</a>, and that click event might be someone <a href="https://thoughtbot.com/blog/an-introduction-to-macos-head-pointer">raising their eyebrows</a>.</p>

<h2 id="wcag-is-the-floor-not-the-ceiling">WCAG Is The Floor, Not The Ceiling</h2>

<p>A WCAG-conformant 24×24 minimum pixel size requirement for interactive elements is <strong>our industry’s best understanding</strong> of what can accommodate most access needs distributed across a global population accessing an unknown amount of content dealing with unknown topics in unknown ways under unknown circumstances.</p>

<p>The load-bearing word in that previous sentence is <em>minimum</em>. The guidance &mdash; and the pixel size it mandates &mdash; is likely a balancing act between:</p>

<ol>
<li>Setting something up that is functional enough while also</li>
<li>Avoiding a standard that would be impossible to broadly achieve (hence the SC 2.5.5 level AAA rating).</li>
</ol>

<p>Even the SC itself <a href="https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum.html#intent">acknowledges this potential limitation</a>:</p>

<blockquote>“This Success Criterion defines a minimum size and, if this can't be met, a minimum spacing. It is still possible to have very small and difficult-to-activate targets and meet the requirements of this Success Criterion.”</blockquote>

<p>Larger interactive areas can be a good thing to strive for. This is to say <strong>a minimum of approximately 40 pixels may be beneficial for individuals who struggle with the smaller yet still WCAG-conformant size</strong>.</p>

<h2 id="interactive-area-sizing-is-as-much-an-art-as-it-is-a-science">Interactive Area Sizing Is As Much An Art As It Is A Science</h2>

<p>We should also <strong>be careful not to overcorrect</strong> by dropping in gigantic interactive elements in all of our work. If an interactive area is <em>too</em> large, it risks being activated by accident. This is important to note when an interactive element is placed in close proximity to other interactive elements and even more important to consider when activating those elements can result in irrevocable consequences.</p>

<p>There is also a phenomenon where elements, if large enough, are not interpreted or recognized as being interactive. Consequently, users may inadvertently miss them, despite large sizing.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/8-too-large-touch-target.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="550"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/8-too-large-touch-target.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/8-too-large-touch-target.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/8-too-large-touch-target.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/8-too-large-touch-target.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/8-too-large-touch-target.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/8-too-large-touch-target.png"
			
			sizes="100vw"
			alt="A simplified wireframe illustration of a wide viewport website. There are four large colored blocks that take up the bulk of the main content area, and it is unclear if they are content placeholders or intended to be interactive items."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      What on this page is clickable? (<a href='https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/8-too-large-touch-target.png'>Large preview</a>)
    </figcaption>
  
</figure>

<h3 id="context-is-king">Context Is King</h3>

<p>Conformant and successful interactive areas &mdash; both large and small &mdash; require <strong>knowing the ultimate goals of your website or web app</strong>. When you arm yourself with this context, you are empowered to make informed decisions about the kinds of people <em>who</em> use your service, <em>why</em> they use the service, and <em>how</em> you can accommodate them.</p>

<p>For example, the <a href="https://www.nngroup.com/articles/touch-target-size/#toc-when-bigger-is-better-4">Glow Baby app uses larger interactive elements</a> because it knows the user is likely holding an adorable, albeit squirmy and fussy, baby while using the application. This allows Glow Baby to emphasize the interactive targets in the interface to accommodate parents who have their hands full.</p>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/9-glowbaby-mobileapp-nursingtimer.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="808"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/9-glowbaby-mobileapp-nursingtimer.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/9-glowbaby-mobileapp-nursingtimer.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/9-glowbaby-mobileapp-nursingtimer.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/9-glowbaby-mobileapp-nursingtimer.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/9-glowbaby-mobileapp-nursingtimer.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/9-glowbaby-mobileapp-nursingtimer.png"
			
			sizes="100vw"
			alt="Two screenshots placed side×side. It shows two timers, one for the left breast and one for the right, demonstrating how the timers can be activated independently of each other. The UI is minimal, and all interactive items, including the timers, are large and easy to distinguish from each other."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Source: “Touch Targets on Touchscreens” by Neilsen Norman Group. (<a href='https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/9-glowbaby-mobileapp-nursingtimer.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>In the same vein, <a href="https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum.html#exceptions">SC SC 2.5.8 acknowledges that smaller touch targets</a> &mdash; such as those used in map apps &mdash; <a href="https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum.html#exceptions">may contextually be exempt</a>:</p>

<blockquote>For example, in digital maps, the position of pins is analogous to the position of places shown on the map. If there are many pins close together, the spacing between pins and neighboring pins will often be below 24 CSS pixels. It is essential to show the pins at the correct map location; therefore, the Essential exception applies.<br /><br />[…]<br /><br />When the "Essential" exception is applicable, authors are strongly encouraged to provide equivalent functionality through alternative means to the extent practical.</blockquote>

<p>Note that <strong>this exemption language is not carte blanche to make your own work an exception to the rule</strong>. It is more of a mechanism, and an acknowledgment that broadly applied rules may have exceptions that are worth thinking through and documenting for future reference.</p>

<div class="partners__lead-place"></div>

<h2 id="further-considerations">Further Considerations</h2>

<p>We also want to consider the larger context of the device itself as well as the environment the device will be used in.</p>

<p><a href="https://www.nngroup.com/articles/very-large-touchscreen-ux-design/">Larger, more fixed position touchscreens compel larger interactive areas</a>. Smaller devices that are moved around in space a lot (e.g., smartwatches) may benefit from alternate input mechanisms such as voice commands.</p>

<p>What about people who are driving in a car? People in this context probably ought to be provided straightforward, simple interactions that are facilitated via large interactive areas to prevent them from taking their eyes off the road. The same could also be said for high-stress environments like hospitals and <a href="https://www.24a11y.com/2017/convince-company-tames-dinosaurs-design-inclusively/">oil rigs</a>.</p>

<p>Similarly, <a href="https://www.smashingmagazine.com/2024/02/practical-guide-design-children/">devices and apps that are designed for children</a> may require interactive areas that are larger than WCAG requirements for interactive areas. So would experiences aimed at older demographics, where age-derived vision and motor control disability factors tend to be more present.</p>

<p>Minimum conformant interactive area experiences may also make sense in their own contexts. Data-rich, information-dense experiences like <a href="https://www.bloomberg.com/professional/products/bloomberg-terminal/">the Bloomberg terminal</a> come to mind here.</p>

<h2 id="design-systems-are-also-worth-noting">Design Systems Are Also Worth Noting</h2>

<p>While you can control what components you include in a <a href="https://www.figma.com/blog/design-systems-101-what-is-a-design-system/">design system</a>, you cannot control where and how they’ll be used by those who adopt and use that design system. Because of this, I suggest <strong>defensively baking accessible defaults into your design systems</strong> because they can go a long way toward incorporating accessible practices when they’re integrated right out of the box.</p>

<p>One option worth consideration is <strong>providing an accessible range of choices</strong>. Components, like buttons, can have size variants (e.g., small, medium, and large), and you can provide a minimally conformant interactive target on the smallest variant and then offer larger, equally conformant versions.</p>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/10-design-system-variants.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="300"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/10-design-system-variants.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/10-design-system-variants.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/10-design-system-variants.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/10-design-system-variants.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/10-design-system-variants.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/10-design-system-variants.png"
			
			sizes="100vw"
			alt="A panel showing three button component variants. The panel’s title reads, ‘WCAG 2.2 AA Conformant’. The first button component variant measures 24 pixels tall and is labeled ‘Variant: Small’. The second button component variant measures 36 pixels tall and is labeled ‘Variant: Medium’. The third button component variant measures 58 pixels tall and is labeled, ‘Variant: Large’."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/getting-bottom-minimum-wcag-conformant-interactive-element-size/10-design-system-variants.png'>Large preview</a>)
    </figcaption>
  
</figure>

<h2 id="so-how-do-we-know-when-we-re-good">So, How Do We Know When We’re Good?</h2>

<p>There is no magic number or formula to get you that perfect Goldilocks “not too small, not too large, but just right” interactive area size. It requires knowledge of what the people who want to use your service want, and how they go about getting it.</p>

<p>The best way to learn that? <strong>Ask people</strong>.</p>

<p>Accessibility research includes more than just asking people who use screen readers what they think. It’s also a lot easier to conduct than you might think! For example, prototypes are a great way to quickly and inexpensively evaluate and de-risk your ideas before committing to writing production code. “<a href="https://www.smashingmagazine.com/2024/04/conducting-accessibility-research-inaccessible-ecosystem/">Conducting Accessibility Research In An Inaccessible Ecosystem</a>” by <a href="https://mawconsultingllc.com/">Dr. Michele A. Williams</a> is chock full of tips, strategies, and resources you can use to help you get started with accessibility research.</p>

<h2 id="wrapping-up">Wrapping Up</h2>

<p>The bottom line is that</p>

<blockquote class="pull-quote">
  <p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0a%e2%80%9cCompliant%e2%80%9d%20does%20not%20always%20equate%20to%20%e2%80%9cusable.%e2%80%9d%20But%20compliance%20does%20help%20set%20baseline%20requirements%20that%20benefit%20everyone.%0a&url=https://smashingmagazine.com%2f2024%2f07%2fgetting-bottom-minimum-wcag-conformant-interactive-element-size%2f">
      
“Compliant” does not always equate to “usable.” But compliance does help set baseline requirements that benefit everyone.

    </a>
  </p>
  <div class="pull-quote__quotation">
    <div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
  </div>
</blockquote>

<p>To sum things up:</p>

<ul>
<li>24×24 pixels is the bare minimum in terms of WCAG conformance.</li>
<li>Inline interactive elements, such as links placed in paragraphs, are exempt.</li>
<li>44×44 pixels is for WCAG level AAA support, and level AAA is reserved for specialized experiences.</li>
<li>Human interface guidelines by the likes of Apple, Android, and other companies must ultimately confirm to WCAG.</li>
<li>Devices are multimodal and can use different kinds of input concurrently.</li>
<li>Baking sensible accessible defaults into design systems can go a long way to ensuring widespread compliance.</li>
<li>Larger interactive element sizes may be helpful in many situations, but might not be recognized as an interactive element if they are too large.</li>
<li>User research can help you learn about your audience.</li>
</ul>

<p>And, perhaps most importantly, all of this is about people and enabling them to get what they need.</p>

<h3 id="further-reading">Further Reading</h3>

<ul>
<li><a href="https://tetralogical.com/blog/2022/12/20/foundations-target-size/">Foundations: target sizes</a> (TetraLogical)</li>
<li><a href="https://www.w3.org/WAI/perspective-videos/controls/">Large Links, Buttons, and Controls</a> (Web Accessibility Initiative)</li>
<li><a href="https://css-tricks.com/interaction-media-features-and-their-potential-for-incorrect-assumptions/">Interaction Media Features and Their Potential (for Incorrect Assumptions)</a> (CSS-Tricks)</li>
<li><a href="https://tetralogical.com/blog/2023/04/21/meeting-wcag-level-aaa/#increased-text-color-contrast">Meeting WCAG Level AAA</a> (TetraLogical)</li>
</ul>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(gg, yk)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item><item><author>Vitaly Friedman</author><title>Useful Customer Journey Maps (+ Figma &amp; Miro Templates)</title><link>https://www.smashingmagazine.com/2024/07/customer-journey-maps-figma-miro-templates/</link><pubDate>Mon, 08 Jul 2024 10:00:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2024/07/customer-journey-maps-figma-miro-templates/</guid><description>Visualize the user experience with user journey maps. Here are some helpful templates, real-world applications, and insights on the importance of mapping both successful and unsuccessful touchpoints. Part of &lt;a href="https://smart-interface-design-patterns.com">Smart Interface Design Patterns&lt;/a> by yours truly.</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2024/07/customer-journey-maps-figma-miro-templates/" />
              <title>Useful Customer Journey Maps (&#43; Figma &amp; Miro Templates)</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>Useful Customer Journey Maps (&#43; Figma &amp; Miro Templates)</h1>
                  
                    
                    <address>Vitaly Friedman</address>
                  
                  <time datetime="2024-07-08T10:00:00&#43;00:00" class="op-published">2024-07-08T10:00:00+00:00</time>
                  <time datetime="2024-07-08T10:00:00&#43;00:00" class="op-modified">2026-02-09T03:03:08+00:00</time>
                </header>
                
                

<p>User journey maps are a remarkably effective way to visualize the user’s experience for the entire team. Instead of pointing to documents scattered across remote fringes of Sharepoint, we bring key insights together &mdash; in one single place.</p>

<p>Let’s explore a couple of <strong>helpful customer journey templates</strong> to get started and how companies use them in practice.</p>

<style>.course-intro{--shadow-color:206deg 31% 60%;background-color:#eaf6ff;border:1px solid #ecf4ff;box-shadow:0 .5px .6px hsl(var(--shadow-color) / .36),0 1.7px 1.9px -.8px hsl(var(--shadow-color) / .36),0 4.2px 4.7px -1.7px hsl(var(--shadow-color) / .36),.1px 10.3px 11.6px -2.5px hsl(var(--shadow-color) / .36);border-radius:11px;padding:1.35rem 1.65rem}@media (prefers-color-scheme:dark){.course-intro{--shadow-color:199deg 63% 6%;border-color:var(--block-separator-color,#244654);background-color:var(--accent-box-color,#19313c)}}</style>

<p class="course-intro">This article is <strong>part of our ongoing series</strong> on <a href="/category/ux">UX</a>. You might want to take a look at <a style="font-weight:700" href="https://smart-interface-design-patterns.com/">Smart Interface Design Patterns</a>&nbsp;🍣 and the <a href="https://smashingconf.com/online-workshops/workshops/interface-design-course-vitaly-friedman/">upcoming live UX training</a> as well. Use code <a style="text-decoration:none !important" href="https://smart-interface-design-patterns.com/"><strong>BIRDIE</strong></a> to <strong>save 15%</strong> off.</p>

<h2 id="airbnb-customer-journey-blueprint">AirBnB Customer Journey Blueprint</h2>

<p><a href="https://x.com/bchesky/status/1654137863007612930?lang=en">AirBnB Customer Journey Blueprint</a> (also check <a href="https://drive.google.com/file/d/1yrV0hwS-tKGYzFMgV3bvo20LzXGPpwq4/view?usp=sharing">Google Drive example</a>) is a wonderful practical example of how to visualize the entire customer experience for two personas, across eight touch points, with user policies, UI screens and all interactions with the customer service &mdash; <strong>all on one single page</strong>.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://www.linkedin.com/posts/vitalyfriedman_ux-design-activity-7212351266880958464-7Og1">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="448"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/1-airbnb-customer-journey-blueprint.jpg 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/1-airbnb-customer-journey-blueprint.jpg 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/1-airbnb-customer-journey-blueprint.jpg 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/1-airbnb-customer-journey-blueprint.jpg 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/1-airbnb-customer-journey-blueprint.jpg 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/1-airbnb-customer-journey-blueprint.jpg"
			
			sizes="100vw"
			alt="AirBnB&#39;s Customer Journey Blueprint"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      AirBnB’s Customer Journey Blueprint, mapping policies and customer service against a customer journey. (<a href='https://x.com/bchesky/status/1654137863007612930?lang=en'>Watch a video preview</a>)
    </figcaption>
  
</figure>

<p>Now, unlike AirBnB, your product might not need a mapping against user policies. However, it might need <strong>other lanes</strong> that would be more relevant for your team. For example, include relevant findings and recommendations from UX research. List key actions needed for the next stage. Include relevant UX metrics and unsuccessful touchpoints.</p>

<p><strong>Whatever works for you</strong>, works for you &mdash; just make sure to avoid assumptions and refer to facts and insights from research.</p>

<h2 id="spotify-customer-journey-map">Spotify Customer Journey Map</h2>

<p><a href="https://images.ctfassets.net/c1zhnszcah7h/6dlIZwMTFlRm07vH0fUquI/b21cc6c086ff01572ad2580c8d75dc31/Inline_-_Personas_2x__1_.png">Spotify Customer Journey Blueprint</a> (high resolution) breaks down customer experiences by <strong>distinct user profiles</strong>, and for each includes mobile and desktop views, pain points, thoughts, and actions. Also, notice <strong>branches</strong> for customers who skip authentication or admin tasks.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://spotify.design/article/from-web-page-to-web-player-how-spotify-designed-a-new-homepage-experience">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="479"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/2-spotify-customer-journey-blueprint.jpg 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/2-spotify-customer-journey-blueprint.jpg 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/2-spotify-customer-journey-blueprint.jpg 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/2-spotify-customer-journey-blueprint.jpg 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/2-spotify-customer-journey-blueprint.jpg 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/2-spotify-customer-journey-blueprint.jpg"
			
			sizes="100vw"
			alt="Spotify Customer Journey Blueprint"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Spotify Customer Journey Blueprint, mapping mobile and desktop screens against a customer journey. (<a href='https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/2-spotify-customer-journey-blueprint.jpg'>Large preview</a>)
    </figcaption>
  
</figure>

<h2 id="getting-started-with-journey-maps">Getting Started With Journey Maps</h2>

<p>To <a href="https://stephaniewalter.design/blog/an-introduction-to-user-journey-map-pdf-templates/">get started with user journey maps</a>, we first <strong>choose a lens</strong>: Are we reflecting the current state or projecting a future state? Then, we choose a <strong>customer who experiences the journey</strong> &mdash; and we capture the situation/goals that they are focusing on.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://stephaniewalter.design/blog/an-introduction-to-user-journey-map-pdf-templates/">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="522"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/3-practical-guide-customer-journey-mapping.jpg 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/3-practical-guide-customer-journey-mapping.jpg 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/3-practical-guide-customer-journey-mapping.jpg 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/3-practical-guide-customer-journey-mapping.jpg 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/3-practical-guide-customer-journey-mapping.jpg 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/3-practical-guide-customer-journey-mapping.jpg"
			
			sizes="100vw"
			alt="A practical guide to customer journey mapping, with free Miro/Figma templates"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      A practical guide to customer journey mapping, with free Miro/Figma templates by <a href='https://stephaniewalter.design/blog/an-introduction-to-user-journey-map-pdf-templates/'>Steph Walter</a>. (<a href='https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/3-practical-guide-customer-journey-mapping.jpg'>Large preview</a>)
    </figcaption>
  
</figure>

<p>Next, we <strong>list high-level actions</strong> users are going through. We start by defining the first and last stages and fill in between. Don’t get too granular: list key actions needed for the next stage. Add the user’s thoughts, feelings, sentiments, and emotional curves.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://uxdesign.cc/ultimate-guide-to-customer-journey-mapping-ux-tools-series-b973ca442213">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="447"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/4-guide-customer-journey-mapping.jpg 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/4-guide-customer-journey-mapping.jpg 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/4-guide-customer-journey-mapping.jpg 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/4-guide-customer-journey-mapping.jpg 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/4-guide-customer-journey-mapping.jpg 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/4-guide-customer-journey-mapping.jpg"
			
			sizes="100vw"
			alt="A guide to customer journey mapping"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      A guide to customer journey mapping by <a href='https://uxdesign.cc/ultimate-guide-to-customer-journey-mapping-ux-tools-series-b973ca442213'>Taras Bakusevych</a>. (<a href='https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/4-guide-customer-journey-mapping.jpg'>Large preview</a>)
    </figcaption>
  
</figure>

<p>Eventually, add <strong>user’s key touchpoints with people, services, tools</strong>. Map user journey across mobile and desktop screens. Transfer insights from other research (e.g., customer support). Fill in stage after stage until the entire map is complete.</p>

<p>Then, <strong>identify pain</strong> points and highlight them with red dots. Add relevant jobs-to-be-done, metrics, channels if needed. Attach links to quotes, photos, videos, prototypes, Figma files. Finally, explore ideas and opportunities to address pain points.</p>

<h2 id="free-customer-journey-maps-templates-miro-figma">Free Customer Journey Maps Templates (Miro, Figma)</h2>

<p>You don’t have to reinvent the wheel from scratch. Below, you will find a few <strong>useful starter kits</strong> to get up and running fast. However, please make sure to <strong>customize</strong> these templates for your needs, as every product will require its own specific details, dependencies, and decisions.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/5-figjam-user-journey-map-template.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="450"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/5-figjam-user-journey-map-template.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/5-figjam-user-journey-map-template.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/5-figjam-user-journey-map-template.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/5-figjam-user-journey-map-template.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/5-figjam-user-journey-map-template.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/5-figjam-user-journey-map-template.png"
			
			sizes="100vw"
			alt="A guide to customer journey mapping"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/customer-journey-maps-figma-miro-templates/5-figjam-user-journey-map-template.png'>Large preview</a>)
    </figcaption>
  
</figure>

<ul>
<li><a href="https://www.figma.com/community/file/1133964686200054485/user-journey-map-template">User Journey Map Template</a> (Figma), by Estefanía Montaña B.</li>
<li><a href="https://uxdesign.cc/ultimate-guide-to-customer-journey-mapping-ux-tools-series-b973ca442213">Customer Journey Mapping</a> (PDF), by Taras Bakusevych</li>
<li><a href="https://www.figma.com/community/file/1225500193035347266/fashion-app-experience-map-by-turtle-design">End-To-End User Experience Map</a> (Figma), by Justin Tan</li>
<li><a href="https://www.figma.com/community/file/1270404244780781982/customer-journey-map">Customer Journey Map Template</a> (Figma), by Ed Biden</li>
<li><a href="https://miro.com/miroverse/2d-customer-journey-map-workshop/">Customer Journey Map Template</a> (Miro), by Matt Anderson</li>
<li><a href="https://miro.com/miroverse/customer-journey-map-4/">Customer Journey Map</a> (Miro), by Hustle Badger</li>
<li><a href="https://miro.com/miroverse/journey-map/">Customer Experience Map Template</a> (Miro), by Essense</li>
<li><a href="https://miro.com/miroverse/epic-customer-journey/">The Customer Journey Map</a> (Miro), by RSPRINT</li>
</ul>

<h2 id="wrapping-up">Wrapping Up</h2>

<p>Keep in mind that <strong>customer journeys are often non-linear</strong>, with unpredictable entry points and integrations way beyond the final stage of a customer journey map. It’s in those moments when things leave a perfect path that a product’s UX is actually stress-tested.</p>

<p>So consider mapping <strong>unsuccessful touchpoints</strong> as well &mdash; failures, error messages, conflicts, incompatibilities, warnings, connectivity issues, eventual lock-outs and frequent log-outs, authentication issues, outages, and urgent support inquiries.</p>

<p>Also, make sure to <strong>question assumptions and biases early</strong>. Once they live in your UX map, they grow roots &mdash; and it might not take long until they are seen as the foundation of everything, which can be remarkably difficult to challenge or question later. Good luck, everyone!</p>

<h2 id="meet-smart-interface-design-patterns">Meet Smart Interface Design Patterns</h2>

<p>If you are interested in <strong>UX and design patterns</strong>, take a look at <a href="https://smart-interface-design-patterns.com/"><strong>Smart Interface Design Patterns</strong></a>, our <strong>10h-video course</strong> with 100s of practical examples from real-life projects &mdash; with a live UX training later this year. Everything from mega-dropdowns to complex enterprise tables &mdash; with 5 new segments added every year. <a href="https://www.youtube.com/watch?v=aSP5oR9g-ss">Jump to a free preview</a>. Use code <a href="https://smart-interface-design-patterns.com"><strong>BIRDIE</strong></a> to <strong>save 15%</strong> off.</p>

<figure style="margin-bottom: 0"><a href="https://smart-interface-design-patterns.com/"><img style="border-radius: 11px" decoding="async" fetchpriority="low" width="950" height="492" srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/7cc4e1de-6921-474e-a3fb-db4789fc13dd/b4024b60-e627-177d-8bff-28441f810462.jpeg 400w,
https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/7cc4e1de-6921-474e-a3fb-db4789fc13dd/b4024b60-e627-177d-8bff-28441f810462.jpeg 800w,
https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/7cc4e1de-6921-474e-a3fb-db4789fc13dd/b4024b60-e627-177d-8bff-28441f810462.jpeg 1200w,
https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/7cc4e1de-6921-474e-a3fb-db4789fc13dd/b4024b60-e627-177d-8bff-28441f810462.jpeg 1600w,
https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/7cc4e1de-6921-474e-a3fb-db4789fc13dd/b4024b60-e627-177d-8bff-28441f810462.jpeg 2000w" src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/7cc4e1de-6921-474e-a3fb-db4789fc13dd/b4024b60-e627-177d-8bff-28441f810462.jpeg" sizes="100vw" alt="Smart Interface Design Patterns"></a><figcaption class="op-vertical-bottom">Meet <a href="https://smart-interface-design-patterns.com/">Smart Interface Design Patterns</a>, our video course on interface design &amp; UX.</figcaption></figure>

<div class="btn--lined btn--lined--white-border" style="margin-top: 0.75em; margin-bottom: 0.75em"><a class="btn btn--large btn--green btn--text-shadow" href="https://smart-interface-design-patterns.com/">Jump to the video course&nbsp;&rarr;</a></div>

<p><p class="ticket-price__desc" style="font-size: .8em!important; text-align: center; line-height: 1.5; margin: 0; display: block;">100 design patterns &amp; real-life
examples.<br>10h-video course + live UX training. <a href="https://www.youtube.com/watch?v=aSP5oR9g-ss">Free preview</a>.</p>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(yk)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item><item><author>Vitaly Friedman</author><title>How To Make A Strong Case For Accessibility</title><link>https://www.smashingmagazine.com/2024/06/how-make-strong-case-accessibility/</link><pubDate>Wed, 26 Jun 2024 12:00:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2024/06/how-make-strong-case-accessibility/</guid><description>Gaining buy-in for accessibility can be challenging due to common myths and misunderstandings. For many, accessibility remains a big mystery. Here are some practical techniques for winning stakeholder support. Part of &lt;a href="https://smart-interface-design-patterns.com">Smart Interface Design Patterns&lt;/a> by yours truly.</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2024/06/how-make-strong-case-accessibility/" />
              <title>How To Make A Strong Case For Accessibility</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>How To Make A Strong Case For Accessibility</h1>
                  
                    
                    <address>Vitaly Friedman</address>
                  
                  <time datetime="2024-06-26T12:00:00&#43;00:00" class="op-published">2024-06-26T12:00:00+00:00</time>
                  <time datetime="2024-06-26T12:00:00&#43;00:00" class="op-modified">2026-02-09T03:03:08+00:00</time>
                </header>
                
                

<p>Getting support for accessibility efforts isn’t easy. There are many <a href="https://a11ymyths.com/">accessibility myths</a>, wrong assumptions, and expectations that make accessibility look like a complex, expensive, and time-consuming project. Let’s fix that!</p>

<p>Below are some practical techniques that have been working well for me to <strong>convince stakeholders</strong> to support and promote accessibility in small and large companies.</p>

<style>.course-intro{--shadow-color:206deg 31% 60%;background-color:#eaf6ff;border:1px solid #ecf4ff;box-shadow:0 .5px .6px hsl(var(--shadow-color) / .36),0 1.7px 1.9px -.8px hsl(var(--shadow-color) / .36),0 4.2px 4.7px -1.7px hsl(var(--shadow-color) / .36),.1px 10.3px 11.6px -2.5px hsl(var(--shadow-color) / .36);border-radius:11px;padding:1.35rem 1.65rem}@media (prefers-color-scheme:dark){.course-intro{--shadow-color:199deg 63% 6%;border-color:var(--block-separator-color,#244654);background-color:var(--accent-box-color,#19313c)}}</style>

<p class="course-intro">This article is <strong>part of our ongoing series</strong> on <a href="/category/ux">UX</a>. You might want to take a look at <a style="font-weight:700" href="https://smart-interface-design-patterns.com/">Smart Interface Design Patterns</a>&nbsp;🍣 and the <a href="https://smashingconf.com/online-workshops/workshops/interface-design-course-vitaly-friedman/">upcoming live UX training</a> as well. Use code <a style="text-decoration:none !important" href="https://smart-interface-design-patterns.com/"><strong>BIRDIE</strong></a> to <strong>save 15%</strong> off.</p>

<h2 id="launching-accessibility-efforts">Launching Accessibility Efforts</h2>

<p>A common way to address accessibility is to speak to stakeholders through the lens of corporate responsibility and ethical and legal implications. Personally, I’ve never been very successful with this strategy. People typically dismiss concerns that they can’t relate to, and as designers, <strong>we can’t build empathy with facts</strong>, charts, or legal concerns.</p>

<p>The problem is that people often don’t know how accessibility applies to them. There is a common assumption that accessibility is dull and boring and leads to “unexciting” and unattractive products. Unsurprisingly, businesses often neglect it as an <strong>irrelevant edge case</strong>.</p>














<figure class="
  
  
  ">
  
    <a href="https://medium.com/booking-research/building-accessibility-research-practices-75d82098f286">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="1326"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-make-strong-case-accessibility/1-travel-adaptation-microsoft-inclusive-design-toolkit.jpeg 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/how-make-strong-case-accessibility/1-travel-adaptation-microsoft-inclusive-design-toolkit.jpeg 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/how-make-strong-case-accessibility/1-travel-adaptation-microsoft-inclusive-design-toolkit.jpeg 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/how-make-strong-case-accessibility/1-travel-adaptation-microsoft-inclusive-design-toolkit.jpeg 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/how-make-strong-case-accessibility/1-travel-adaptation-microsoft-inclusive-design-toolkit.jpeg 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-make-strong-case-accessibility/1-travel-adaptation-microsoft-inclusive-design-toolkit.jpeg"
			
			sizes="100vw"
			alt="Travel adaptation of Microsoft’s Inclusive Design Toolkit"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Mapping accessibility to the needs of a product, example by Booking.com. (<a href='https://files.smashing.media/articles/how-make-strong-case-accessibility/1-travel-adaptation-microsoft-inclusive-design-toolkit.jpeg'>Large preview</a>)
    </figcaption>
  
</figure>

<p>So, I use another strategy. I start conversations about accessibility by <strong>visualizing it</strong>. I explain the <strong>different types of accessibility needs</strong>, ranging from permanent to temporary to situational &mdash; and I try to explain what <em>exactly</em> it actually means to our products. Mapping a more generic understanding of accessibility to the specifics of a product helps everyone explore accessibility from a point that they can relate to.</p>

<p>And then I launch a small effort &mdash; just a few <strong>usability sessions</strong>, to get a better understanding of where our customers struggle and where they might be blocked. If I can’t get access to customers, I try to proxy test via sales, customer success, or support. Nothing is more impactful than seeing real customers struggling in their real-life scenario with real products that a company is building.</p>














<figure class="
  
  
  ">
  
    <a href="https://www.linkedin.com/posts/vitalyfriedman_accessibility-activity-7124747846431436800-rG2w/">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="798"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-make-strong-case-accessibility/2-wcag-accessibility-guidelines-illustration.jpeg 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/how-make-strong-case-accessibility/2-wcag-accessibility-guidelines-illustration.jpeg 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/how-make-strong-case-accessibility/2-wcag-accessibility-guidelines-illustration.jpeg 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/how-make-strong-case-accessibility/2-wcag-accessibility-guidelines-illustration.jpeg 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/how-make-strong-case-accessibility/2-wcag-accessibility-guidelines-illustration.jpeg 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-make-strong-case-accessibility/2-wcag-accessibility-guidelines-illustration.jpeg"
			
			sizes="100vw"
			alt="WCAG 2.2 Accessibility Guidelines map"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      New WCAG 2.2 Accessibility Guidelines, a poster by fine folks at <a href='https://www.linkedin.com/company/intopia-digital/?lipi=urn%3Ali%3Apage%3Ad_flagship3_detail_base%3B%2B6vEnbAXR7iICoERG4TppA%3D%3D'>Intopia</a>. (<a href='https://files.smashing.media/articles/how-make-strong-case-accessibility/2-wcag-accessibility-guidelines-illustration.jpeg'>Large preview</a>)
    </figcaption>
  
</figure>

<p>From there, I move forward. I explain inclusive design, accessibility, <strong>neurodiversity</strong>, <strong>EAA</strong>, <strong>WCAG</strong>, <strong>ARIA</strong>. I bring people with disabilities into testing as we need a proper representation of our customer base. I ask for small commitments first, then ask for more. I reiterate over and over and over again that accessibility doesn’t have to be expensive or tedious if done early, but it can be <strong>very expensive</strong> when <strong>retrofitted</strong> or done late.</p>

<p>Throughout that entire journey, I try to <strong>anticipate objections</strong> about costs, timing, competition, slowdowns, dullness &mdash; and keep explaining how accessibility can reduce costs, increase revenue, grow user base, minimize risks, and improve our standing in new markets. For that, I use a few <strong>templates</strong> that I always keep nearby just in case an argument or doubts arise.</p>

<h2 id="useful-templates-to-make-a-strong-case-for-accessibility">Useful Templates To Make A Strong Case For Accessibility</h2>

<h3 id="1-but-accessibility-is-an-edge-case">1. “But Accessibility Is An Edge Case!”</h3>

<p>❌ “<strong>But accessibility is an edge case.</strong> Given the state of finances right now, unfortunately, we really can’t invest in it right now.”</p>

<p>🙅🏽♀️ “I respectfully disagree. 1 in 6 people around the world experience disabilities. In fact, our competitors <em>[X, Y, Z]</em> have launched accessibility efforts (<em>[references]</em>), and we seem to be lagging behind. Plus, it doesn’t have to be expensive. But it will be very expensive once we retrofit much later.”</p>

<h3 id="2-but-there-is-no-business-value-in-accessibility">2. “But There Is No Business Value In Accessibility!”</h3>

<p>❌ “We know that accessibility is important, but at the moment, we need to focus on efforts that will <strong>directly benefit business</strong>.”</p>

<p>🙅🏼♂️ “I understand what you are saying, but actually, accessibility directly benefits business. Globally, the extended market is estimated at <a href="https://www.w3.org/WAI/business-case/#fn:18"><strong>2.3 billion people</strong></a>, who control an incremental $6.9 trillion in annual disposable income. Prioritizing accessibility very much aligns with your goal to <strong>increase leads</strong>, <strong>customer engagement</strong>, mitigate risk, and reduce costs.” (via <a href="https://www.smashingmagazine.com/2024/02/web-designer-accessibility-advocacy-toolkit/">Yichan Wang</a>)</p>

<h3 id="3-but-we-don-t-have-disabled-users">3. “But We Don’t Have Disabled Users!”</h3>

<p>❌ “Why should we prioritize accessibility? Looking at our data, <strong>we don’t really have any disabled users</strong> at all. Seems like a waste of time and resources.”</p>

<p>🙅♀️ “Well, if a product is inaccessible, users with disabilities can’t and won’t be using it. But if we do make our product more accessible, we open the door for prospect users for years to come. Even small improvements can have a high impact. It doesn’t have to be expensive nor time-consuming.”</p>

<h3 id="4-screen-readers-won-t-work-with-our-complex-system">4. “Screen Readers Won’t Work With Our Complex System!”</h3>

<p>❌ “Our application is very complex and used by expert users. Would it even <strong>work at all with screen readers</strong>?”</p>

<p>🙅🏻♀️ “It’s not about designing only for screen readers. Accessibility can be permanent, but it can also be temporary and situational &mdash; e.g., when you hold a baby in your arms or if you had an accident. Actually, it’s universally useful and beneficial for everyone.”</p>

<h3 id="5-we-can-t-win-market-with-accessibility-features">5. “We Can’t Win Market With Accessibility Features!”</h3>

<p>❌ “To increase our market share, we need <strong>features that benefit everyone</strong> and improve our standing against competition. We can’t win the market with accessibility.”</p>

<p>🙅🏾♂️ “Modern products succeed not by designing more features, but by <strong>designing better features</strong> that improve customer’s efficiency, success rate, and satisfaction. And accessibility is one of these features. For example, voice control and auto-complete were developed for accessibility but are now widely used by everyone. In fact, the entire customer base benefits from accessibility features.”</p>

<h3 id="6-our-customers-can-t-relate-to-accessibility-needs">6. “Our Customers Can’t Relate To Accessibility Needs”</h3>

<p>❌ “Our research clearly shows that our <strong>customers are young and healthy, and they don&rsquo;t have accessibility needs</strong>. We have other priorities, and accessibility isn’t one of them.”</p>

<p>🙅♀️ “I respectfully disagree. People of all ages can have accessibility needs. In fact, accessibility features show your commitment to inclusivity, reaching out to every potential customer of any age, regardless of their abilities.</p>

<p>This not only resonates with a diverse audience but also positions your brand as socially responsible and empathetic. As you know, our young user base increasingly <strong>values corporate responsibility</strong>, and this can be a significant differentiator for us, helping to build a loyal customer base for years to come.” (via <a href="https://www.smashingmagazine.com/2024/02/web-designer-accessibility-advocacy-toolkit/">Yichan Wang</a>)</p>

<h3 id="7-let-s-add-accessibility-later">7. “Let’s Add Accessibility Later”</h3>

<p>❌ “At the moment, we need to focus on the core features of our product. We can always <strong>add accessibility later</strong> once the product is more stable.”</p>

<p>🙅🏼 “I understand concerns about timing and costs. However, it’s important to note that integrating accessibility from the start is <strong>far more cost-effective</strong> than retrofitting it later. If accessibility is considered after development is complete, we will face <strong>significant additional expenses</strong> for auditing accessibility, followed by potentially extensive work involving a redesign and redevelopment.</p>

<p>This process can be significantly more expensive than embedding accessibility from the beginning. Furthermore, delaying accessibility can expose your business to <strong>legal risks</strong>. With the increasing number of lawsuits for non-compliance with accessibility standards, the cost of legal repercussions could far exceed the expense of implementing accessibility now. The financially prudent move is to work on accessibility now.”</p>

<p>You can find more useful ready-to-use templates in Yichan Wang’s <a href="https://www.smashingmagazine.com/2024/02/web-designer-accessibility-advocacy-toolkit/">Designer’s Accessibility Advocacy Toolkit</a> &mdash; a fantastic resource to keep nearby.</p>

<h2 id="building-accessibility-practices-from-scratch">Building Accessibility Practices From Scratch</h2>

<p>As mentioned above, nothing is more impactful than <strong>visualizing accessibility</strong>. However, it requires building accessibility research and accessibility practices from scratch, and it might feel like an impossible task, especially in large corporations. In “<a href="https://medium.com/booking-research/building-accessibility-research-practices-75d82098f286">How We’ve Built Accessibility Research at Booking.com</a>”, <a href="https://www.linkedin.com/in/ACoAABwTwRgBMVwjQS20ThRxGE3YPNRvonGR87k?lipi=urn%3Ali%3Apage%3Ad_flagship3_pulse_read%3BA6l3Kt%2BkS567Gmf%2BADQrBA%3D%3D">Maya Alvarado</a> presents a fantastic case study on how to build accessibility practices and inclusive design into UX research from scratch.</p>

<p>Maya rightfully points out that <strong>automated accessibility testing alone isn’t reliable</strong>. Compliance means that a user can use your product, but it doesn’t mean that it’s a great user experience. With manual testing, we make sure that customers actually meet their goals and do so effectively.</p>














<figure class="
  
  
  ">
  
    <a href="https://www.linkedin.com/posts/yjwoo_inclusivedesign-universaldesign-accessibledesign-activity-7143719973570396160-liy1/?utm_source=share&amp;utm_medium=member_desktop">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="686"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-make-strong-case-accessibility/3-universal-vs-inclusive-vs-accessible-design.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/how-make-strong-case-accessibility/3-universal-vs-inclusive-vs-accessible-design.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/how-make-strong-case-accessibility/3-universal-vs-inclusive-vs-accessible-design.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/how-make-strong-case-accessibility/3-universal-vs-inclusive-vs-accessible-design.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/how-make-strong-case-accessibility/3-universal-vs-inclusive-vs-accessible-design.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-make-strong-case-accessibility/3-universal-vs-inclusive-vs-accessible-design.png"
			
			sizes="100vw"
			alt="Visualization of Universal design vs. Inclusive design vs. Accessible design in the form of circles, where an accessible is the smallest, and universal is the biggest."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Universal design vs. Inclusive design vs. Accessible design. A visualization by Eugene Woo. (<a href='https://files.smashing.media/articles/how-make-strong-case-accessibility/3-universal-vs-inclusive-vs-accessible-design.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>Start by gathering colleagues and stakeholders interested in accessibility. Document what research was done already and where the gaps are. And then whenever possible, include 5&ndash;12 users with disabilities in accessibility testing.</p>

<p>Then, run a <strong>small accessibility initiative around key flows</strong>. Tap into critical touch points and research them. As you are making progress, extend to components, patterns, flows, and service design. And eventually, incorporate <strong>inclusive sampling</strong> into all research projects &mdash; at least 15% of usability testers should have a disability.</p>

<p>Companies often struggle to <strong>recruit testers with disabilities</strong>. One way to find participants is to reach out to local chapters, local training centers, non-profits, and public communities of users with disabilities in your country. Ask the admin’s permission to post your research announcement, and it won’t be rejected. If you test on site, <strong>add extra $25&ndash;$50</strong> depending on disability transportation.</p>

<p>I absolutely love the idea of extending <a href="https://inclusive.microsoft.design/">Microsoft&rsquo;s Inclusive Design Toolkit</a> to meet specific user needs of a product. It adds a different dimension to disability considerations which might be less abstract and much easier to relate for the entire organization.</p>

<p>As Maya noted, inclusive design is about building a door that can be opened by anyone and lets everyone in. <strong>Accessibility isn’t a checklist</strong> &mdash; it’s a practice that goes beyond compliance. A practice that involves actual people with actual disabilities throughout all UX research activities.</p>

<h2 id="wrapping-up">Wrapping Up</h2>

<p>To many people, accessibility is a <strong>big mystery box</strong>. They might have never seen a customer with disabilities using their product, and they don’t really understand what it involves and requires. But we can <strong>make accessibility relatable</strong>, approachable, and visible by bringing accessibility testing to our companies &mdash; even if it’s just a handful of tests with people with disabilities.</p>

<p>No manager really wants to <strong>deliberately ignore the needs</strong> of their paying customers &mdash; they just need to understand these needs first. Ask for small commitments, and get the ball rolling from there.</p>

<p><strong>Set up an accessibility roadmap</strong> with actions, timelines, roles and goals. Frankly, this strategy has been working for me much better than arguing about legal and moral obligations, which typically makes stakeholders defensive and reluctant to commit.</p>

<p><strong>Fingers crossed!</strong> And a huge <strong>thank-you</strong> to everyone working on and improving accessibility in your day-to-day work, often without recognition and often fueled by your own enthusiasm and passion &mdash; thank you for your incredible work in pushing accessibility forward! 👏🏼👏🏽👏🏾</p>

<h2 id="useful-resources">Useful Resources</h2>

<h3 id="making-a-case-for-accessibility">Making A Case For Accessibility</h3>

<ul>
<li>“<a href="https://www.deque.com/blog/the-business-case-for-accessibility/">How To Make The Business Case For Accessibility</a>”, by R Gregory Williams</li>
<li>“<a href="https://medium.com/booking-research/building-accessibility-research-practices-75d82098f286">How We’ve Built Accessibility Research at Booking.com</a>”, by Maya Alvarado</li>
<li>“<a href="https://www.smashingmagazine.com/2024/02/web-designer-accessibility-advocacy-toolkit/">Designer’s Accessibility Advocacy Toolkit</a>”, by Yichan Wang</li>
<li>“<a href="https://medium.com/google-design/making-the-case-for-accessibility-350da9e30c84">Making The Case for Accessibility</a>”, by Susanna Zaraysky</li>
<li>“<a href="https://www.smashingmagazine.com/2021/07/strong-case-for-accessibility/">Making A Strong Case For Accessibility</a>”, by Todd Libby</li>
<li>“<a href="https://www.deque.com/resources/type/accessibility-case-studies/">Accessibility Case Studies and Success Stories</a>”, by Deque</li>
<li>“<a href="https://www.linkedin.com/posts/vitalyfriedman_ux-design-accessibility-activity-7031928918429331456-ImIn/?lipi=urn%3Ali%3Apage%3Ad_flagship3_pulse_read%3BA6l3Kt%2BkS567Gmf%2BADQrBA%3D%3D">Inclusive Design Toolkits and Templates</a>”, by yours truly</li>
</ul>

<h3 id="accessibility-testing">Accessibility Testing</h3>

<ul>
<li>“<a href="https://dscout.com/people-nerds/accessible-user-research-1">A Comprehensive Guide to Accessible UX Research</a>”, by Brian Grellmann</li>
<li>“<a href="https://tetralogical.com/blog/2022/08/01/inclusive-user-research-recruiting-participants/">Inclusive User Research: Recruiting Participants</a>”, by Ela Gorla</li>
<li>“<a href="https://medium.com/design-bridges/accessibility-testing-babe2d84e817">Testing With Blind Users: A Cheatsheet</a>”, by Slava Shestopalov</li>
<li>“<a href="https://www.nngroup.com/articles/mobile-accessibility-research/">Mobile Accessibility Research with Screen-Reader Users</a>”, by Tanner Kohler</li>
<li>“<a href="https://www.smashingmagazine.com/2018/03/tips-conducting-usability-studies-participants-disabilities/">How To Conduct UX Research With Participants With Disabilities</a>”, by Peter McNally</li>
<li>“<a href="https://www.answerlab.com/insights/answering-your-accessibility-questions">How To Conduct Accessibility UX Research</a>”, by AnswerLab</li>
</ul>

<h2 id="meet-smart-interface-design-patterns">Meet Smart Interface Design Patterns</h2>

<p>If you are interested in <strong>UX and design patterns</strong>, take a look at <a href="https://smart-interface-design-patterns.com/"><strong>Smart Interface Design Patterns</strong></a>, our <strong>10h-video course</strong> with 100s of practical examples from real-life projects &mdash; with a live UX training later this year. Everything from mega-dropdowns to complex enterprise tables &mdash; with 5 new segments added every year. <a href="https://www.youtube.com/watch?v=aSP5oR9g-ss">Jump to a free preview</a>. Use code <a href="https://smart-interface-design-patterns.com"><strong>BIRDIE</strong></a> to <strong>save 15%</strong> off.</p>

<figure style="margin-bottom: 0"><a href="https://smart-interface-design-patterns.com/"><img style="border-radius: 11px" decoding="async" fetchpriority="low" width="950" height="492" srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/7cc4e1de-6921-474e-a3fb-db4789fc13dd/b4024b60-e627-177d-8bff-28441f810462.jpeg 400w,
https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/7cc4e1de-6921-474e-a3fb-db4789fc13dd/b4024b60-e627-177d-8bff-28441f810462.jpeg 800w,
https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/7cc4e1de-6921-474e-a3fb-db4789fc13dd/b4024b60-e627-177d-8bff-28441f810462.jpeg 1200w,
https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/7cc4e1de-6921-474e-a3fb-db4789fc13dd/b4024b60-e627-177d-8bff-28441f810462.jpeg 1600w,
https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/7cc4e1de-6921-474e-a3fb-db4789fc13dd/b4024b60-e627-177d-8bff-28441f810462.jpeg 2000w" src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/7cc4e1de-6921-474e-a3fb-db4789fc13dd/b4024b60-e627-177d-8bff-28441f810462.jpeg" sizes="100vw" alt="Smart Interface Design Patterns"></a><figcaption class="op-vertical-bottom">Meet <a href="https://smart-interface-design-patterns.com/">Smart Interface Design Patterns</a>, our video course on interface design &amp; UX.</figcaption></figure>

<div class="btn--lined btn--lined--white-border" style="margin-top: 0.75em; margin-bottom: 0.75em"><a class="btn btn--large btn--green btn--text-shadow" href="https://smart-interface-design-patterns.com/">Jump to the video course&nbsp;&rarr;</a></div>

<p><p class="ticket-price__desc" style="font-size: .8em!important; text-align: center; line-height: 1.5; margin: 0; display: block;">100 design patterns &amp; real-life
examples.<br>10h-video course + live UX training. <a href="https://www.youtube.com/watch?v=aSP5oR9g-ss">Free preview</a>.</p>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(yk)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item><item><author>Paul Boag</author><title>So Your Website Or App Is Live… Now What?</title><link>https://www.smashingmagazine.com/2024/06/website-improvement-after-launch/</link><pubDate>Mon, 24 Jun 2024 18:00:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2024/06/website-improvement-after-launch/</guid><description>The biggest mistake you can make in UX design is to launch a website or app and then walk away. Monitoring and improving after launch will benefit users and your metrics. Nothing will bring bigger gains.</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2024/06/website-improvement-after-launch/" />
              <title>So Your Website Or App Is Live… Now What?</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>So Your Website Or App Is Live… Now What?</h1>
                  
                    
                    <address>Paul Boag</address>
                  
                  <time datetime="2024-06-24T18:00:00&#43;00:00" class="op-published">2024-06-24T18:00:00+00:00</time>
                  <time datetime="2024-06-24T18:00:00&#43;00:00" class="op-modified">2026-02-09T03:03:08+00:00</time>
                </header>
                
                

<p>Whether you’ve launched a redesign of your website or rolled out a new feature in your app, that is the point where people normally move on to the next project. But, that is a mistake.</p>

<p>It’s only once a site, app, or feature goes live that we get to see actual users interacting with it in a completely natural way. It’s only then that we know if it has succeeded or failed.</p>

<p>Not that things are ever that black and white. Even if it does seem successful, there’s always room for improvement. This is particularly true with <a href="https://boagworld.com/design/conversion-rate-optimization/">conversion rate optimization.</a> Even small tweaks can lead to significant increases in revenue, leads, or other key metrics.</p>

<style>.course-intro{--shadow-color:206deg 31% 60%;background-color:#eaf6ff;border:1px solid #ecf4ff;box-shadow:0 .5px .6px hsl(var(--shadow-color) / .36),0 1.7px 1.9px -.8px hsl(var(--shadow-color) / .36),0 4.2px 4.7px -1.7px hsl(var(--shadow-color) / .36),.1px 10.3px 11.6px -2.5px hsl(var(--shadow-color) / .36);border-radius:11px;padding:1.35rem 1.65rem}@media (prefers-color-scheme:dark){.course-intro{--shadow-color:199deg 63% 6%;border-color:var(--block-separator-color,#244654);background-color:var(--accent-box-color,#19313c)}}</style>

<p class="course-intro">Want to learn more on <strong>testing and improving your website</strong>? Join Paul Boag in his upcoming live workshop on <a href="https://smashingconf.com/online-workshops/workshops/research-testing-paul-boag/"><strong>Fast and Budget-Friendly User Research and Testing</strong></a>, starting July 11. </p>

<h2 id="making-time-for-post-launch-iteration">Making Time for Post-Launch Iteration</h2>

<p>The key is to build in time for post-launch optimization from the very beginning. When you define your project timeline or sprint, don’t equate launch with the end. Instead, set the launch of the new site, app, or feature about two-thirds of the way through your timeline. This leaves time after launch for monitoring and iteration.</p>

<p>Better still, divide your team’s time into two work streams. One would focus on “innovation” — rolling out new features or content. The second would focus on “optimization” and improving what is already online.</p>

<p>In short, do anything you can to ring-fence at least some time for optimizing the experience post-launch.</p>

<p>Once you’ve done that, you can start identifying areas in your site or app that are underperforming and could do with improvement.</p>

<h2 id="identifying-problem-points">Identifying Problem Points</h2>

<p>This is where analytics can help. Look for areas with high bounce rates or exit points. Users are dropping off at these points. Also, look for low-performing conversion points. But don’t forget to consider this as a percentage of the traffic the page or feature gets. Otherwise, your most popular pages will always seem like the biggest problem.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="376"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/website-improvement-after-launch/analytics.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/website-improvement-after-launch/analytics.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/website-improvement-after-launch/analytics.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/website-improvement-after-launch/analytics.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/website-improvement-after-launch/analytics.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/website-improvement-after-launch/analytics.png"
			
			sizes="100vw"
			alt="Google Analytics dashboard with exits as percentage shown."
		/>
    

  
    <figcaption class="op-vertical-bottom">
      In Google Analytics, look at the exit rate as a percentage to identify the poorest performing pages. (<a href='https://files.smashing.media/articles/website-improvement-after-launch/analytics.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>To be honest, this is more fiddly than it should be in Google Analytics 4, so if you’re not familiar with the platform you might need some help.</p>

<p>Not that Google Analytics is the only tool that can help; I also highly recommend <a href="https://clarity.microsoft.com/utm/gad/%7BConversion_label%7D?gad=1">Microsoft Clarity</a>. This free tool provides detailed user data. It includes session recordings and heatmaps. These help you find where to improve on your website or app.</p>

<p>Play particular attention to “insights” which will show you metrics including:</p>

<ul>
<li><strong>Rage clicks</strong><br />
Where people repeatedly click something out of frustration.</li>
<li><strong>Dead clicks</strong><br />
Where people click on something that isn’t clickable.</li>
<li><strong>Excessive scrolling</strong><br />
Where people scroll up and down looking for something.</li>
<li><strong>Quick backs</strong><br />
Where people visit a page by mistake and quickly return to the previous page.</li>
</ul>

<p>Along with exits and bounces, these metrics indicate that something is wrong and should be looked at in more depth.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://clarity.microsoft.com/utm/gad/%7BConversion_label%7D?gad=1">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="376"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/website-improvement-after-launch/clarity-dashboard.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/website-improvement-after-launch/clarity-dashboard.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/website-improvement-after-launch/clarity-dashboard.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/website-improvement-after-launch/clarity-dashboard.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/website-improvement-after-launch/clarity-dashboard.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/website-improvement-after-launch/clarity-dashboard.png"
			
			sizes="100vw"
			alt="Microsoft Clarity dashboard with Rage clicks, Dead clicks, Excessive scrolling and Quick backs"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Microsoft Clarity provides invaluable insights for identifying problems in your website or app. (<a href='https://files.smashing.media/articles/website-improvement-after-launch/clarity-dashboard.png'>Large preview</a>)
    </figcaption>
  
</figure>

<h2 id="diagnosing-the-specific-issues">Diagnosing The Specific Issues</h2>

<p>Once you’ve found a problem page, the next challenge is diagnosing exactly what’s going wrong.</p>

<p>I tend to start by looking at heat maps of the page that you can find in Clarity or similar tools. These heatmaps will show you where people are engaged on the page and potentially indicate problems.</p>

<p>If that doesn’t help, I will watch recordings of people showing the problem behavior. Watching these session recordings can provide priceless insights. They show the specific pain points users are facing. They can guide you to potential solutions.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://clarity.microsoft.com/utm/gad/%7BConversion_label%7D?gad=1">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="376"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/website-improvement-after-launch/clarity-session-recordings.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/website-improvement-after-launch/clarity-session-recordings.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/website-improvement-after-launch/clarity-session-recordings.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/website-improvement-after-launch/clarity-session-recordings.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/website-improvement-after-launch/clarity-session-recordings.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/website-improvement-after-launch/clarity-session-recordings.png"
			
			sizes="100vw"
			alt="A session recording from Paul Boag’s website in Clarity."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Session recordings can be useful for identifying specific issues with a page. (<a href='https://files.smashing.media/articles/website-improvement-after-launch/clarity-session-recordings.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>If I am still confused about the problem, I may run a survey. I’ll ask users about their experience. Or, I may recruit some people and run usability testing on the page.</p>

<p>Surveys are easier to run, but can be somewhat disruptive and don’t always provide the desired insights. If I do use a survey, I will normally only display it on exit-intent to minimize disruption to the user experience.</p>

<p>If I run usability testing, I favor facilitated testing in this scenario. Although more time-consuming to run, it allows me to ask questions that almost always uncover the problem on the page. Normally, you can get away with only testing with 3 to 6 people.</p>

<p>Once you’ve identified the specific issue, you can then start experimenting with solutions to address it.</p>

<h2 id="testing-possible-solutions">Testing Possible Solutions</h2>

<p>There are almost always multiple ways of addressing any given issue, so it’s important to test different approaches to find the best. How you approach this testing will depend on the complexity of your solution.</p>

<p>Sometimes a problem can be fixed with a simple solution involving some UI tweaks or content changes. In this case, you can simply test the variations using A/B testing to see which performs better.</p>

<h3 id="a-b-test-smaller-changes">A/B Test Smaller Changes</h3>

<p>If you haven’t done A/B testing before, <a href="https://boagworld.com/design/split-testing/">it really isn’t that complicated</a>. The only downside is that A/B testing tools are massively overpriced in my opinion. That said, <a href="https://www.crazyegg.com/">Crazy Egg</a> is more reasonable (although not as powerful) and there is a free tier with <a href="https://vwo.com/">VWO</a>.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://www.crazyegg.com/">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="376"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/website-improvement-after-launch/crazyegg.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/website-improvement-after-launch/crazyegg.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/website-improvement-after-launch/crazyegg.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/website-improvement-after-launch/crazyegg.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/website-improvement-after-launch/crazyegg.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/website-improvement-after-launch/crazyegg.png"
			
			sizes="100vw"
			alt="The homepage of the Crazy Egg website: See what’s wrong with your website."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Crazy Egg is a good starting point if you are new to A/B testing. Unlike some of the more powerful tools it is reasonably priced. (<a href='https://files.smashing.media/articles/website-improvement-after-launch/crazyegg.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>Using an A/B testing tool starts by setting a goal, like adding an item to the basket. Then, you make versions of the page with your proposed improvement. These are shown to a percentage of visitors.</p>

<p>Making the changes is normally done through a simple WYSIWYG interface and it only takes a couple of minutes.</p>

<p>If your site has lots of traffic, I would encourage you to explore as many possible solutions as possible. If you have a smaller site, focus on testing just a couple of ideas. Otherwise, it will take forever to see results.</p>

<p>Also, with lower-traffic sites, keep the goal as close to the experiment as possible to maximize the amount of traffic. If there’s a big gap between goal and experiment, a lot of people will drop out during the process, and you’ll have to wait longer for results.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://www.crazyegg.com/">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="376"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/website-improvement-after-launch/split-testing.jpg 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/website-improvement-after-launch/split-testing.jpg 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/website-improvement-after-launch/split-testing.jpg 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/website-improvement-after-launch/split-testing.jpg 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/website-improvement-after-launch/split-testing.jpg 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/website-improvement-after-launch/split-testing.jpg"
			
			sizes="100vw"
			alt="There is a drop-off for every page tested, keep the goal as close to the experiment as possible."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      When testing on low-traffic sites, put the goal close to the page being tested. Otherwise, many people will drop out and results will take longer. (<a href='https://files.smashing.media/articles/website-improvement-after-launch/split-testing.jpg'>Large preview</a>)
    </figcaption>
  
</figure>

<p>Not that A/B testing is always the right way to test ideas. When your solution is more complex, involving new functionality or multiple screens, A/B testing won’t work well. That’s because to A/B test that level of change, you need to effectively build the solution, negating most of the benefits A/B testing provides.</p>

<h3 id="prototype-and-test-larger-changes">Prototype And Test Larger Changes</h3>

<p>Instead, your best option in such circumstances is to build a prototype that you can test with remote testing.</p>

<p>In the first instance, I tend to run unfacilitated testing using a tool like <a href="https://maze.co/">Maze</a>. Unfacilitated testing is quick to set up, takes little of your time, and Maze will even provide you with analytics on success rates.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://maze.co/">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="376"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/website-improvement-after-launch/maze.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/website-improvement-after-launch/maze.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/website-improvement-after-launch/maze.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/website-improvement-after-launch/maze.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/website-improvement-after-launch/maze.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/website-improvement-after-launch/maze.png"
			
			sizes="100vw"
			alt="Maze’s homepage: Don’t choose between building fast and building right."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Maze is an excellent tool for unfacilitated remote testing providing you with data as well as recordings of each test. (<a href='https://files.smashing.media/articles/website-improvement-after-launch/maze.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>But, if unfacilitated testing finds problems and you doubt how to fix them, then consider facilitated testing. That’s because facilitated testing allows you to ask questions and get to the heart of any issues that might arise.</p>

<p>The only drawback of usability testing over A/B testing is recruitment. It can be hard to find the right participants. If that’s the case, consider using a service like <a href="https://www.askable.com/eu">Askable</a>, who will carry out recruitment for you for a small fee.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://www.askable.com/eu">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="376"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/website-improvement-after-launch/askable.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/website-improvement-after-launch/askable.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/website-improvement-after-launch/askable.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/website-improvement-after-launch/askable.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/website-improvement-after-launch/askable.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/website-improvement-after-launch/askable.png"
			
			sizes="100vw"
			alt="Askable’s homepage: Run 10x more research without adjusting your caffeine intake."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      If you struggle to find test participants, consider using a service like Askable. It will handle recruitment for you. (<a href='https://files.smashing.media/articles/website-improvement-after-launch/askable.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>Failing that, don’t be afraid to use friends and family as in most cases getting the exact demographic is less important than you might think. As long as people have comparable physical and cognitive abilities, you shouldn’t have a problem. The only exception is if the content of your website or app is highly specialized.</p>

<p>That said, I would avoid using anybody who works for the organization. They will inevitably be institutionalized and unable to provide unbiased feedback.</p>

<p>Whatever approach you use to test your solution, once you’re happy, you can push that change live for all users. But, your work is still not done.</p>

<h2 id="rinse-and-repeat">Rinse And Repeat</h2>

<p>Once you’ve solved one issue, return to your analytics. Find the next biggest problem. Repeat the whole process. As you fix some problems, more will become apparent, and so you’ll quickly find yourself with an ongoing program of improvements that can be made.</p>

<p>The more you carry out this kind of work, the more the benefits will become obvious. You will gradually see improvements in metrics like engagement, conversion, and user satisfaction. You can use these metrics to make the case to management for ongoing optimization. This is better than the trap of releasing feature after feature with no regard for their performance.</p>

<h2 id="meet-fast-and-budget-friendly-user-research-and-testing">Meet Fast and Budget-Friendly User Research And Testing</h2>

<p>If you are interested in <strong>User Research and Testing</strong>, check out Paul’s workshop on <strong><a href="https://smashingconf.com/online-workshops/workshops/research-testing-paul-boag/">Fast and Budget-Friendly User Research and Testing</a></strong>, kicking off July 11.</p>

<div class="btn--lined btn--lined--white-border" style="margin-top: 0.75em; margin-bottom: 0.75em"><a class="btn btn--large btn--green btn--text-shadow" href="https://smashingconf.com/online-workshops/workshops/research-testing-paul-boag/">Jump to the workshop&nbsp;&rarr;</a></div>

<p><p class="ticket-price__desc" style="font-size: .8em!important; text-align: center; line-height: 1.5; margin: 0; display: block;">Live workshop with real-life examples.<br>5h live workshop + friendly Q&amp;A.</p>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(cr, cm, il)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item></channel></rss>