<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ux &#8211; COMPUTERCOURSESONLINE</title>
	<atom:link href="https://computercoursesonline.com/index.php/category/ux/feed/" rel="self" type="application/rss+xml" />
	<link>http://computercoursesonline.com</link>
	<description></description>
	<lastBuildDate>Thu, 28 May 2026 21:06:22 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.9.2</generator>
	<item>
		<title>Four Levels Of Customer Understanding</title>
		<link>http://computercoursesonline.com/index.php/2026/05/22/four-levels-of-customer-understanding/</link>
					<comments>http://computercoursesonline.com/index.php/2026/05/22/four-levels-of-customer-understanding/#respond</comments>
		
		<dc:creator><![CDATA[.]]></dc:creator>
		<pubDate>Fri, 22 May 2026 13:00:00 +0000</pubDate>
				<category><![CDATA[Ux]]></category>
		<guid isPermaLink="false">http://computercoursesonline.com/?p=1229</guid>

					<description><![CDATA[Four Levels Of Customer Understanding Four Levels Of Customer Understanding Vitaly Friedman 2026-05-22T13:00:00+00:00 2026-05-28T20:50:06+00:00 Many companies think they know fairly well what their users want and need, and how they make their decisions. Yet most of the time these are merely big assumptions and big hunches &#8212; with little real evidence to support them. In...]]></description>
										<content:encoded><![CDATA[<p>              <title>Four Levels Of Customer Understanding</title></p>
<article>
<header>
<h1>Four Levels Of Customer Understanding</h1>
<address>Vitaly Friedman</address>
<p>                  2026-05-22T13:00:00+00:00<br />
                  2026-05-28T20:50:06+00:00<br />
                </header>
<p>Many companies think they know fairly well what their users want and need, and how they make their decisions. Yet most of the time these are merely big assumptions and big hunches &mdash; with little real evidence to support them. In practice, <strong>obvious reasons</strong> might be true, but they rarely paint the full picture.</p>
<p>To understand our customers, we must triangulate across <a href="https://www.linkedin.com/posts/hannahshamji_8-months-ago-i-posted-an-original-framework-share-7307469501229420544-t19q/">four levels of customer understanding</a> by Hannah Shamji. It’s a useful way to think about the <strong>underlying reasons</strong> for user behavior, hidden motivations, and the complex layers of messy and noisy reality that are often overlooked. Let’s see how it works.</p>
<figure class="
  
  
  "></p>
<p>    <a href="https://www.linkedin.com/posts/hannahshamji_8-months-ago-i-posted-an-original-framework-share-7307469501229420544-t19q/"></p>
<p>    <img loading="lazy" width="800" height="706" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="A diagram titled Understanding Customers: Four levels of customer understanding, showing four nested pink circles, each representing a level of understanding, with descriptions beside. From outermost to innermost: Level 1 (What they say), Level 2 (What they think or feel), Level 3 (What they do), and Level 4 (Why they do it)." class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/four-levels-customer-understanding/1-four-levels-customer-understanding.jpg"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Four levels of customer understanding: what people say, think or feel, do, and why they do it. By <a href="https://www.linkedin.com/posts/hannahshamji_8-months-ago-i-posted-an-original-framework-share-7307469501229420544-t19q/">Hannah Shamji</a>. (<a href="https://files.smashing.media/articles/four-levels-customer-understanding/1-four-levels-customer-understanding.jpg">Large preview</a>)<br />
    </figcaption></figure>
<h2 id="don-t-ask-users-your-burning-questions">Don’t Ask Users Your Burning Questions</h2>
<p>To learn about customers, it might seem reasonable to <strong>ask people</strong> what they think and draw conclusions from it. But it’s <a href="https://www.linkedin.com/pulse/research-questions-interview-erika-hall/">rarely an effective way</a> to get actionable answers. In fact, as it turns out, what people <em>think</em>, <em>feel</em>, <em>say</em>, and <em>do</em> are often <a href="https://uxdesign.cc/dont-ask-users-your-burning-questions-34abedd92a0?sk=v2%2F8aba2177-2a6a-49f9-b9f7-6b173f2b92f8">very different things</a>.</p>
<figure class="
  
  
  "></p>
<p>    <a href="https://www.linkedin.com/feed/update/urn:li:activity:7140680577552117760/"></p>
<p>    <img loading="lazy" width="800" height="1001" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="A list detailing six reasons people cancel subscriptions, categorized into voluntary and involuntary churn, with explanations for each." class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/four-levels-customer-understanding/2-reasons-people-cancel-subscriptions.jpeg"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      People don’t always cancel because they want to. Reasons for voluntary and involuntary customer churn. By <a href="https://www.linkedin.com/feed/update/urn:li:activity:7140680577552117760/">Emily Anderson</a>. (<a href="https://files.smashing.media/articles/four-levels-customer-understanding/2-reasons-people-cancel-subscriptions.jpeg">Large preview</a>)<br />
    </figcaption></figure>
<p>As Erika Hall <a href="https://medium.com/mule-design/on-surveys-5a73dda5e9a0">wrote</a>, asking a question directly is the <strong>worst way</strong> to get a true and useful answer to that question. We don’t always understand or are aware of our <strong>true motivations</strong>. We often apply our own context and interpretations to questions.</p>
<p>We also exaggerate (<em>a lot!</em>). We focus on <strong>edge cases</strong> and unrealistic scenarios, and we favor <strong>short-term goals</strong> over long-term goals. So if users say that they absolutely need to <em>compare products in a table</em>, it doesn’t mean that they couldn’t get to their underlying goal <a href="https://www.productchart.com/monitors/">without it</a>.</p>
<h2 id="possible-vs-probable">“Possible” vs. “Probable”</h2>
<p>Just to indicate how tricky listening to <em>words</em> alone is: even little <strong>nuances in words chosen</strong> matter. In practice, users are rarely precise in expressing their thoughts, and a good example is the distinction between <em>possible</em>, <em>plausible</em>, and <em>probable</em>, as <a href="https://www.linkedin.com/feed/update/urn:li:activity:7447580258918100992/">discovered by Thomas D&rsquo;hooge</a>.</p>
<figure class="
  
  
  "></p>
<p>    <a href="https://www.linkedin.com/feed/update/urn:li:activity:7447580258918100992/"></p>
<p>    <img loading="lazy" width="800" height="1000" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="A chart showing overlaid density plots (ridge plots) that illustrate the numerical interpretation of various probability phrases" class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/four-levels-customer-understanding/3-numerical-interpretation-various-probability-phrases.jpeg"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Numerical interpretation of probability phrases and their ranges. <a href="https://www.linkedin.com/feed/update/urn:li:activity:7447580258918100992/">Source</a>. (<a href="https://files.smashing.media/articles/four-levels-customer-understanding/3-numerical-interpretation-various-probability-phrases.jpeg">Large preview</a>)<br />
    </figcaption></figure>
<p>A <a href="https://jcom.sissa.it/article/pubid/JCOM_1902_2020_A03/">study on Dutch verbal probability terms</a> shows how unreliable the choice of words is. While extreme words have some agreement, terms like “possible,” “maybe,” “uncertain,” or “likely” lead to a wide spread of <strong>interpretations</strong>. So we shouldn’t rely on what people say, but rather try to go deeper.</p>
<h2 id="the-levels-of-understanding">The Levels Of Understanding</h2>
<p>To get a <strong>more realistic and less biased</strong> view of customers’ needs, we need to understand a broader picture across 4 levels:</p>
<figure class="
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/four-levels-customer-understanding/4-four-levels-customer-understanding.jpeg"></p>
<p>    <img loading="lazy" width="800" height="800" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="A diagram titled Understanding Customers: Four levels of customer understanding, showing four nested pink circles, each representing a level of understanding, with descriptions beside. From outermost to innermost: Level 1 (What they say), Level 2 (What they think or feel), Level 3 (What they do), and Level 4 (Why they do it)." class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/four-levels-customer-understanding/4-four-levels-customer-understanding.jpeg"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Four levels of customer understanding: what people say, think or feel, do, and why they do it. By Hannah Shamji, visualized by Helio. (<a href="https://files.smashing.media/articles/four-levels-customer-understanding/4-four-levels-customer-understanding.jpeg">Large preview</a>)<br />
    </figcaption></figure>
<ul>
<li><strong>Level 1: “What they say”</strong><br />
Easier to collect, but mostly opinions, and most unreliable. People often explain their behavior through the lens of how they <em>perceive</em> it, or how they <em>want it to be perceived</em>, which isn’t always accurate. We shouldn’t rely too much on CRM data, surveys, or polls.</li>
<li><strong>Level 2: “What they think and feel”</strong><br />
Gives more context, but is still heavily shaped by memory and personal preferences. Good user research and interviews help us understand expectations and experiences.</li>
<li><strong>Level 3: “What they do”</strong><br />
We study actual behavior, actions taken or skipped, usage data, and analytics. We run <a href="https://www.linkedin.com/pulse/breaking-down-complexity-task-analysis-ux-vitaly-friedman-sjt4f/">task analysis and workflow analysis</a> to understand how people use the product.</li>
<li><strong>Level 4: “Why they do it”</strong><br />
We study <strong>underlying motivations</strong> and root causes, through observations of real workflows and in-depth interviews. Typically, it requires a trustworthy relationship with the user, repeat interviews, and task walkthroughs.</li>
</ul>
<p>Personally, I wouldn’t recommend <a href="https://www.linkedin.com/posts/vitalyfriedman_ux-design-metrics-share-7072585934147371008-XWXu">NPS</a> (<a href="https://www.linkedin.com/posts/vitalyfriedman_measure-ux-in-b2b-an-alternative-to-nps-share-7396872383355256833-eZQQ">alternative</a>). It’s worth noting that different levels might reveal conflicting or contradictory data. To get a better understanding, we need to <a href="https://www.linkedin.com/posts/vitalyfriedman_how-to-resolve-conflicting-data-and-ux-share-7340729861457534979-enqH">triangulate and reconcile data</a> with mixed-method research.</p>
<h2 id="capturing-emotions-and-nuance">Capturing Emotions And Nuance</h2>
<p>Emotions are always difficult to capture, but they are easier to spot once you observe people doing what they need to do <strong>without external influence</strong> or interruptions. The ability to positively impact users grows by moving <a href="https://www.nngroup.com/articles/sympathy-vs-empathy-ux/">from sympathy to empathy</a> or even compassion, as articulated by Sarah Gibbons.</p>
<figure class="
  
  
  "></p>
<p>    <a href="https://www.nngroup.com/articles/sympathy-vs-empathy-ux/"></p>
<p>    <img loading="lazy" width="800" height="643" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="A diagram titled ‘Spectrum of Empathy’ with a vertical ‘Effort’ axis and a horizontal ‘Understanding &amp; Engagement’ axis. Four overlapping circles, increasing in size from left to right, represent Pity, Sympathy, Empathy, and Compassion, each with a corresponding phrase." class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/four-levels-customer-understanding/5-spectrum-empathy.png"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Spectrum of Empathy: from pity to sympathy to empathy to compassion. By <a href="https://www.nngroup.com/articles/sympathy-vs-empathy-ux/">Sarah Gibbons</a>. (<a href="https://files.smashing.media/articles/four-levels-customer-understanding/5-spectrum-empathy.png">Large preview</a>)<br />
    </figcaption></figure>
<p>In the past, I was using <em>“speak-aloud” protocol</em> and asked users to walk me through their thought process as they were completing tasks. But it actually turns out to be quite disruptive. Because people are focused on speaking at the same time while solving a task, many <strong>emotions remain hidden</strong> or obscured by their language.</p>
<p>So, when conducting usability testing, <strong>I don’t ask users to speak</strong> through their experience. Instead, I observe where they tap or hover with the mouse, where their mouse circles without an action, where they scroll, and how long. Eventually, when a user confirms that they are done or that they are stuck, I ask questions.</p>
<figure class="
  
  
  "></p>
<p>    <a href="https://uca.edu/bewell/files/2020/11/Feelings-Wheel-Learn-How-to-Label-Your-Feelings.pdf"></p>
<p>    <img loading="lazy" width="800" height="800" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="A colorful circular chart of emotions, starting with Happy, Sad, Angry, Fearful, Bad, Surprised, and Disgusted at the inner ring, branching out to more specific feelings in the outer rings." class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/four-levels-customer-understanding/6-circular-chart-emotions.jpeg"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      The Wheel of Emotions helps articulate emotions more precisely. (<a href="https://files.smashing.media/articles/four-levels-customer-understanding/6-circular-chart-emotions.jpeg">Large preview</a>)<br />
    </figcaption></figure>
<p>The <a href="https://uca.edu/bewell/files/2020/11/Feelings-Wheel-Learn-How-to-Label-Your-Feelings.pdf">Emotion Wheel</a> (<a href="https://feelingswheel.com">website</a>) by Geoffrey Roberts is a helpful little tool for better describing a range of emotions during user interviews or design sessions. It certainly needs refinement for <strong>product design needs</strong>, but it helps us get more precise about <strong>the sentiment</strong> customers or colleagues might be experiencing, moving beyond just “good” or “bad”.</p>
<p>One helpful trick is to use <strong>mirroring</strong> &mdash; repeating what a user has said, or ask the same question twice, just paraphrasing it. Or navigating the emotions wheel (see above) to better capture and understand the emotion.</p>
<p>These strategies help uncover some of the issues that perhaps didn’t come up in the first answer. That’s also when a user tends to add more useful context and details as they explain their confusion.</p>
<h2 id="emotions-aren-t-everything">Emotions Aren’t Everything</h2>
<p>Some people <a href="https://alinbuda.com/my-case-against-empathy/">strongly disagree</a>:</p>
<blockquote><p>“Our work is about others &mdash; their problems, their pain, their mess. Our job is to make sense of it and then do something about it. Not to emote or perform but to act on and solve it. There is a <strong>flawed belief</strong> that to build great things, you first need to emotionally fully absorb someone else’s experience.”</p>
<p>&mdash; Alin Buda</p></blockquote>
<figure class="
  
  
  "></p>
<p>    <a href="https://www.linkedin.com/posts/indiyoung_uxresearch-designresearch-inclusivedesign-share-7047371089408081920-qEsG/"></p>
<p>    <img loading="lazy" width="800" height="549" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="A diagram categorizing potential harms of solutions into mild, serious, lasting, and systemic, with corresponding examples." class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/four-levels-customer-understanding/7-diagram-categorizing-potential-harms-solutions.jpeg"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Different solutions can cause different levels of harm, which can be way more severe and impactful than emotional response. By <a href="https://www.linkedin.com/posts/indiyoung_uxresearch-designresearch-inclusivedesign-share-7047371089408081920-qEsG/">Indi Young</a>. (<a href="https://files.smashing.media/articles/four-levels-customer-understanding/7-diagram-categorizing-potential-harms-solutions.jpeg">Large preview</a>)<br />
    </figcaption></figure>
<p>I think that Alin brings up a very strong argument, and personally, I find it difficult to disagree with. However, I do see user’s emotional response as a <strong>signal</strong> of how well the product is working for them. How engaged or detached they are in their journey, how they react to <a href="https://www.chrbutler.com/the-art-secret-behind-all-great-design">aesthetics</a>, how confused or confident they are.</p>
<p>Ultimately, these are signals. To make a difference, we must go <strong>beyond emotions</strong> and explore what people actually do. Usually, this means relentlessly observing, diagnosing, and focusing on underlying user needs.</p>
<h2 id="observe-and-diagnose-don-t-validate">Observe And Diagnose, Don’t Validate</h2>
<p>Instead of asking, we need to <strong>observe</strong>. Usually, I focus on small things that make or break an experience. I see where users <strong>lose time</strong>, repeat actions, hover without clicking, or click and then go back. Pay attention to subtle cues like scratching their neck, raising eyebrows, or expressions of worry, joy, or confusion.</p>
<p>Many companies talk about “validation” through user testing, but often that means simply confirming existing assumptions. But we should instead <strong>diagnose existing behavior</strong> without preconceived notions or affiliations. We don’t validate &mdash; we actually research instead.</p>
<figure class="
  
  
  "></p>
<p>    <a href="https://www.linkedin.com/posts/nikkianderson-ux_the-moment-someone-says-lets-validate-this-share-7371206500830199809-nvB0/"></p>
<p>    <img loading="lazy" width="800" height="1002" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="A diagram categorizing potential harms of solutions into mild, serious, lasting, and systemic, with corresponding examples." class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/four-levels-customer-understanding/8-words-instead-validate.jpg"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Words to use instead of “validate”: research, understand, investigate, assess, evaluate, examine, learn. By <a href="https://www.linkedin.com/posts/nikkianderson-ux_the-moment-someone-says-lets-validate-this-share-7371206500830199809-nvB0/">Nikki Anderson</a>. (<a href="https://files.smashing.media/articles/four-levels-customer-understanding/8-words-instead-validate.jpg">Large preview</a>)<br />
    </figcaption></figure>
<p>That research means not just understanding <strong>customers’ real motivations</strong>, but also risks, doubts, concerns, worries, and perhaps even <a href="https://www.linkedin.com/posts/indiyoung_uxresearch-designresearch-inclusivedesign-share-7047371089408081920-qEsG/">harms</a>.</p>
<p>The only way to get there is by building a sincere, honest, and <strong>trustworthy relationship</strong> &mdash; one that feels right and resonates deeply. When customers truly care and want to help, getting to a real understanding becomes much, much easier.</p>
<h2 id="practical-ways-to-uncover-user-needs">Practical Ways To Uncover User Needs</h2>
<p>We don’t need expensive tools to uncover user needs. David Travis provides a <a href="https://medium.com/@userfocus/60-ways-to-understand-user-needs-that-arent-focus-groups-or-surveys-8510e13b3408">fantastic overview</a> of helpful strategies to do just that. Here are some initiatives to spread the word about real user’s struggles or gain a <strong>deeper understanding</strong> of user needs:</p>
<ul>
<li><strong>Exposure hours</strong>, when every employee must be <a href="https://archive.uie.com/brainsparks/2011/12/19/exposure-hours-drive-ux-innovation/">exposed to their customers</a> for at least 2 hours every 6&ndash;12 weeks.</li>
<li><strong>Live UX testing</strong>, where we invite everyone in the company to join and observe.</li>
<li><strong>Co-design with users</strong>, where we show new features and ask users to rank them.</li>
<li><strong>Helpdesk insights</strong>, where we ask for frequent complaints and questions from the support every 3&ndash;6 months.</li>
<li><strong>Listening in</strong>, where we tune in on a customer service call, web chat, or eavesdrop where users hang out.</li>
</ul>
<p>The core idea here is that you don’t need extensive and expensive tools to uncover user needs. You need to create spaces where <strong>customers’ struggles can be exposed</strong> and make these struggles visible across the entire company.</p>
<p>It can be <strong>short video clips</strong> of user sessions or a monthly newsletter with what we learned this month. Making these pain points visible can rally everyone from marketing to engineering to keep users’ struggles at the back of their minds.</p>
<h2 id="wrapping-up">Wrapping Up</h2>
<p>To make an impact, we must go way <strong>beyond user feedback</strong>. It’s never enough to listen to surveys &mdash; we must <strong>observe customers’ actual behaviors</strong> and build relationships to truly understand their goals and their motivations.</p>
<p>And most importantly, we need to understand <strong>what questions</strong> we actually want to have answered. Not what “validation” we need to move on with the project, but what we don’t know and what we need to <strong>research</strong>.</p>
<p>Without it, everything else is merely hunches and assumptions &mdash; and often wrong and expensive ones.</p>
<h2 id="meet-measure-ux-amp-design-impact">Meet “Measure UX &amp; Design Impact”</h2>
<p>Meet <a href="https://measure-ux.com"><strong>Measure UX &amp; Design Impact</strong></a>, Vitaly’s practical guide <strong>for designers and UX leads</strong> on how to track and visualize the incredible <strong>impact</strong> of your UX work on business &mdash; with a <a href="https://smashingconf.com/online-workshops/workshops/vitaly-friedman-impact-design/">live UX training</a> later this year. <a href="https://measure-ux.com/">Jump to details</a>.</p>
<figure class="break-out" style="margin-bottom:0;padding-bottom:0">
    <a href="https://measure-ux.com/" title="How To Measure UX and Design Impact, with Vitaly Friedman"><br />
    <img loading="lazy" width="900" height="466" style="border-radius: 11px" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="How to Measure UX and Design Impact, with Vitaly Friedman." class="lazyload" data-src="https://computercoursesonline.com/wp-content/uploads/2025/04/measure-ux-and-design-impact-course.png"><br />
    </a><figcaption class="op-vertical-bottom">Meet <a href="https://measure-ux.com/">Measure UX and Design Impact</a>, a practical video course for designers and UX leads.</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"><br />
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>
<p><span class="book-cta__price"><span><span class=""><span class="currency-sign">$</span>&nbsp;<span>495<sup class="sup">.00</sup></span></span> <span class="book-cta__price--old"><span class="currency-sign">$</span>&nbsp;<span>799<sup class="sup">.00</sup></span></span></span></span><br />
<a href="https://smart-interface-design-patterns.thinkific.com/enroll/3081832?price_id=3951439" class="btn btn--full btn--medium btn--text-shadow"><br />
Get Video + UX Training</p>
<div></div>
<p></a></p>
<p class="book-cta__desc">25 video lessons (8h) + <a href="https://smashingconf.com/online-workshops/workshops/vitaly-friedman-impact-design/">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>250<sup class="sup">.00</sup></span></span><span class="book-cta__price--old"><span class="currency-sign">$</span>&nbsp;<span>350<sup class="sup">.00</sup></span></span></span></span></div>
<p><a href="https://smart-interface-design-patterns.thinkific.com/enroll/3081832?price_id=3950630" class="btn btn--full btn--medium btn--text-shadow"><br />
Get the video course</p>
<div></div>
<p></a></p>
<p class="book-cta__desc" data-audience="anonymous free supporter" data-remove="true">25 video lessons (8h). 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>
<p><span></span></div>
</div>
<h2 id="useful-resources">Useful Resources</h2>
<ul>
<li><a href="https://www.linkedin.com/posts/hannahshamji_8-months-ago-i-posted-an-original-framework-share-7307469501229420544-t19q/">Four Levels of Customer Understanding</a>, by Hannah Shamji</li>
<li><a href="https://medium.com/@userfocus/60-ways-to-understand-user-needs-that-arent-focus-groups-or-surveys-8510e13b3408">60 Ways To Understand User Needs</a>, by David Travis</li>
<li><a href="https://uca.edu/bewell/files/2020/11/Feelings-Wheel-Learn-How-to-Label-Your-Feelings.pdf">Emotion Wheel Toolkit (PNG)</a>, by Geoffrey Roberts</li>
<li><a href="https://uca.edu/bewell/files/2020/11/Feelings-Wheel-Learn-How-to-Label-Your-Feelings.pdf">Feelings Wheel PDF</a></li>
<li><a href="https://feelingswheel.com">Feelings Wheel Online</a></li>
<li><a href="https://alinbuda.com/my-case-against-empathy/">My Case Against Empathy</a>, by Alin Buda</li>
<li><a href="https://www.linkedin.com/feed/update/urn:li:activity:7447580258918100992/">Possible vs. Probable</a>, by Thomas D’hooge</li>
<li><a href="https://jcom.sissa.it/article/pubid/JCOM_1902_2020_A03/">Communicating probability: a multinational study of the interpretation of verbal probability terms</a>, by Maarten C. de Vries, Marjolijn L. de Boer, and Martine Bouman.</li>
</ul>
<h3 id="useful-books">Useful Books</h3>
<ul>
<li><em>Deploy Empathy: A practical guide to interviewing customers</em>, by Michele Hansen</li>
<li><em>Humankind</em>, by Rutger Bregman</li>
</ul>
<div class="signature">
  <img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Smashing Editorial" width="35" height="46" loading="lazy" class="lazyload" data-src="https://www.smashingmagazine.com/images/logo/logo--red.png"><br />
  <span>(yk)</span>
</div>
</article>
]]></content:encoded>
					
					<wfw:commentRss>http://computercoursesonline.com/index.php/2026/05/22/four-levels-of-customer-understanding/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Ten Data-Backed Truths Of User Experience ROI</title>
		<link>http://computercoursesonline.com/index.php/2026/05/15/ten-data-backed-truths-of-user-experience-roi/</link>
					<comments>http://computercoursesonline.com/index.php/2026/05/15/ten-data-backed-truths-of-user-experience-roi/#respond</comments>
		
		<dc:creator><![CDATA[.]]></dc:creator>
		<pubDate>Fri, 15 May 2026 10:00:00 +0000</pubDate>
				<category><![CDATA[Ux]]></category>
		<guid isPermaLink="false">http://computercoursesonline.com/?p=1225</guid>

					<description><![CDATA[Ten Data-Backed Truths Of User Experience ROI Ten Data-Backed Truths Of User Experience ROI Carrie Webster 2026-05-15T10:00:00+00:00 2026-05-21T20:44:30+00:00 In the high-stakes economy of today, the cost of a friction-heavy interface is no longer just “lost clicks”, but potentially millions in wasted engineering spend and lost business value. As a veteran UX designer who has helped...]]></description>
										<content:encoded><![CDATA[<p>              <title>Ten Data-Backed Truths Of User Experience ROI</title></p>
<article>
<header>
<h1>Ten Data-Backed Truths Of User Experience ROI</h1>
<address>Carrie Webster</address>
<p>                  2026-05-15T10:00:00+00:00<br />
                  2026-05-21T20:44:30+00:00<br />
                </header>
<p>In the high-stakes economy of today, the cost of a friction-heavy interface is no longer just “lost clicks”, but potentially millions in wasted engineering spend and lost business value. As a veteran UX designer who has helped build digital products since the early mobile-first era, I’ve watched business leaders shift from viewing design as a “cosmetic preference” to recognising that user experience is actually the primary engine of business survival.</p>
<p>A UX design role is as much about <strong>research</strong> and <strong>analytics</strong> as it is about pixels, and I believe that hard data is the only tool powerful enough to bridge the gap between design and the boardroom. Facts don’t just advocate for the user; they prove that UX is a <strong>non-negotiable requirement</strong> for a healthy bottom line. Even in the rooms where decisions are made, UX is frequently undervalued as a ‘visual’ role. I’ve learned that the most effective way to dismantle this myth is through <strong>data</strong>.</p>
<p>The following ten facts represent the current reality of the digital world. These are not just “design tips”; they are the clinical, data-backed pillars for financial growth in a saturated market. Some of these facts are also commonly used by designers as best practices.</p>
<p>For example, I once led a B2C mobile design project, where I was able to strip 1.2 seconds off the mobile load time by reducing and removing some of the visual assets. The result was an immediate 12% lift in completed transactions, proving that in UX, every tenth of a second is a direct lever for revenue.</p>
<h2 id="1-fixing-issues-in-the-design-phase-is-100-times-cheaper">1. Fixing Issues In The Design Phase Is 100 Times Cheaper</h2>
<p>One of the most compelling financial arguments for UX is the <strong>1:100 rule</strong>. Modern studies, such as from the <a href="https://www.researchgate.net/figure/BM-System-Science-Institute-Relative-Cost-of-Fixing-Defects_fig1_255965523">IBM Systems Institute</a> and <a href="https://www.seguetech.com/rising-costs-defects/">Sugue Technologies</a>, show that fixing an error after a product has been developed and launched can be <strong>up to 100 times more expensive</strong> than fixing it during the initial design and prototyping phase.</p>
<p>Think of UX as “engineering insurance.” By the time a developer touches the code, every interaction should have been validated. If you discover a fundamental navigation flaw after launch, <a href="https://www.linkedin.com/pulse/2024-cost-fixing-defects-importance-acceptance-a-j-karikari-a10ef/">you aren’t just paying for the fix</a>; you’re paying for technical debt, lost developer time, and the revenue lost while users struggle with a broken flow.</p>
<figure class="
  
    break-out article__image
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/data-backed-truths-user-experience-roi/1-cost-bug-fixing.png"></p>
<p>    <img loading="lazy" width="800" height="420" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Graph showing the cost of bug fixing during different phases." class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/data-backed-truths-user-experience-roi/1-cost-bug-fixing.png"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Graph showing the cost of bug fixing during different phases. (Image source: <a href="https://qatestlab.medium.com/the-true-cost-of-a-software-bug-f8ee6a08b10b">QATestLab</a>) (<a href="https://files.smashing.media/articles/data-backed-truths-user-experience-roi/1-cost-bug-fixing.png">Large preview</a>)<br />
    </figcaption></figure>
<div data-audience="non-subscriber" data-remove="true" class="feature-panel-container">
<aside class="feature-panel">
<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>
<p><a data-instant href="smashing-workshops" class="btn btn--green btn--large">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"></p>
<div class="feature-panel-image">
<img loading="lazy" class="feature-panel-image-img lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Feature Panel" width="257" height="355" data-src="/images/smashing-cat/cat-scubadiving-panel.svg"></p>
</div>
<p></a>
</div>
</aside>
</div>
<h2 id="2-performance-impacts-user-experience">2. Performance Impacts User Experience</h2>
<p>In the current landscape, performance is the essential foundation of user experience. A beautiful interface is worthless if the user bounces before it renders. <a href="https://www.wearetenet.com/blog/website-speed-page-load-time-statistics">The data is uncompromising</a>: <strong>47% of users expect a page to load in two seconds or less</strong>, and missing this window is a financial catastrophe. A mere one-second delay can reduce conversions by <strong>20%</strong> and satisfaction by <strong>16%</strong>, while retail businesses lose an estimated <strong>$2.6 billion annually</strong> to slow load times. When mobile load time moves from one to three seconds, the bounce rate spikes by <strong>32%</strong>, and by the third second, conversion rates typically plummet from <strong>40% to 29%</strong>.</p>
<p>However, this volatility offers a massive lever for growth. Even a microscopic <strong>0.1-second improvement</strong> can lift retail conversions by <strong>8.4%</strong>, and travel site conversions by <strong>10.1%</strong>. Improving your Largest Contentful Paint (LCP) by 31% &mdash; a benchmark 67% of websites achieved as of June 2025 &mdash; can drive a direct <strong>8% increase in sales</strong>. As a long-time designer, I treat speed as a primary design element.</p>
<blockquote><p>If the site isn’t instantaneous, the design hasn’t just failed &mdash; it effectively doesn’t exist.</p></blockquote>
<figure class="
  
    break-out article__image
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/data-backed-truths-user-experience-roi/2-conversion-rate-page-load-time.png"></p>
<p>    <img loading="lazy" width="800" height="467" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Graph showing conversion rate by page load time" class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/data-backed-truths-user-experience-roi/2-conversion-rate-page-load-time.png"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      When pages load in one second, conversion rates are about 40%. (Image source: <a href="https://www.wearetenet.com/blog/website-speed-page-load-time-statistics">Tenet</a>) (<a href="https://files.smashing.media/articles/data-backed-truths-user-experience-roi/2-conversion-rate-page-load-time.png">Large preview</a>)<br />
    </figcaption></figure>
<h2 id="3-your-site-has-50-milliseconds-to-impress-your-customers">3. Your Site Has 50 Milliseconds to Impress Your Customers</h2>
<p>First impressions are both <a href="https://www.nngroup.com/articles/first-impressions-human-automaticity/">visceral and aesthetic</a>. <a href="https://cxl.com/blog/first-impressions-matter-the-importance-of-great-visual-design/">Research</a> indicates that users form an opinion about a website’s visual appeal in approximately <strong>50 milliseconds</strong> (0.05 seconds). That’s not a lot of time! This split-second “gut-feeling” is a survival mechanism that dictates whether a user stays to explore your value proposition or bounces immediately.</p>
<p>In the current market, <strong>94% of first impressions</strong> are <a href="https://cxl.com/blog/first-impressions-matter-the-importance-of-great-visual-design/">strictly design related</a>. If your interface feels “off” or dated, users subconsciously project that lack of quality onto your entire product or service. Your content effectively doesn’t exist if your design hasn’t earned the five seconds of attention required to read it.</p>
<h2 id="4-hick-s-law-the-cost-of-overwhelm">4. Hick’s Law: The Cost of Overwhelm</h2>
<p>Stakeholders often think “more options” equals “more value.” Psychology proves the opposite. <a href="https://ixdf.org/literature/article/hick-s-law-making-the-choice-easier-for-users">Hick’s Law</a> states that the time it takes to make a decision increases with the number of options available.</p>
<p>Every extra menu item or form field is a “tax” on the user’s brain. As noted by <a href="https://www.landbase.com/blog/conversion-rate-statistics">Landbase</a>, top-performing sites now achieve conversion rates exceeding 11%, while average performers struggle below 3%. Those performing well have applied personalization and optimization strategies to simplify the experience.</p>
<blockquote><p>If you want to increase your revenue by tomorrow, find one field to delete from your checkout flow today.</p></blockquote>
<figure class="
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/data-backed-truths-user-experience-roi/3-complex-choices-vs-simple.png"></p>
<p>    <img loading="lazy" width="800" height="608" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Demonstrating complex choices vs simple." class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/data-backed-truths-user-experience-roi/3-complex-choices-vs-simple.png"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Demonstrating complex choices vs simple. (Image source: <a href="https://ixdf.org/literature/article/hick-s-law-making-the-choice-easier-for-users">Mads Soegaard</a>) (<a href="https://files.smashing.media/articles/data-backed-truths-user-experience-roi/3-complex-choices-vs-simple.png">Large preview</a>)<br />
    </figcaption></figure>
<h2 id="5-white-space-improves-comprehension">5. White Space Improves Comprehension</h2>
<p>“White space” is often viewed as wasted real estate by non-designers. In reality, it is a tool for focus. Strategic use of white space can <a href="https://www.loop11.com/the-power-of-white-space-in-ux-design/">increase a user’s content comprehension by up to <strong>20%</strong></a>.</p>
<p>White space prevents “cognitive load” from peaking. By giving the user’s eyes a place to rest, you guide them toward the most important elements, usually your “Buy” or “Sign Up” button. In 2026, as attention spans have dropped to roughly <strong><a href="https://time.com/3858309/attention-spans-goldfish/">8 seconds</a></strong>, simplicity is the ultimate luxury and a major driver of engagement.</p>
<p>For example, in a fintech dashboard I worked on, analyst users were feeling overwhelmed by a ‘data dump’ layout in some of the dashboard components. I applied more white space around the data to lower their cognitive load. Simply giving the data room to breathe led to a 25% decrease in time-on-task and a significant boost in trial-to-paid conversions.</p>
<h2 id="6-the-power-of-fake-progress">6. The Power Of “Fake” Progress</h2>
<p>One of the most surprising psychological hacks in UX is that users will complete a task faster if they believe they have already made progress. This is known as the <strong>Goal Gradient Effect</strong>.</p>
<p>In a classic study, researchers found that a 10-stamp coffee card with two stamps already “pre-filled” was completed significantly faster than an 8-stamp card with zero pre-fills, even though the total spend required was identical. In digital design, showing a progress bar that starts at 15% (simply for creating an account) <a href="https://lawsofux.com/goal-gradient-effect/">increases completion rates for onboarding by over 40%</a>. We aren’t just designing screens &mdash; we are managing the user’s dopamine and sense of momentum.</p>
<figure class="
  
    break-out article__image
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/data-backed-truths-user-experience-roi/4-goal-gradient-effect.png"></p>
<p>    <img loading="lazy" width="800" height="287" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Goal Gradient Effect" class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/data-backed-truths-user-experience-roi/4-goal-gradient-effect.png"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Increased motivation to reach the target based on current progress. (Image source: <a href="https://conversion-uplift.co.uk/glossary-of-conversion-marketing/goal-gradient-effect/">Conversion Uplift</a>) (<a href="https://files.smashing.media/articles/data-backed-truths-user-experience-roi/4-goal-gradient-effect.png">Large preview</a>)<br />
    </figcaption></figure>
<div class="partners__lead-place"></div>
<h2 id="7-make-your-content-readable">7. Make Your Content Readable</h2>
<p>Many stakeholders believe that cramming more text “above the fold” increases value. <a href="https://www.w3.org/WAI/WCAG21/Understanding/visual-presentation.html">Data proves the opposite</a>. Proper typography, specifically line spacing (leading) and paragraph width, can increase content comprehension and reading speed by up to <strong>20%</strong>.</p>
<p>Optimal line height (generally 1.5x the font size) reduces “visual noise,” allowing the brain to process information with less cognitive effort. When users struggle to read your text due to tight spacing or small fonts, their “perceived effort” increases, leading to a higher bounce rate. Legibility is a conversion tool: if it’s hard to read, it’s hard to buy.</p>
<p>There are many ways to display more legible text. For example, if line spacing (leading) is too small or the font is too heavy, this also impacts readability.</p>
<figure class="
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/data-backed-truths-user-experience-roi/5-difference-readability.png"></p>
<p>    <img loading="lazy" width="800" height="618" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="This example demonstrates the difference in readability between a light and a heavy font display." class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/data-backed-truths-user-experience-roi/5-difference-readability.png"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      This example demonstrates the difference in readability between a light and a heavy font display. (Image source: <a href="https://anchordigital.com.au/articles/read-between-the-lines-why-legibility-and-readability-is-essential-for-ux">Anchor</a>) (<a href="https://files.smashing.media/articles/data-backed-truths-user-experience-roi/5-difference-readability.png">Large preview</a>)<br />
    </figcaption></figure>
<h2 id="8-your-users-only-read-20-of-your-content">8. Your Users Only Read 20% of Your Content</h2>
<p>This truth meshes well with the previous one. Users do not read your website; <a href="https://www.nngroup.com/articles/how-users-read-on-the-web/">they scan it</a>. On a typical web page, users read only about <strong>20% to 28% of the text</strong>.</p>
<p>Because modern users scan in an <strong>F-pattern</strong> or <strong>Spotted pattern</strong>, designing for reading is a tactical error. We must design for scanning.</p>
<p>This requires the following:</p>
<ul>
<li>Bold headers that narrate the value proposition.</li>
<li>Bullet points for key benefits.</li>
<li>White space to connect users to key information (discussed in the previous truth).</li>
<li>High-contrast call-to-action (CTA) buttons. If your core message is buried in a paragraph, it is invisible to nearly 80% of your audience.</li>
</ul>
<h2 id="9-why-user-testing-with-5-people-is-the-magic-number">9. Why User Testing With 5 People Is the Magic Number</h2>
<p>I have heard of companies that waste six-figure budgets on massive user studies with 100 people, only to get buried in noise. The reality is that testing with just <strong>5 users</strong> typically uncovers <strong>85% of usability problems</strong>.</p>
<p>This is a mathematical sweet spot. After the fifth user, you reach the point of diminishing returns &mdash; you spend more money to find fewer new bugs. The competitive advantage belongs to small and frequent user testing activities. Test with 5 people, iterate, and test with 5 more. It is the <a href="https://www.nngroup.com/articles/why-you-only-need-to-test-with-5-users/">most cost-effective way</a> to build a bulletproof product.</p>
<p>Personally, I have followed this guideline many times during user testing activities, and I can confidently say that testing with 5 people does deliver the majority of issues in your design.</p>
<h2 id="10-the-financial-roi-of-9-900">10. The Financial ROI of 9,900%</h2>
<p>Last, but definitely not least, the most staggering statistic in our industry remains consistent. On average, every <strong>$1 invested in UX returns $100</strong>. This 9,900% ROI isn’t magic, but the sum of increased conversion and reduced support.</p>
<p>A fully optimised UX design can <a href="https://www.forrester.com/report/The-Six-Steps-For-Justifying-Better-UX/RES117708">improve conversion rates by up to <strong>400%</strong></a>. Furthermore, intuitive design significantly lowers customer support requirements. When a product is self-explanatory, you don’t need a massive call centre to explain how to use it.</p>
<h2 id="the-depth-of-ux-investment">The Depth of UX Investment</h2>
<p>Beyond these individual statistics, we must address the cumulative effect of a mature UX practice. In my years of practising, the most successful firms are those that treat UX as a continuous improvement loop rather than a one-off project. <a href="https://www.mckinsey.com/business-functions/mckinsey-design/our-insights/the-business-value-of-design">The data shows</a> that companies with high design maturity see <strong>32% higher revenue growth</strong> and <strong>56% higher total returns to shareholders</strong> compared to their less design-focused peers.</p>
<p>This discrepancy exists because mature UX organisations move beyond “user delight” and into “user efficiency.” When you shave 30 seconds off a workflow for a team of 1,000 employees, you aren’t just making them happier; you are reclaiming hundreds of thousands of dollars in annual productivity. This internal ROI is often overlooked, but it is just as vital as consumer-facing conversion rates.</p>
<p>Furthermore, the “experience gap” is real. <a href="https://www.bain.com/insights/keeping-up-with-your-customers">80% of companies</a> believe they deliver a “superior experience,” but only 8% of customers agree. This massive disconnect represents a significant market opportunity for those willing to look at the hard data. By bridging this gap through continuous user testing and performance optimisation, you aren’t just improving a product but capturing market share that your competitors are leaving on the table.</p>
<div class="partners__lead-place"></div>
<h2 id="the-impact-of-ai">The Impact of AI</h2>
<p>Today, we cannot talk about UX without talking about AI. However, AI hasn’t replaced these 10 facts, but <a href="https://business.adobe.com/au/resources/sdk/the-state-of-customer-experience-in-an-ai-driven-world-b2c.html">it has accelerated the solution on some of these</a>.</p>
<ul>
<li><strong>Agentic UX</strong><br />
<a href="https://www.databricks.com/resources/ebook/state-of-ai-agents">60% of designers are now building “AI agents”</a> that take actions on behalf of the user, drastically reducing the impact of <strong>Hick’s Law</strong> by narrowing down choices before the user even sees them.</li>
<li><strong>Real-Time Personalisation</strong><br />
32% of teams use AI to personalise interfaces in real-time, meaning the <strong>F-Pattern scanning</strong> habits are catered to by moving the most relevant content to exactly where that specific user’s eyes are likely to land.</li>
<li><strong>Automated ROI</strong><br />
93% of designers are using generative AI tools to prototype faster, which brings the <strong>1:100 Cost Ratio</strong> even lower by allowing us to find and fix errors before a single line of production code is written.</li>
</ul>
<p>AI has turned UX from a static map into a living, breathing guide for users. But the fundamental rules of human psychology, such as our 50ms judgments and our need for white space, remain unchanged.</p>
<h2 id="conclusion">Conclusion</h2>
<p>In summary, here is a list of the key truths to remember:</p>
<ol>
<li>Fixing issues in the design phase is 100 times cheaper.</li>
<li>Performance impacts user experience.</li>
<li>Your site has 50 milliseconds to impress your customers.</li>
<li>Hick’s Law: The cost of overwhelm.</li>
<li>White space improves comprehension.</li>
<li>The power of “fake” progress.</li>
<li>Make your content readable.</li>
<li>Your users only read 20% of your content.</li>
<li>Why user testing with 5 people is the magic number.</li>
<li>The financial ROI of 9,900%.</li>
</ol>
<p>As we move deeper into the late 2020s, the line between “design” and “business strategy” has vanished. The data is in, and <a href="https://www.mckinsey.com/business-functions/mckinsey-design/our-insights/the-business-value-of-design">companies that lead in design outperform their competitors</a> by <strong>1.7x in revenue growth</strong>.</p>
<blockquote class="pull-quote">
<p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aUX%20design%20is%20no%20longer%20a%20team%20you%20hire%20to%20%e2%80%9cmake%20things%20look%20nice.%e2%80%9d%20It%20is%20the%20research-driven,%20data-backed%20discipline%20that%20ensures%20your%20digital%20product%20isn%e2%80%99t%20just%20a%20cost%20centre,%20but%20a%20revenue-generating%20machine.%0a&amp;url=https://smashingmagazine.com%2f2026%2f05%2fdata-backed-truths-user-experience-roi%2f"></p>
<p>UX design is no longer a team you hire to “make things look nice.” It is the research-driven, data-backed discipline that ensures your digital product isn’t just a cost centre, but a revenue-generating machine.</p>
<p>    </a>
  </p>
<div class="pull-quote__quotation">
<div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
</p></div>
</blockquote>
<p>In fact, this has always been the case, but I hope that in presenting these cold, hard truths, it now becomes a reality for your business.</p>
<p>As I have found over the years, implementing factual design improvements does make a difference that intuition alone can’t replicate. We are past the era of subjective opinions. The data is clear, the psychology is proven, and the ROI is undeniable. The only question left is whether you’re ready to let the facts lead your design, or if you’ll let your competitors do it first.</p>
<h3 id="further-reading-on-smashingmag">Further Reading On SmashingMag</h3>
<ul>
<li>“<a href="https://www.smashingmagazine.com/2025/02/human-element-using-research-psychology-elevate-data-storytelling/">The Human Element: Using Research And Psychology To Elevate Data Storytelling</a>”, Victor Yocco &amp; Angelica Lo Duca</li>
<li>“<a href="https://www.smashingmagazine.com/2025/10/ai-ux-achieve-more-with-less/">AI In UX: Achieve More With Less</a>”, Paul Boag</li>
<li>“<a href="https://www.smashingmagazine.com/2025/11/practical-guide-ux-strategy/">Six Key Components of UX Strategy</a>”, Vitaly Friedman</li>
<li>“<a href="https://www.smashingmagazine.com/2024/07/designing-sustainable-e-commerce-experiences/">When Friction Is A Good Thing: Designing Sustainable E-Commerce Experiences</a>”, Anna Rátkai</li>
</ul>
<div class="signature">
  <img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Smashing Editorial" width="35" height="46" loading="lazy" class="lazyload" data-src="https://www.smashingmagazine.com/images/logo/logo--red.png"><br />
  <span>(yk)</span>
</div>
</article>
]]></content:encoded>
					
					<wfw:commentRss>http://computercoursesonline.com/index.php/2026/05/15/ten-data-backed-truths-of-user-experience-roi/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Practical Interface Patterns For AI Transparency (Part 2)</title>
		<link>http://computercoursesonline.com/index.php/2026/05/13/practical-interface-patterns-for-ai-transparency-part-2/</link>
					<comments>http://computercoursesonline.com/index.php/2026/05/13/practical-interface-patterns-for-ai-transparency-part-2/#respond</comments>
		
		<dc:creator><![CDATA[.]]></dc:creator>
		<pubDate>Wed, 13 May 2026 13:00:00 +0000</pubDate>
				<category><![CDATA[Ux]]></category>
		<guid isPermaLink="false">http://computercoursesonline.com/?p=1221</guid>

					<description><![CDATA[Practical Interface Patterns For AI Transparency (Part 2) Practical Interface Patterns For AI Transparency (Part 2) Victor Yocco 2026-05-13T13:00:00+00:00 2026-05-14T20:42:34+00:00 In the first part of this series, we talked about the Decision Node Audit. We mapped out the internal workings of our AI system to pinpoint the exact moments it makes decisions based on probabilities....]]></description>
										<content:encoded><![CDATA[<p>              <title>Practical Interface Patterns For AI Transparency (Part 2)</title></p>
<article>
<header>
<h1>Practical Interface Patterns For AI Transparency (Part 2)</h1>
<address>Victor Yocco</address>
<p>                  2026-05-13T13:00:00+00:00<br />
                  2026-05-14T20:42:34+00:00<br />
                </header>
<p>In the <a href="https://www.smashingmagazine.com/2026/04/identifying-necessary-transparency-moments-agentic-ai-part1/">first part of this series</a>, we talked about the <strong>Decision Node Audit</strong>. We mapped out the internal workings of our AI system to pinpoint the exact moments it makes decisions based on probabilities. This told us when the system needs to be transparent with the user. Now, the big question is <em>how</em> to share that information.</p>
<p>You’ve got your <strong>Transparency Matrix</strong> ready. You know which behind-the-scenes API calls need a visible status update. Your engineers are on board with the technical aspects. The next step is designing the visual container for those updates.</p>
<p>We face a legacy problem. For thirty years, interface designers have relied on a single pattern to handle latency: <strong>the spinner</strong>. The spinning wheel, the throbber, the progress bar. These patterns communicate a specific technical reality. They tell the user that the system is retrieving data. The delay is caused by bandwidth or file size.</p>
<p>AI agents introduce a new kind of wait time. When an agent pauses for twenty seconds, it’s not just downloading something; it’s <em>thinking</em>. It’s figuring out the best steps, weighing options, and creating the content you asked for.</p>
<p>If we use a basic spinning icon for this “thinking time,” users get confused and anxious. They watch a looping animation and can’t tell if the system is stalled or crashed. They don’t know if the agent is handling a very complicated task or if it has simply failed.</p>
<p>To build user trust, we need to turn this waiting time into a <strong>moment for reassurance</strong>. Instead of a passive <em>“something is happening,”</em> we need to communicate an active, <em>“Here is exactly how I am working to solve your problem.”</em></p>
<h2 id="writing-clear-status-updates">Writing Clear Status Updates</h2>
<p>We often think of transparency as a visual design problem, but it’s really about the <strong>words</strong> we use. Simple, clear explanations (the microcopy) are what build trust and separate a reliable AI from one that feels broken.</p>
<p>We need to retire generic placeholders like <em>Loading</em> or <em>Working</em>. These words are remnants of the era of static software. Instead, we must construct our status updates using a specific formula that mirrors the agency of the system. Let’s stop using vague words like “Loading” or “Working.” Those terms belong to the past, when software was simple and static. Instead, we should create status updates that clearly tell the user what the system is <em>actually doing</em> and make the system’s actions transparent.</p>
<p>Imagine, for the sake of an example, you are deploying agentic AI that will help team members organize their calendars and plan recurring meetings on their behalf, once prompted.</p>
<p>When an AI displays a message like “Checking availability” for an unknown amount of time, users often feel lost because it doesn’t offer enough information. While they understand the AI is looking at a calendar, they don’t know <em>whose</em> calendar it is, what other steps are involved (before or after), or if the AI even remembered the people and purpose of the scheduling request. Waiting for the final result can be a tense, uneasy experience, like anticipating a gift that you suspect might be a prank.</p>
<p>Perplexity AI provides a strong example of doing status updates right. Figure 1 below shows that when users ask a question, the interface displays exactly what it is doing in real time. You see a list of activities updating as they are accomplished. Users do not need to guess what is happening as the AI works.</p>
<figure class="
  
    break-out article__image
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/1-perplexity-ai.png"></p>
<p>    <img loading="lazy" width="800" height="354" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Perplexity AI example" class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/1-perplexity-ai.png"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Figure 1: Perplexity AI is a good example of showing users the AI’s status, including what terms it is using to search the web. (Image source: <a href="https://www.saasui.design/application/perplexity-ai">SaaSUI</a>) (<a href="https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/1-perplexity-ai.png">Large preview</a>)<br />
    </figcaption></figure>
<div data-audience="non-subscriber" data-remove="true" class="feature-panel-container">
<aside class="feature-panel">
<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>
<p><a data-instant href="smashing-workshops" class="btn btn--green btn--large">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"></p>
<div class="feature-panel-image">
<img loading="lazy" class="feature-panel-image-img lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Feature Panel" width="257" height="355" data-src="/images/smashing-cat/cat-scubadiving-panel.svg"></p>
</div>
<p></a>
</div>
</aside>
</div>
<h2 id="the-agentic-update-formula">The Agentic Update Formula</h2>
<p>To give people useful status updates, we need to connect what the system is <em>doing</em> with <em>why</em> it’s doing it. Keeping with our scheduling agent example, the system should break down that waiting period into at least four clear, separate steps.</p>
<ul>
<li>First, the interface displays <em>Checking your calendar to find open times for a recurring Thursday call with [Name(s)]</em>.</li>
<li>Then, it updates to: <em>Cross-checking availability with [Name(s)] calendars</em>.</li>
<li>Next, it might display: <em>Syncing [Name(s)] schedules to secure your meeting time on [Data and Time]</em>.</li>
<li>Finally, at the conclusion, the agent might state they have successfully completed the task and request the user check their email to confirm the invite that’s been shared with the group having the recurring meeting.</li>
</ul>
<p>This communication process grounds the technical process in the user’s actual life.</p>
<p>Making an AI’s progress easy to understand boils down to a three-part structure: a strong <strong>Action Word</strong>, what the AI is working on (the <strong>Specific Item</strong>), and any <strong>Limits</strong> or rules it has to follow.</p>
<p>Think about an AI helping you book a trip. A weak, unhelpful update would just be: <em>Searching for flights&hellip;</em></p>
<p>A much better update uses the formula:</p>
<ul>
<li><strong>Action Word:</strong> <em>Scanning</em></li>
<li><strong>Specific Item:</strong> <em>the prices on Lufthansa and United</em></li>
<li><strong>Limits/Rules:</strong> <em>to find anything under $600.</em></li>
</ul>
<p>This approach clearly shows the user that the AI understood their request and is working within the set boundaries.</p>
<figure class="
  
    break-out article__image
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/2-agentic-ai-status-update.png"></p>
<p>    <img loading="lazy" width="800" height="437" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="The Anatomy of an Agentic AI Status Update" class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/2-agentic-ai-status-update.png"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Figure 2: The Anatomy of an Agentic AI Status Update. (<a href="https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/2-agentic-ai-status-update.png">Large preview</a>)<br />
    </figcaption></figure>
<h2 id="matching-tone-to-the-risk-matrix">Matching Tone to the Risk Matrix</h2>
<p>Should an AI sound like a person or act like a robot? The right answer depends on the task’s importance, which we can figure out using the <strong>Impact/Risk Matrix</strong> from our <strong>Decision Node Audit</strong>.</p>
<p>For simple, low-risk tasks, a friendly, conversational tone works best. For example, a scheduling assistant can say it’s checking your calendar for the best time. This creates a comfortable, easygoing experience for the user.</p>
<p>However, high-stakes tasks demand clear, mechanical accuracy. If the AI is managing a big financial transfer or a complicated database migration, users don’t want a playful interface; they want precision. A screen that says <em>“I am thinking hard about your money”</em> would possibly cause panic. Instead, the interface should use straightforward language like <em>“Verifying account routing numbers.”</em> By adjusting the AI’s “personality” to match the level of risk, we give users exactly the experience they need in that moment. While the Impact/Risk Matrix provides a necessary starting point, the ultimate determinant of the appropriate AI voice and tone is rigorous <strong>user research</strong>.</p>
<p>It’s impossible for any set of rules to predict the exact words or tone that will build trust or cause stress for every group of users or in every situation. That’s why hands-on research is essential. You need to:</p>
<ul>
<li><strong><a href="https://medium.com/@alienoghli/the-essential-guide-to-a-b-testing-a84b853c16e0">Run A/B tests</a></strong> on different ways the AI “talks” to people.</li>
<li><strong><a href="https://uxplanet.org/usability-testing-the-complete-guide-e162898f68db">Conduct usability studies</a></strong> to see how users react emotionally to the system’s messages.</li>
<li><strong><a href="https://ixdf.org/literature/article/how-to-conduct-user-interviews">Perform interviews</a></strong> to truly understand what users expect from an AI in terms of openness.</li>
</ul>
<p>This kind of research ensures the AI’s “personality” is comfortable and appropriate for the actual people who will be using the system in their specific context.</p>
<p>We’ve now covered the <em>“what”</em> &mdash; the critical microcopy, the clear action words, and the necessary limits that make an AI status update honest and informative. But words alone aren’t enough. A perfect sentence hidden in a poor interface is still a failure of transparency.</p>
<p>The next challenge is the <em>“how”</em> &mdash; designing the physical delivery system for that message. You can think of the status update formula as the engine, and the interface pattern as the car. A powerful engine needs a reliable, well-designed chassis to carry it down the road.</p>
<h2 id="interface-patterns-a-library-for-agents">Interface Patterns: A Library For Agents</h2>
<p>Once we have the right words, we need <strong>the right container</strong>. The key is matching the message’s weight to the pattern’s visibility. A tiny background task (like an agent gently tidying up your files) doesn’t need a loud, flashing banner. That message is best delivered subtly. A high-stakes, multi-step process (like moving money) potentially demands a more robust container that forces the user to pay attention.</p>
<p>By creating a library of these patterns, we ensure the right level of transparency is delivered at the right moment, turning the anxiety of waiting into a moment of informed confidence. Let’s review a few common, critical patterns.</p>
<h3 id="the-living-breadcrumb-ai-working-in-the-background">The Living Breadcrumb: AI Working in the Background</h3>
<p>For those low-importance tasks that an AI is handling quietly in the background, we need a way to show users it’s working without constantly distracting them. We can call this the living breadcrumb.</p>
<p>Think of an email app where an AI is drafting a reply for you. You don’t want a disruptive pop-up message. Instead, a small, subtle status indicator pulses within the application’s border or menu area.</p>
<p>The solution needs to go beyond a static icon. The living breadcrumb smoothly transitions between different text updates. It might pulse from <em>Reading email</em> to <em>Drafting reply</em> to <em>Checking tone</em>. It’s there if you want to check on its progress, offering a quiet assurance that the task is underway, but it won’t demand your immediate attention.</p>
<figure class="
  
    break-out article__image
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/3-living-breadcrumb.jpg"></p>
<p>    <img loading="lazy" width="800" height="437" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="" class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/3-living-breadcrumb.jpg"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Figure 3: A subtle, living breadcrumb provides assurance in the background for low-priority tasks, showing the AI is working without demanding constant attention. (<a href="https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/3-living-breadcrumb.jpg">Large preview</a>)<br />
    </figcaption></figure>
<h3 id="dynamic-checklists">Dynamic Checklists</h3>
<p>When dealing with critical, high-stakes tasks &mdash; like processing a complex financial transaction or migrating a large, intricate dataset &mdash; we recommend using a <strong>Dynamic Checklist</strong> (illustrated in Figure 3).</p>
<p>This pattern serves as a powerful anchor for the user, providing clarity and confidence about the <strong>process’s progress</strong>. Instead of a simple bar, the Dynamic Checklist lays out every planned step the AI agent will take. It clearly highlights the step that is currently in progress, marks preceding steps as complete, and lists future actions as pending.</p>
<p>For example:</p>
<ul>
<li><strong>Step 1</strong>: Verify Account Balance <strong>[Complete]</strong>.</li>
<li><strong>Step 2</strong>: Convert Currency <strong>[Processing]</strong>.</li>
<li><strong>Step 3</strong>: Transfer Funds <strong>[Pending]</strong>.</li>
</ul>
<p>The Dynamic Checklist offers a significant advantage over a traditional progress bar because it expertly manages unpredictable time. If the currency conversion (Step 2) unexpectedly requires an extra ten seconds, the user won’t feel sudden anxiety or panic. They have full visibility into the system’s exact location, understanding that the delay is occurring during the <em>Converting Currency</em> step. Because they recognize this is a potentially complex action, they are naturally more patient and trusting of the system’s ongoing work.</p>
<figure class="
  
    break-out article__image
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/4-devin-ai.png"></p>
<p>    <img loading="lazy" width="800" height="652" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Devin.ai example" class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/4-devin-ai.png"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Figure 4: Devin (AI) shows users a dynamic checklist of the tasks it’s accomplished, as well as what remains to be done. (Image source: <a href="https://docs.devin.ai/get-started/devin-intro">Devin</a>) (<a href="https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/4-devin-ai.png">Large preview</a>)<br />
    </figcaption></figure>
<p>The pattern itself is a compelling UI idea, but designers must remember that its implementation transforms the task into a full-stack design requirement. Unlike a simple loading flag, the dynamic checklist requires a robust front-end state management system to listen for step-completion events, which are typically triggered by a back-end webhook structure. This ensures the interface is always reflecting the agent’s real-time position in the workflow.</p>
<figure class="
  
    break-out article__image
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/5-dynamic-checklist.jpg"></p>
<p>    <img loading="lazy" width="800" height="437" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="A dynamic checklist example" class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/5-dynamic-checklist.jpg"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Figure 5: A dynamic checklist is excellent  to show transparency in what the AI is doing. It clearly shows the user what steps the AI has already finished, what it’s currently working on, and what it plans to do next. (<a href="https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/5-dynamic-checklist.jpg">Large preview</a>)<br />
    </figcaption></figure>
<div class="partners__lead-place"></div>
<h3 id="the-thinking-toggle">The Thinking Toggle</h3>
<p>Some users with higher information needs or higher needs for transparency may not trust a simple summary; they want to see the system’s raw processing. For this audience, we’ve designed the <strong>Thinking Toggle</strong>.</p>
<p>This is a simple progressive disclosure UI control, like a chevron or a “View Logs” button, that lets the user expand a friendly status update into a raw terminal view. It displays the sanitized logic logs of the AI agent, such as:</p>
<ul>
<li><em>Querying API endpoint /v2/search</em>;</li>
<li><em>Response received: 200 OK</em>;</li>
<li><em>Filtering results by relevance score &gt; 0.8</em>.</li>
</ul>
<p>Many people will never open this view. However, for the user who needs deep transparency, the very presence of this toggle is a signal of trust. It reassures them that the system is not concealing anything.</p>
<p>Keep in mind, with this deep transparency comes a critical technical risk. Even for your most expert audience, you must sanitize and abstract these raw logs before display. This step is non-negotiable to prevent accidentally exposing proprietary business logic, internal data structure names, or security tokens that could be exploited. This process ensures trust is built through honesty, not security vulnerability.</p>
<h3 id="designing-for-partial-success">Designing For Partial Success</h3>
<p>In standard software, things are often black or white. A file either saves or it doesn’t. But with AI agents, things are often grey. An agent might plan most of a trip perfectly, yet struggle to book that one special restaurant.</p>
<p>We need to design for when the AI is mostly successful.</p>
<p>Standard binary (yes or no) error messages are trust-killers because they suggest the AI failed completely. If an agent does 90% of a task and only misses the last 10%, a big red “Request Failed” banner is misleading.</p>
<p>Instead, the interface should clearly show what worked and what didn’t:</p>
<ul>
<li><em>Flight booked: UA 492</em> [Success].</li>
<li><em>Hotel reserved: Marriott Downtown</em> [Success].</li>
<li><em>Car rental: Hertz</em> [Failed &mdash; No inventory].</li>
</ul>
<p>This way, you only have to step in and fix the parts that failed, like booking the car yourself, while keeping all the good work the agent already did.</p>
<figure class="
  
    break-out article__image
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/6-designing-partial-success.jpg"></p>
<p>    <img loading="lazy" width="800" height="437" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="" class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/6-designing-partial-success.jpg"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Figure 6: We need to be more granular in defining how much of a task has been completed when designing content for agentic AI experiences. (<a href="https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/6-designing-partial-success.jpg">Large preview</a>)<br />
    </figcaption></figure>
<h3 id="disentangling-the-tool">Disentangling The Tool</h3>
<p>When an AI system doesn’t perform as expected, it’s crucial to be absolutely clear about the true reason for the failure. Users often mistakenly blame the AI itself for problems that are actually caused by an external service or tool the AI relies on.</p>
<p>For example, imagine a virtual assistant tries to look at your schedule, but the connection to the Google Calendar API is down. The error message shouldn’t make the assistant look like it failed to do its job.</p>
<ul>
<li><strong>Less helpful:</strong> <em>“I could not check your calendar.”</em> (This suggests the assistant is incompetent.)</li>
<li><strong>More helpful and honest:</strong> <em>“The Google Calendar connection is not responding. I will automatically try again in 30 seconds.”</em></li>
</ul>
<p>The first message is frustrating because it makes the AI look like it failed. The second message, though, is much clearer. It explains that the AI is capable, but a broken tool outside its control is causing the issue. This distinction is really important because it keeps the user from losing faith in the AI, even when things go wrong.</p>
<h3 id="the-audit-trail-trust-after-the-fact">The Audit Trail: Trust After The Fact</h3>
<p>Real-time transparency is fleeting. If a user walks away from their desk while the agent is working, they miss the Dynamic Checklist. They return to a finished screen. If the result looks odd, they have no way to verify the work. This is why every agentic workflow requires a persistent Audit Trail.</p>
<p>We need to design a <em>Show Work</em> interaction. On the final result screen, provide a link or history log that allows the user to replay the decision logic.</p>
<ul>
<li><em>See how this price was calculated</em>;</li>
<li><em>View search sources</em>.</li>
</ul>
<p>This receipt is the ultimate safety net. It allows the user to spot-check the validity of the output. Even if they never click it, the mere presence of the receipt tells the user that the system stands behind its work.</p>
<figure class="
  
    break-out article__image
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/7-audit-trail-design-pattern.jpg"></p>
<p>    <img loading="lazy" width="800" height="437" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="The Audit trail design pattern" class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/7-audit-trail-design-pattern.jpg"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Figure 7: The Audit trail design pattern provides the needed transparency to show users how an outcome was achieved. (<a href="https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/7-audit-trail-design-pattern.jpg">Large preview</a>)<br />
    </figcaption></figure>
<p>ChatGPT provides an example of how now providing users with an easy way to audit the information AI uses can cause confusion or user frustration. ChatGPT remembers you in the way a file cabinet quietly fills up with notes about everything you’ve ever said, then uses those notes to shape every future conversation without telling you. This is called memory. According to developer <a href="https://simonwillison.net/2025/May/21/chatgpt-new-memory/">Simon Willison</a>, in April 2025, that memory was getting fed into every new conversation automatically.</p>
<p>The problem with ChatGPT’s memory at that time was that you couldn’t see what it remembers, or when it’s using that information, or how it’s influencing what you get back. There’s no log. No timeline. No plain-language list of <em>“here’s what the AI has decided about you.”</em></p>
<p>The only way to glimpse the dossier was to know a specific prompt trick &mdash; essentially asking the model to quote its own hidden instructions back to you. Most users will never discover this. They’ll just notice, as Willison did, that ChatGPT placed a “Half Moon Bay” sign in the background of an image they generated (Figure 8) because it had silently cross-referenced their location from previous conversations. This is the absence of transparency (the ability to audit the memory with ease) disguised as personalization. You need to provide users with both.</p>
<figure class="
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/8-chatgpt-output.png"></p>
<p>    <img loading="lazy" width="800" height="636" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="" class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/8-chatgpt-output.png"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Figure 8: Willison asked ChatGPT to put the dog in a pelican costume, but he did not ask for the “Half Moon Bay” sign. Proving that ChatGPT was tracking information on users without clearly allowing users to access what information was being stored. (Image source: <a href="https://simonwillison.net/2025/May/21/chatgpt-new-memory/">Simon Willison’s Weblog</a>) (<a href="https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/8-chatgpt-output.png">Large preview</a>)<br />
    </figcaption></figure>
<p><strong>The Audit Trail pattern</strong> is the ultimate solution to the memory audit problem demonstrated by ChatGPT. It is one of four core design solutions that, together, create a library of options for improving AI transparency.</p>
<p>Here is a quick summary of the key interface patterns discussed in this article, which are designed to transform AI waiting time from a moment of anxiety into an opportunity to build user confidence:</p>
<table class="tablesaw break-out">
<thead>
<tr>
<th>Pattern</th>
<th>Best Use Case</th>
<th>The User’s Anxiety</th>
<th>The Trust Signal</th>
</tr>
</thead>
<tbody>
<tr>
<td>The Living Breadcrumb</td>
<td>Low-stakes, background tasks (e.g., drafting emails, sorting files).</td>
<td>Did the system stall or freeze?</td>
<td>I am active, but I won&#8217;t disturb you.</td>
</tr>
<tr>
<td>The Dynamic Checklist</td>
<td>High-stakes workflows with variable time (e.g., financial transfers, booking travel).</td>
<td>Is it stuck? What step is taking so long?</td>
<td>I have a plan, and I am currently executing Step 2.</td>
</tr>
<tr>
<td>The Thinking Toggle</td>
<td>Expert tools or complex data analysis (e.g., code generation, market research).</td>
<td>Is this hallucinating or using real data?</td>
<td>I have nothing to hide; here are my raw logs.</td>
</tr>
<tr>
<td>The Audit Trail</td>
<td>Post-task review for any outcome (e.g., final reports, completed bookings).</td>
<td>How do I know this result is accurate?</td>
<td>Here is the receipt of my work for you to verify.</td>
</tr>
</tbody>
</table>
<p><strong><em>Table 1:</em></strong> <em>Four design patterns enhancing transparency.</em></p>
<div class="partners__lead-place"></div>
<h3 id="the-reality-of-attention-when-users-ignore-the-interface">The Reality of Attention: When Users Ignore the Interface</h3>
<p>Even the most perfectly designed checklist or the clearest status message may still go ignored by many users.</p>
<p>When people are working on tons of tasks, especially professionals, they often tune out the interface. Think of an insurance underwriter creating fifty quotes a day &mdash; they’re not watching a progress bar. They click “Generate,” switch tabs to answer an email, and only come back when the task is done.</p>
<p>My research with these experts shows they judge the system based entirely on the final result. They have a good idea of what the answer <em>should</em> be. If a salesperson expects a premium between $500 and $600, and the system returns $550, they accept it right away, and trust is established.</p>
<p>These experts tell me that over time, as the AI continues to provide what they perceive as accurate outputs, usage will increase, and they will save time versus manual quoting. Essentially, the system is now viewed as an efficient accelerator of an otherwise monotonous yet mandatory task.</p>
<p>But if the system returns $900, the user stops. The output is not aligned with expectations, and that’s a problem they must solve. At that moment, the user switched tabs; they missed the little explanation about the high-risk surcharge that popped up in real-time. They didn’t see the specific rule that was triggered. If that explanation disappeared with the progress bar, the user has no way to understand the difference between expectation and outcome. They certainly won’t run the query again just to watch the animation play out.</p>
<p>They will run the quote by hand, effectively treating the AI’s output as useless and initiating a complete rework of their effort. This manual recalculation feels like a waste of time, which further erodes their confidence in the tool. Once this happens, the user is not interested in <em>why</em> the system chose $900; they are focused purely on validating or invalidating the system’s accuracy against their own, trusted methods. This lack of transparency, especially in moments of disagreement, is a primary barrier to adoption and consistent use. The audit trail allows us to provide persistent transparency and is the mechanism that prevents the AI from creating more work.</p>
<p>We need to keep this in mind, particularly when delivering AI-powered tools meant for enterprise use. If the tool delivers a result that misaligns with expectations, you rarely get a second chance. If the user must spend ten minutes investigating why the AI provided that number, they will stop using the AI.</p>
<h3 id="predictability-reliability-and-understanding-are-the-product">Predictability, Reliability, and Understanding Are The Product</h3>
<p>We are not building magic tricks. A magic trick relies on misdirection and hidden mechanics. We are building colleagues.</p>
<p>Think of a good colleague, they keep you in the loop. They let you know what they’re up to, what’s taking their time, and when they hit a snag. That honesty is what helps you trust them.</p>
<p>We can apply this to AI. By using the practical patterns we discussed: giving specific updates, showing a dynamic checklist, acknowledging partial wins, and keeping an audit trail, we stop seeing AI as a mysterious black box that just needs a nice coat of paint. Instead, we start treating it like a team member we can rely on and manage, which builds trust and a clear understanding.</p>
<p>The main reason for using these interface ideas is to achieve real transparency, going beyond explaining the AI’s complicated inner workings. Here, transparency means showing the user the <strong>AI’s process and performance</strong> right when they need to see it. This involves plainly communicating the <strong>AI’s current status</strong>, its known <strong>limits</strong>, and an easy-to-follow <strong>history of its decisions</strong>. This level of openness changes the interaction from just accepting what the AI does to actively working with it. It lets users understand why they got a certain result and how they can best step in or guide the system for the best possible outcome.</p>
<h3 id="references">References</h3>
<ul>
<li>“<a href="https://medium.com/@alienoghli/the-essential-guide-to-a-b-testing-a84b853c16e0">The Essential Guide to A/B Testing</a>”, Ali E. Noghli</li>
<li>“<a href="https://uxplanet.org/usability-testing-the-complete-guide-e162898f68db">Usability testing: the complete guide</a>”, Andrew Tipp</li>
<li>“<a href="https://ixdf.org/literature/article/how-to-conduct-user-interviews">How to Conduct User Interviews</a>”, IxDF</li>
</ul>
<div class="signature">
  <img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Smashing Editorial" width="35" height="46" loading="lazy" class="lazyload" data-src="https://www.smashingmagazine.com/images/logo/logo--red.png"><br />
  <span>(yk)</span>
</div>
</article>
]]></content:encoded>
					
					<wfw:commentRss>http://computercoursesonline.com/index.php/2026/05/13/practical-interface-patterns-for-ai-transparency-part-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Designing Stable Interfaces For Streaming Content</title>
		<link>http://computercoursesonline.com/index.php/2026/04/30/designing-stable-interfaces-for-streaming-content/</link>
					<comments>http://computercoursesonline.com/index.php/2026/04/30/designing-stable-interfaces-for-streaming-content/#respond</comments>
		
		<dc:creator><![CDATA[.]]></dc:creator>
		<pubDate>Thu, 30 Apr 2026 08:00:00 +0000</pubDate>
				<category><![CDATA[Ux]]></category>
		<guid isPermaLink="false">http://computercoursesonline.com/?p=1210</guid>

					<description><![CDATA[Designing Stable Interfaces For Streaming Content Designing Stable Interfaces For Streaming Content Joas Pambou 2026-04-30T08:00:00+00:00 2026-04-30T20:36:58+00:00 More interfaces now render while the response is still being generated. The UI begins in one state, then updates as more data comes in. You see this in chat apps, logs, transcription tools, and other real-time systems. The tricky...]]></description>
										<content:encoded><![CDATA[<p>              <title>Designing Stable Interfaces For Streaming Content</title></p>
<article>
<header>
<h1>Designing Stable Interfaces For Streaming Content</h1>
<address>Joas Pambou</address>
<p>                  2026-04-30T08:00:00+00:00<br />
                  2026-04-30T20:36:58+00:00<br />
                </header>
<p>More interfaces now render while the response is still being generated. The UI begins in one state, then updates as more data comes in. You see this in chat apps, logs, transcription tools, and other real-time systems.</p>
<p>The tricky part is that the <strong>interface is not in a fixed state</strong>; it keeps changing as new content comes in. It grows where lines become longer and new blocks appear. Something that was just below the screen can suddenly move, and the user’s scroll position becomes harder to manage. Parts of the UI might even be incomplete while the user is already interacting with it.</p>
<p>In this article, we’ll take a simple interface and make it handle this properly. We’ll look at how to keep things stable, manage scrolling, and render partial content without breaking the reading experience.</p>
<h2 id="what-does-a-streaming-ui-actually-look-like">What Does A Streaming UI Actually Look Like?</h2>
<p>I’ve built three demos that stream content in different ways: a chat bubble, a log feed, and a transcription view. They look different on the surface, but they all run into the same three problems.</p>
<p>The first is <strong>scroll</strong>. When content is streaming in, most interfaces keep the viewport pinned to the bottom. That works if you are just watching, but the moment you scroll up to read something, the page snaps back down. You did not ask for that. The interface decided for you, and now you’re fighting it instead of reading.</p>
<p>The second is <strong>layout shift</strong>. Streaming content means containers are constantly growing, and as they do, everything below shifts downward. A button you were about to click is no longer where it was. A line you were reading has moved. The page is not broken; it is just that nothing stays still long enough to interact with comfortably.</p>
<p>The third is <strong>render frequency</strong>. Browsers paint the screen around 60 times per second, but streams can arrive much faster than that. This means the DOM, which is the browser’s internal representation of everything on the page, ends up being updated for frames the user will never actually see. Each update still costs something, and that cost adds up quietly until performance starts to slip.</p>
<p>As you go through each demo, pay attention to where things start feeling off. That small moment of friction when the interface starts getting in your way. This is exactly what we are here to fix.</p>
<div data-audience="non-subscriber" data-remove="true" class="feature-panel-container">
<aside class="feature-panel">
<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>
<p><a data-instant href="smashing-workshops" class="btn btn--green btn--large">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"></p>
<div class="feature-panel-image">
<img loading="lazy" class="feature-panel-image-img lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Feature Panel" width="257" height="355" data-src="/images/smashing-cat/cat-scubadiving-panel.svg"></p>
</div>
<p></a>
</div>
</aside>
</div>
<h2 id="example-1-streaming-ai-chat-responses">Example 1: Streaming AI Chat Responses</h2>
<p>This is the most familiar case. You click <strong>Stream</strong>, and the message starts growing token by token, just like a typical AI chat interface.</p>
<figure class="
  
  
  "></p>
<p>    <a href="https://codesandbox.io/embed/swmjpl?view=preview"></p>
<p>    <img loading="lazy" width="800" height="566" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Streaming AI Chat Responses" class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/designing-stable-interfaces-streaming-content/1-streaming-ai-chat-responses.png"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Open in <a href="https://codesandbox.io/embed/swmjpl?view=preview">CodeSandbox</a>. (<a href="https://files.smashing.media/articles/designing-stable-interfaces-streaming-content/1-streaming-ai-chat-responses.png">Large preview</a>)<br />
    </figcaption></figure>
<p>Here’s what I want you to try:</p>
<ul>
<li>Click the <strong>Stream</strong> button.</li>
<li>Try scrolling upwards while the message is streaming.</li>
<li>Increase the speed (to something like 10ms).</li>
</ul>
<p>You will notice something subtle but important: the UI keeps trying to pull you back down. Basically, it is making a decision for you about where your attention should be.</p>
<p>That’s one example. Let’s look at another.</p>
<h2 id="example-2-live-processing-in-a-log-viewer">Example 2: Live Processing In A Log Viewer</h2>
<p>This example looks different on the surface, but the problem is actually very similar to the first example. Rather than a message that gets longer over time, new lines are appended continuously, like a terminal or a log stream.</p>
<p>The interesting part here is the tail toggle. It makes the trade-off between interaction and stable interfaces very clear:</p>
<figure class="
  
  
  "></p>
<p>    <a href="https://codesandbox.io/embed/cytscf?view=preview"></p>
<p>    <img loading="lazy" width="800" height="515" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Live Processing In A Log Viewer" class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/designing-stable-interfaces-streaming-content/2-live-processing-log-viewer.png"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Open in <a href="https://codesandbox.io/embed/cytscf?view=preview">CodeSandbox</a>. (<a href="https://files.smashing.media/articles/designing-stable-interfaces-streaming-content/2-live-processing-log-viewer.png">Large preview</a>)<br />
    </figcaption></figure>
<p>Again, here is what I want you to try:</p>
<ul>
<li>Click the <strong>Start</strong> button.</li>
<li>Allow the logs to stream past the container’s height.</li>
<li>Scroll up to the beginning.</li>
<li>Stop the stream and disable the “tail” option.</li>
</ul>
<p>Notice that, when tail is enabled, the UI follows the new content. But you’re unable to scroll up and stay in place. Instead, you need to stop the stream or enable “tail” to explore the content.</p>
<h2 id="example-3-dashboard-displaying-real-time-metrics">Example 3: Dashboard Displaying Real-Time Metrics</h2>
<p>In this case, the UI updates in place:</p>
<ul>
<li>Numbers change,</li>
<li>Charts shift,</li>
<li>Values refresh continuously.</li>
</ul>
<figure class="
  
  
  "></p>
<p>    <a href="https://codesandbox.io/embed/8rtsrm?view=preview"></p>
<p>    <img loading="lazy" width="800" height="402" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Dashboard Displaying Real-Time Metrics" class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/designing-stable-interfaces-streaming-content/3-dashboard-display-real-time-metrics.png"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Open in <a href="https://codesandbox.io/embed/8rtsrm?view=preview">CodeSandbox</a>. (<a href="https://files.smashing.media/articles/designing-stable-interfaces-streaming-content/3-dashboard-display-real-time-metrics.png">Large preview</a>)<br />
    </figcaption></figure>
<p>There is no scroll tension this time, but a different issue shows up. That’s what we’ll get into next.</p>
<h2 id="why-the-ui-feels-unstable-and-how-to-fix-it">Why The UI Feels Unstable And How To Fix It</h2>
<p>If you tried the chat demo and scrolled upward while the responses were coming in, you may have spotted the first issue right away: the UI keeps pulling you back down to the latest streamed content as it updates. This takes you out of context and never allows you the time to fully digest the content once it has passed.</p>
<p>We see that exact same issue in the second example, the log viewer. Without the tail toggle, the streamed content overrides your scroll position.</p>
<p>These aren’t bugs in the traditional sense that they produce code errors; rather, they are accessibility issues that affect <em>all</em> users. That said, they can be fixed and prevented with careful UX considerations as you plan and test your work.</p>
<h3 id="ensure-predictable-scroll-behavior">Ensure Predictable Scroll Behavior</h3>
<p>This is the goal:</p>
<ul>
<li>Enable auto-scrolling when detecting that the user is at the bottom of the stream.</li>
<li>Stop auto-scrolling when the user has scrolled upwards.</li>
<li>Resume auto-scrolling if the user scrolls back to the bottom of the stream.</li>
</ul>
<p>To do that, we need to know whether the user has intentionally moved away from the bottom, which we can assume is true when the scroll position is manually changed. We can track that behavior with a flag.</p>
<pre><code class="language-javascript">let userScrolled = false;

chatEl.addEventListener('scroll', () =&gt; {
  const gap = chatEl.scrollHeight
            - chatEl.scrollTop
            - chatEl.clientHeight;

  userScrolled = gap &gt; 60;
});
</code></pre>
<p>That <code>60px</code> threshold matters. Without it, tiny layout changes (like a new line) would briefly create a gap and break auto-scroll, even if the user didn’t actually scroll.</p>
<p>Now let’s make sure that we enable auto-scrolling only when the user’s scroll position is equal to the stream’s scroll height, i.e., the user is at the bottom of the stream:</p>
<pre><code class="language-javascript">function autoScroll() {
  if (!userScrolled) {
    chatEl.scrollTop = chatEl.scrollHeight;
  }
}
</code></pre>
<p>One small thing that’s easy to miss: we need to reset <code>userScrolled</code> once a new stream begins. Otherwise, one scroll from a previous message can silently disable auto-scroll for the next one.</p>
<h3 id="solidify-layout-stability">Solidify Layout Stability</h3>
<p>We saw this in the first example as well. As new content streams in, the layout jumps, or shifts, taking you out of your current context. To be specific about what’s shifting: it’s not the page layout in a broad sense, it’s the content directly below the chat bubble.</p>
<p>There’s also a subtler artifact worth calling out before we look at the code: cursor flicker. Because we’re wiping <code>innerHTML</code> and recreating every element on every tick, the cursor is being destroyed and re-added constantly, up to 80 times per second at fast speeds.</p>
<p>At normal speed, it’s easy to miss, but slow the slider down to around 30ms, and you’ll see a faint but persistent flicker at the end of the text. Once we fix the rebuild pattern, the flicker disappears entirely.</p>
<figure class="video-embed-container break-out">
<div class="video-embed-container--wrapper"></div>
</figure>
<p>That rebuild pattern is right here; this is what runs on every single incoming character:</p>
<pre><code class="language-javascript">bubble.innerHTML = '';

fullText.split('n').forEach(line =&gt; {
  const p = document.createElement('p');
  p.textContent = line || 'u00A0';
  bubble.appendChild(p);
});

bubble.appendChild(cursorEl);
</code></pre>
<p>This works, but it’s expensive. Every update wipes the DOM and rebuilds it, forcing layout recalculation each time.</p>
<p>Now we write directly into a live node:</p>
<pre><code class="language-javascript">let currentP = null;

function initBubble(bubble, cursor) {
  currentP = document.createElement('p');
  currentP.appendChild(document.createTextNode(''));
  bubble.insertBefore(currentP, cursor);
}
</code></pre>
<p>What we can do next is to create one paragraph with an empty text node and insert it before the cursor. That gives us a live node we can write into directly.</p>
<p>Then, for each character that arrives:</p>
<pre><code class="language-javascript">function appendChar(char, bubble, cursor) {
  if (char === 'n') {
    currentP = document.createElement('p');
    currentP.appendChild(document.createTextNode(''));
    bubble.insertBefore(currentP, cursor);
  } else {
    currentP.firstChild.textContent += char;
  }
}
</code></pre>
<p>For a regular character, we extend the text node by one character. The browser doesn’t need to recalculate the layout for that; the text grew, but nothing moved. For a newline, we create a fresh paragraph and move <code>currentP</code> forward. Layout recalculates once for that new paragraph, and that’s it.</p>
<div class="partners__lead-place"></div>
<h3 id="render-frequency">Render Frequency</h3>
<p>This one is most visible in the first example, the chat UI. Even with scrolling and a layout fixed, we’re still writing to the DOM on every single incoming character.</p>
<p>When the stream is moving fast, you end up hammering the DOM with updates that don’t actually matter. The fix is straightforward: hold the incoming text in a buffer instead of writing it out immediately. Once you’ve collected enough, write it all to the DOM in one go; that’s what a <strong>flush</strong> is.</p>
<p>To pull this off, we keep a simple buffer and make sure we only schedule a single update at a time. When it fires, <code>requestAnimationFrame</code> takes everything that has built up and writes it to the DOM in one shot.</p>
<pre><code class="language-javascript">let pending   = '';
let rafQueued = false;
</code></pre>
<p>When a new character streams in, we then add it to the buffer. If no flush is scheduled yet, we queue one:</p>
<pre><code class="language-javascript">function onChar(char) {
  pending += char;

  if (!rafQueued) {
    rafQueued = true;
    requestAnimationFrame(flush);
  }
}
</code></pre>
<p>The <code>rafQueued</code> flag is important. Without it, every character would schedule its own frame, and you’d end up with dozens of unnecessary flushes.</p>
<p>When the flush fires, it drains the entire buffer in one pass:</p>
<pre><code class="language-javascript">function flush() {
  for (const char of pending) {
    appendChar(char);
  }
  pending   = '';
  rafQueued = false;
  autoScroll();
}
</code></pre>
<p>All the characters that arrive after the last frame are then rendered together, right before the browser paints them. Then we clear the buffer, reset the flag, and run auto-scroll once.</p>
<pre><code class="language-javascript">let userScrolled = false;

chatEl.addEventListener('scroll', () =&gt; {
  const gap = chatEl.scrollHeight
            - chatEl.scrollTop
            - chatEl.clientHeight;

  userScrolled = gap &gt; 60;
});

function autoScroll() {
  if (!userScrolled) {
    chatEl.scrollTop = chatEl.scrollHeight;
  }
}
</code></pre>
<p>If the gap is small, we keep auto-scrolling. If it grows, we assume the user scrolled up, and we stop. That small threshold helps avoid jitter when new lines slightly change the height. Also, remember to reset <code>userScrolled</code> when a new stream starts.</p>
<p>Once scrolling is under control, another issue becomes obvious. As the message grows, it keeps shifting:</p>
<ul>
<li>It starts as one line,</li>
<li>It expands, then</li>
<li>It pushes everything below it.</li>
</ul>
<p>Nothing is technically broken, but it doesn’t feel stable. A common approach is to rebuild the whole message on every update:</p>
<pre><code class="language-javascript">bubble.innerHTML = '';

fullText.split('n').forEach(line =&gt; {
  const p = document.createElement('p');
  p.textContent = line || 'u00A0';
  bubble.appendChild(p);
});

bubble.appendChild(cursorEl);
</code></pre>
<p>This works, but it is doing too much work. Every update destroys and rebuilds the DOM, forcing layout recalculation each time. That’s why everything keeps shifting. The idea is to write into the current paragraph and only create a new one when we actually hit a line break.</p>
<pre><code class="language-javascript">let currentP = null;

function initBubble(bubble, cursor) {
  currentP = document.createElement('p');
  currentP.appendChild(document.createTextNode(''));
  bubble.insertBefore(currentP, cursor);
}
</code></pre>
<p>And then update it character by character:</p>
<pre><code class="language-javascript">function appendChar(char, bubble, cursor) {
  if (char === 'n') {
    currentP = document.createElement('p');
    currentP.appendChild(document.createTextNode(''));
    bubble.insertBefore(currentP, cursor);
  } else {
    currentP.firstChild.textContent += char;
  }
}
</code></pre>
<p>Now we’re no longer rebuilding everything. Most updates just extend a text node, which is cheap and doesn’t trigger large layout shifts. It also fixes the small cursor flicker you might have noticed earlier, since we’re no longer removing and re-adding it.</p>
<p>At this point, the UI already feels better, but there is still something subtle going on. We are still updating the DOM on every character. At higher speeds, that becomes a lot of small updates, many of which you never actually see.</p>
<p>Instead of rendering immediately, we can buffer the incoming characters and apply them once per frame.</p>
<pre><code class="language-javascript">let pending = '';
let rafQueued = false;

function onChar(char) {
  pending += char;

  if (!rafQueued) {
    rafQueued = true;
    requestAnimationFrame(flush);
  }
}
</code></pre>
<p>At this point, we’re not touching the DOM yet, but only collecting characters as they arrive. Then, right before the next frame is painted, we flush everything at once:</p>
<pre><code class="language-javascript">function flush() {
  for (const char of pending) {
    appendChar(char);
  }

  pending = '';
  rafQueued = false;

  autoScroll();
}
</code></pre>
<p>These separate two things that were previously tied together:</p>
<ol>
<li>How fast data arrives, and</li>
<li>When the UI updates.</li>
</ol>
<p>The result looks the same, but the browser does less work, resulting in the UI feeling smoother, especially when the stream is set to a faster speed.</p>
<figure class="
  
  
  "></p>
<p>    <a href="https://codesandbox.io/embed/pk7tk5?view=preview"></p>
<p>    <img loading="lazy" width="800" height="566" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Broken vs. fixed" class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/designing-stable-interfaces-streaming-content/4-broken-vs-fixed.png"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Open in <a href="https://codesandbox.io/embed/pk7tk5?view=preview">CodeSandbox</a>. (<a href="https://files.smashing.media/articles/designing-stable-interfaces-streaming-content/4-broken-vs-fixed.png">Large preview</a>)<br />
    </figcaption></figure>
<p>None of these changes is a big effort on its own. But once they are in place, the interface stops reacting blindly to every update. It becomes easier to read, easier to control, and a lot less distracting, even though the content is still coming in continuously.</p>
<p>There are even more considerations to take into account for ensuring a stable, predictable, and good user experience. For example, what happens if the stream is canceled mid-flow? And what can we do to ensure that user preferences are respected for things like reduced motion, keyboard navigation, and screen reader accessibility? Let’s get into those next.</p>
<h2 id="handling-interrupted-streams">Handling Interrupted Streams</h2>
<p>Most streaming interfaces include a way to stop or cancel the stream. We saw that in the demos. But stopping often leaves the UI in an awkward state. The cursor might keep blinking, buttons don’t update, and the message just freezes mid-stream with no clear indication that it didn’t finish.</p>
<p>The problem is that the stop is usually wired to do one thing: cancel the timer. That’s not enough. You also need to (1) clear the pending buffer, (2) remove the cursor, (3) mark the response as incomplete, and (4) reset the buttons. Here’s how we accomplish those.</p>
<h3 id="1-stop-the-stream-cleanly">1. Stop The Stream Cleanly</h3>
<p>Here’s what <code>stopStream</code> needs to do, in order:</p>
<ol>
<li>Cancel the timer and flip the <code>isStreaming</code> flag so no more ticks run.</li>
<li>Clear the <code>requestAnimationFrame</code> (RAF) buffer so nothing still queued gets written on the next frame.</li>
</ol>
<pre><code class="language-javascript">function stopStream() {
  clearTimeout(streamTimer);
  isStreaming = false;
  pending     = '';
  rafQueued   = false;
}
</code></pre>
<p>Clearing the <code>pending</code> property matters because there might be characters buffered from the last stream instance that haven’t been flushed yet. If you don’t clear it, the next <code>requestAnimationFrame</code> fires, drains the buffer, and writes those characters to the DOM after the stream has officially stopped.</p>
<p>Now we move on to removing the cursor by calling <code>markStopped</code> on the bubble:</p>
<pre><code class="language-javascript">if (cursorEl &amp;&amp; cursorEl.parentNode) cursorEl.remove();
  markStopped(aiBubble);

  stopBtn.style.display  = 'none';
  retryBtn.style.display = '';
  playBtn.style.display  = '';
  setStatus('Stopped', 'stopped');
  chat.removeEventListener('scroll', onScroll);
}
</code></pre>
<p>The <code>cursorEl.parentNode</code> check is there because <code>stopStream</code> is also called internally when a new message fires mid-stream, at which point the cursor might already be gone. Calling <code>remove()</code> on a detached node throws, so we check first.</p>
<p><code>markStopped</code> appends a small label to the bottom of the bubble so the user knows the response didn’t finish:</p>
<pre><code class="language-javascript">function markStopped(bubble) {
  if (!bubble) return;
  bubble.classList.add('stopped');

  const label = document.createElement('span');
  label.className = 'stopped-label';
  label.textContent = 'response stopped';
  bubble.appendChild(label);
}
</code></pre>
<p>The null check on <code>bubble</code> handles the edge case where stop fires before the AI message element has been initialized, which can happen if the user clicks stop during the 300ms delay before the bubble appears.</p>
<h3 id="provide-a-retry-option">Provide A Retry Option</h3>
<p>If the stream simply stops &mdash; perhaps due to a network issue or some other unexpected error &mdash; we ought to provide the user with a path to re-attempt the stream. What that basically means is preventing the UI from doing the expensive work needed to scroll back up to the top, re-read the prompt, and retype it. With a retry option, the user only needs to click a button, and the stream restarts from the current position.</p>
<p>To make that work, we need to hold onto the question when the stream starts:</p>
<pre><code class="language-javascript">let lastQuestion = '';

function startStream(question, answer) {
  lastQuestion = question;
  // rest of setup...
}
</code></pre>
<p>Then, when the retry attempt runs, we reset everything and start fresh:</p>
<pre><code class="language-javascript">function retryStream() {
  if (currentMsgEl &amp;&amp; currentMsgEl.parentNode) {
    currentMsgEl.remove();
  }

  charIndex    = 0;
  userScrolled = false;
  pending      = '';
  rafQueued    = false;
  isStreaming  = true;

  retryBtn.style.display = 'none';
  stopBtn.style.display  = '';
  setStatus('Streaming...', 'streaming');

  chat.addEventListener('scroll', onScroll, { passive: true });

  setTimeout(() =&gt; {
    initAIMsg();
    tick(lastAnswer);
  }, 200);
}
</code></pre>
<p>The reset is critical. Every piece of state needs to go back to its initial value, just like a brand new stream.</p>
<p><strong>Note:</strong> We remove the entire message row (<code>currentMsgEl</code>), not just the bubble. If only the bubble is removed, the layout wrapper and avatar remain persistent and break the structure.</p>
<h3 id="send-a-new-message-mid-stream">Send A New Message Mid-Stream</h3>
<p>There’s one more edge case that’s easy to miss. If the user sends a new message while a stream is still running, you end up with two loops writing to the DOM at the same time. The result is messy, and characters from different responses get mixed together.</p>
<p>Here’s what to do: stop the current stream before starting a new one.</p>
<pre><code class="language-javascript">function startStream(question, answer) {
  if (isStreaming) {
    clearTimeout(streamTimer);
    isStreaming = false;
    pending     = '';
    rafQueued   = false;
    if (cursorEl &amp;&amp; cursorEl.parentNode) cursorEl.remove();
    chat.removeEventListener('scroll', onScroll);
  }

  // now reset and start fresh
  charIndex    = 0;
  userScrolled = false;
  isStreaming  = true;
  lastQuestion = question;
  // ...
}
</code></pre>
<p>Here, we inline the cleanup rather than calling <code>stopStream</code> directly because <code>stopStream</code> also calls <code>markStopped</code> and resets the buttons. The next demo has all three behaviors wired up. You can start a stream, hit “Stop” mid-stream, and the cursor disappears, the “response stopped” label appears, and a “Retry” buttons displayed.</p>
<figure class="
  
  
  "></p>
<p>    <a href="https://codesandbox.io/embed/9cfy92?view=preview"></p>
<p>    <img loading="lazy" width="800" height="505" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Interruptible stream" class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/designing-stable-interfaces-streaming-content/5-interruptible-stream.png"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Open in <a href="https://codesandbox.io/embed/9cfy92?view=preview">CodeSandbox</a>. (<a href="https://files.smashing.media/articles/designing-stable-interfaces-streaming-content/5-interruptible-stream.png">Large preview</a>)<br />
    </figcaption></figure>
<div class="partners__lead-place"></div>
<h2 id="accessibility">Accessibility</h2>
<p>Streaming interfaces are often built and tested with a mouse, so they may feel just fine in a browser, but break down in other situations that may not have been considered, like whether a screen reader announces new content at all. Or navigating with a keyboard might get stuck or lose focus as things update. And, of course, moving text can be uncomfortable &mdash; or even disabling &mdash; for <a href="https://www.smashingmagazine.com/2021/10/respecting-users-motion-preferences/">those with motion sensitivities</a>.</p>
<p>The good part is that you do not need to rebuild everything to accommodate these things; they can be fixed with solutions that sit on top of what is already there.</p>
<h3 id="accommodating-assistive-technology-with-live-regions">Accommodating Assistive Technology With Live Regions</h3>
<p>Screen readers don’t automatically announce content that shows up on its own. They usually read things when the user moves to them. So, in a streaming UI, where text builds up over time, nothing gets announced. The content is there, but the user doesn’t hear anything.</p>
<p>The fix is <a href="https://w3c.github.io/aria/#aria-live"><code>aria-live</code></a>. It tells the browser to watch a container and announce updates as they happen, without the user needing to move focus.</p>
<pre><code class="language-html">&lt;div
  id="chat"
  role="log"
  aria-live="polite"
  aria-atomic="false"
  aria-label="Chat messages"
&gt;&lt;/div&gt;
</code></pre>
<ul>
<li><code>role=&quot;log&quot;</code> tells assistive tech this is a stream of updates, like a running transcript. Some tools handle this automatically, but it’s safer to be explicit so behavior stays consistent.</li>
<li><code>aria-atomic=&quot;false&quot;</code> makes sure only the new content is announced. Without it, some screen readers try to read the whole message again on every update, which quickly becomes unusable.</li>
<li><code>aria-live=&quot;polite&quot;</code> queues updates instead of interrupting. Use <code>assertive</code> only for things that really need immediate attention, like errors.</li>
</ul>
<h3 id="handling-incomplete-states">Handling Incomplete States</h3>
<p>Earlier, we inserted a “Response Stopped” label to the message when the stream stops mid-stream. Visually, that’s enough. But for a screen reader, that change needs to be announced.</p>
<p>Since the message is inside a live region with <code>aria-live=&quot;polite&quot;</code>, the label will be automatically announced as new content when it’s added to the DOM. The live region already handles the announcement, so no additional ARIA is needed on the label itself.</p>
<p>The <strong>Retry</strong> button that appears next also needs context. If a screen reader simply says “Retry, button,” it’s not clear what action that refers to. You can fix that by adding an <code>aria-label</code> that includes the original question:</p>
<pre><code class="language-javascript">retryBtn.setAttribute(
  'aria-label',
  `Retry: ${lastQuestion.slice(0, 60)}`
);
</code></pre>
<p>What you can do here is to set this label when the button appears, not on page load:</p>
<pre><code class="language-javascript">retryBtn.style.display = 'inline-block';
retryBtn.setAttribute(
  'aria-label',
  `Retry: ${lastQuestion.slice(0, 60)}`
);
</code></pre>
<p>We also call <code>retryBtn.focus()</code> after stopping. That way, keyboard users don’t have to <code>Tab</code> around with the keyboard to find the next action.</p>
<p><strong>Testing with assistive technology:</strong> Don’t rely on assumptions about how screen readers announce this. Test with actual tools like NVDA (Windows), JAWS (Windows), or VoiceOver (Mac/iOS). Browser DevTools can show you what’s exposed in the accessibility tree, but they can’t tell you how the content <em>sounds</em>. A real screen reader will reveal whether the announcement is happening at the right time and in the right way.</p>
<h3 id="account-for-keyboard-navigation">Account For Keyboard Navigation</h3>
<p>The controls need to work with the keyboard while the UI is live, so the Stop button has to be reachable. For someone not using a mouse, <kbd>Tab</kbd> + <kbd>Enter</kbd> is the only way to cancel a running stream.</p>
<p>Using <code>display: none</code> is fine for hiding buttons; it removes them from the tab order. The problem is using things like <code>opacity: 0</code> or <code>visibility: hidden</code>. Those hide elements visually, but they can still receive focus, so users end up tabbing onto something they can’t see.</p>
<p>Use <code>:focus-visible</code> so the focus ring shows up for keyboard navigation, but not for mouse clicks:</p>
<pre><code class="language-css">btn:focus-visible {
  outline: 2px solid &#035;1d9e75;
  outline-offset: 2px;
}
</code></pre>
<p>The cursor inside the message should have <code>aria-hidden=&quot;true&quot;</code>. It’s just visual. Without that, some screen readers try to read it as text, which gets distracting.</p>
<h3 id="motion-sensitivity">Motion Sensitivity</h3>
<p>The typewriter effect we see in practically every AI interface produces constant motion. As we’ve already discussed, certain amounts of motion can be disabling. Thankfully, browsers expose <code>prefers-reduced-motion</code>, which detects a user’s motion preferences at the operating system level.</p>
<p>For streaming, the best approach is simple: skip the animation and render the full response at once. The content stays the same, only without the motion.</p>
<pre><code class="language-javascript">const reducedMotion = window.matchMedia(
  '(prefers-reduced-motion: reduce)'
).matches;
</code></pre>
<pre><code class="language-javascript">if (reducedMotion) {
  initAIMsg();
  for (const char of text) appendChar(char);
  if (cursorEl &amp;&amp; cursorEl.parentNode) cursorEl.remove();
  done();
  return;
}
tick(text); // normal animation
</code></pre>
<p>In CSS, the cursor blink also needs to stop. Despite being a minor detail, a blinking cursor element counts as <a href="https://www.w3.org/WAI/WCAG21/Understanding/three-flashes-or-below-threshold.html">flashing content</a>.</p>
<pre><code class="language-css">@media (prefers-reduced-motion: reduce) {
  .cursor { animation: none; opacity: 1; }
}
</code></pre>
<p>There we go! The demo below puts everything from this article together, so you can see how these patterns work in practice. It also includes a reduced motion toggle, so you can test the instant render version easily.</p>
<figure class="
  
  
  "></p>
<p>    <a href="https://codesandbox.io/embed/vd9mnk?view=preview"></p>
<p>    <img loading="lazy" width="800" height="594" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Accessible streaming" class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/designing-stable-interfaces-streaming-content/6-accessible-streaming.png"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Open in <a href="https://codesandbox.io/embed/vd9mnk?view=preview">CodeSandbox</a>. (<a href="https://files.smashing.media/articles/designing-stable-interfaces-streaming-content/6-accessible-streaming.png">Large preview</a>)<br />
    </figcaption></figure>
<h2 id="conclusion">Conclusion</h2>
<p>Streaming itself is mostly solved. Getting data from the server to the client is not the hard part anymore. What breaks is the UI on top of it.</p>
<p>When content updates continuously, small things start to matter, like scroll behavior, layout stability, render timing, and how the interface responds to user actions. If those aren’t handled well, the UI feels unstable and hard to use.</p>
<p>The patterns in this article fix that by:</p>
<ul>
<li>Keeping scroll position under the user’s control,</li>
<li>Updating only what has changed,</li>
<li>Batching renders per frame,</li>
<li>Handling stop and retry actions, and</li>
<li>Making the interface accessible.</li>
</ul>
<p>You don’t need all of these every time. But when streaming is involved, these are the places things usually go wrong.</p>
<h3 id="further-reading">Further Reading</h3>
<ul>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events">Using Server-Sent Events</a><br />
How to open a connection, handle events, and reconnect when needed. This is the transport layer, everything here builds on.</li>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/API/Streams_API">Streams API</a><br />
Streaming data directly from <code>fetch</code>. Useful when you need more control than SSE.</li>
<li><a href="https://developer.chrome.com/docs/devtools/performance">Chrome DevTools Performance panel</a><br />
Helps you see layout recalculations and paint costs, so you can verify performance improvements.</li>
<li>“<a href="https://web.dev/articles/dom-size-and-interactivity">How Large DOM Sizes Affect Interactivity, And What You Can Do About It</a>”, Jeremy Wagner<br />
Why large DOM trees slow things down, and how to keep them under control in long streaming sessions.</li>
</ul>
<div class="signature">
  <img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Smashing Editorial" width="35" height="46" loading="lazy" class="lazyload" data-src="https://www.smashingmagazine.com/images/logo/logo--red.png"><br />
  <span>(yk)</span>
</div>
</article>
]]></content:encoded>
					
					<wfw:commentRss>http://computercoursesonline.com/index.php/2026/04/30/designing-stable-interfaces-for-streaming-content/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>The UX Designer’s Nightmare: When “Production-Ready” Becomes A Design Deliverable</title>
		<link>http://computercoursesonline.com/index.php/2026/04/22/the-ux-designers-nightmare-when-production-ready-becomes-a-design-deliverable/</link>
					<comments>http://computercoursesonline.com/index.php/2026/04/22/the-ux-designers-nightmare-when-production-ready-becomes-a-design-deliverable/#respond</comments>
		
		<dc:creator><![CDATA[.]]></dc:creator>
		<pubDate>Wed, 22 Apr 2026 10:00:00 +0000</pubDate>
				<category><![CDATA[Ux]]></category>
		<guid isPermaLink="false">http://computercoursesonline.com/?p=1206</guid>

					<description><![CDATA[The UX Designer’s Nightmare: When “Production-Ready” Becomes A Design Deliverable The UX Designer’s Nightmare: When “Production-Ready” Becomes A Design Deliverable Carrie Webster 2026-04-22T10:00:00+00:00 2026-04-23T20:34:20+00:00 In early 2026, I noticed that the UX designer’s toolkit seemed to shift overnight. The industry standard “Should designers code?” debate was abruptly settled by the market, not through a consensus...]]></description>
										<content:encoded><![CDATA[<p>              <title>The UX Designer’s Nightmare: When “Production-Ready” Becomes A Design Deliverable</title></p>
<article>
<header>
<h1>The UX Designer’s Nightmare: When “Production-Ready” Becomes A Design Deliverable</h1>
<address>Carrie Webster</address>
<p>                  2026-04-22T10:00:00+00:00<br />
                  2026-04-23T20:34:20+00:00<br />
                </header>
<p>In early 2026, I noticed that the UX designer’s toolkit seemed to shift overnight. The industry standard <em>“Should designers code?”</em> debate was abruptly settled by the market, not through a consensus of our craft, but through the brute force of job requirements. If you browse LinkedIn today, you’ll notice a stark change: UX roles increasingly demand <strong><a href="https://www.refontelearning.com/blog/ui-ux-designer-engineering-in-2026-crafting-future-ready-user-experiences">AI-augmented development</a></strong>, <strong>technical orchestration,</strong> and <strong>production-ready prototyping.</strong></p>
<p>For many, including myself, this is the ultimate design job nightmare. We are being asked to deliver both the “vibe” and the “code” simultaneously, using AI agents to bridge a technical gap that previously took years of computer science knowledge and coding experience to cross. But as the industry rushes to meet these new expectations, they are discovering that AI-generated functional code is not always <em>good</em> code.</p>
<h2 id="the-linkedin-pressure-cooker-role-creep-in-2026">The LinkedIn Pressure Cooker: Role Creep In 2026</h2>
<p>The job market is sending a clear signal. While traditional graphic design roles are expected to grow by only <strong>3%</strong> through 2034, UX, UI, and <a href="https://www.nobledesktop.com/careers/designer/job-outlook#:~:text=The%20projected%20future%20growth%20figures%20for%20Digital,job%20growth%20(which%20lies%20somewhere%20around%205%25).">Product Design roles</a> are projected to grow by <strong>16%</strong> over the same period.</p>
<p>However, this growth is increasingly tied to the rise of <strong>AI product development</strong>, where “design skills” have recently become the #1 most in-demand capability, even ahead of coding and cloud infrastructure. Companies building these platforms are no longer just looking for visual designers; they need professionals who can “<a href="https://humbldesign.io/blog-posts/will-ai-replace-designers-2026">translate technical capability into human-centered experiences</a>.”</p>
<p>This creates a high-stakes environment for the UX designer. We are no longer just responsible for the interface; we are expected to understand the technical logic well enough to ensure that complex AI capabilities feel intuitive, safe, and useful for the human on the other side of the screen. Designers are being pushed toward a <strong>“design engineer” model</strong>, where we must bridge the gap between abstract <a href="https://www.refontelearning.com/blog/ui-ux-designer-engineering-in-2026-crafting-future-ready-user-experiences#skills-and-competencies-for-the-2026-uiux-designer-3">AI logic and user-facing code</a>.</p>
<p>A <a href="https://www.lyssna.com/blog/ux-design-trends/">recent survey</a> found that <strong>73% of designers</strong> now view AI as a primary collaborator rather than just a tool. However, this “collaboration” often looks like “role creep.” Recruiters are often not just looking for someone who understands user empathy and information architecture &mdash; they want someone who can also prompt a React component into existence and push it to a repository!</p>
<p>This shift has created a <strong>competency gap</strong>.</p>
<blockquote><p>As an experienced senior designer who has spent decades mastering the nuances of cognitive load, accessibility standards, and ethnographic research, I am suddenly finding myself being judged on my ability to debug a CSS Flexbox issue or manage a Git branch.</p></blockquote>
<p>The nightmare isn’t the technology itself. It’s the <strong>reallocation of value</strong>.</p>
<blockquote class="pull-quote">
<p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aBusinesses%20are%20beginning%20to%20value%20the%20speed%20of%20output%20over%20the%20quality%20of%20the%20experience,%20fundamentally%20changing%20what%20it%20means%20to%20be%20a%20%e2%80%9csuccessful%e2%80%9d%20designer%20in%202026.%0a&amp;url=https://smashingmagazine.com%2f2026%2f04%2fproduction-ready-becomes-design-deliverable-ux%2f"></p>
<p>Businesses are beginning to value the speed of output over the quality of the experience, fundamentally changing what it means to be a “successful” designer in 2026.</p>
<p>    </a>
  </p>
<div class="pull-quote__quotation">
<div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
</p></div>
</blockquote>
<figure class="
  
    break-out article__image
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/ux-designer-nightmare-production-ready-becomes-design-deliverable/1-figma.jpg"></p>
<p>    <img loading="lazy" width="800" height="450" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Figma to AI code ad" class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ux-designer-nightmare-production-ready-becomes-design-deliverable/1-figma.jpg"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Tools that allow designers to switch from design to code. (Image source: <a href="https://www.figma.com/community/plugin/1443774571835235184/figma-to-ai-code-by-designcode">Figma</a>) (<a href="https://files.smashing.media/articles/ux-designer-nightmare-production-ready-becomes-design-deliverable/1-figma.jpg">Large preview</a>)<br />
    </figcaption></figure>
<h3 id="the-competence-trap-two-job-skill-sets-one-average-result">The Competence Trap: Two Job Skill Sets, One Average Result</h3>
<p>There is potentially a very dangerous myth circulating in boardrooms that AI makes a designer “equal” to an engineer. This narrative suggests that because an LLM can generate a functional JavaScript event handler, the person prompting it doesn’t need to understand the underlying logic. In reality, attempting to master two disparate, deep fields simultaneously will most likely lead to being <strong>averagely competent</strong> at both.</p>
<h3 id="the-averagely-competent-dilemma">The “Averagely Competent” Dilemma</h3>
<p>For a senior UX designer to become a senior-level coder is like asking a master chef to also be a master plumber because “they both work in the kitchen.” You might get the water running, but you won’t know why the pipes are rattling.</p>
<ul>
<li><strong>The “cognitive offloading” risk.</strong><br />
Research shows that while AI can speed up task completion, it often leads to a significant decrease in conceptual mastery. In a controlled study, participants using AI assistance scored <a href="https://www.psychologytoday.com/au/blog/the-asymmetric-brain/202602/cognitive-offloading-using-ai-reduces-new-skill-formation">17% lower</a> on comprehension tests than those who coded by hand.</li>
<li><strong>The debugging gap.</strong><br />
The largest performance gap between AI-reliant users and hand-coders is in <a href="https://www.anthropic.com/research/AI-assistance-coding-skills">debugging</a>. When a designer uses AI to write code they don’t fully understand, they don’t have the ability to identify <em>when</em> and <em>why</em> it fails.</li>
</ul>
<figure class="
  
    break-out article__image
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/ux-designer-nightmare-production-ready-becomes-design-deliverable/2-ai-assistance-coding-skills-speed.png"></p>
<p>    <img loading="lazy" width="800" height="451" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="A chart showing how AI assistance impacts coding speed and skill formation " class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ux-designer-nightmare-production-ready-becomes-design-deliverable/2-ai-assistance-coding-skills-speed.png"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Using AI tools impedes coding skill formation. (Image source: <a href="https://www.anthropic.com/research/AI-assistance-coding-skills">Anthropic</a>) (<a href="https://files.smashing.media/articles/ux-designer-nightmare-production-ready-becomes-design-deliverable/2-ai-assistance-coding-skills-speed.png">Large preview</a>)<br />
    </figcaption></figure>
<p>So, if a designer ships an AI-generated component that breaks during a high-traffic event and cannot manually trace the logic, they are no longer an expert. They are now a liability.</p>
<h3 id="the-high-cost-of-unoptimised-code">The High Cost Of Unoptimised Code</h3>
<p>Any experienced code engineer will tell you that creating code with AI without the right prompt leads to a lot of rework. Because most designers lack the technical foundation to audit the code the AI gives them, they are inadvertently shipping massive amounts of <a href="https://gocrossbridge.com/blog/ai-generated-code/">“Quality Debt”</a>.</p>
<h2 id="common-issues-in-designer-generated-ai-code">Common Issues In Designer-Generated AI Code</h2>
<ul>
<li><strong>The security flaw</strong><br />
Recent reports indicate that up to <a href="https://www.sherlockforensics.com/pages/ai-code-security-report-2026.html">92% of AI-generated codebases</a> contain at least one critical vulnerability. A designer might see a functioning login form, unaware that it has an 86% failure rate in XSS defense, which are the security measures aimed at preventing attackers from injecting malicious scripts into trusted websites.</li>
<li><strong>The accessibility illusion</strong><br />
AI often generates “functional” applications that lack semantic integrity. A designer might prompt a “beautiful and functional toggle switch,” but the AI may provide a non-semantic <code>&lt;div&gt;</code> that lacks keyboard focus and screen-reader compatibility, creating <a href="https://www.levelaccess.com/blog/accessibility-debt-in-software-development-and-how-to-engineer-it-out/">Accessibility Debt</a> that is expensive to fix later.</li>
<li><strong>The performance penalty</strong><br />
AI-generated code tends to be verbose. AI is linked to <a href="https://www.netcorpsoftwaredevelopment.com/blog/ai-generated-code-statistics">4x more code duplication</a> than human-written code. This verbosity slows down page loads, creates massive CSS files, and negatively impacts SEO. To a business, the task looks “done.” To a user with a slow connection or a screen reader, the site is a nightmare.</li>
</ul>
<h2 id="creating-more-work-not-less">Creating More Work, Not Less</h2>
<p>The promise of AI was that designers could ship features without bothering the engineers. The reality has been the birth of a <strong>“Rework Tax”</strong> that is draining engineering resources across the industry.</p>
<ul>
<li><strong>Cleaning up</strong><br />
Organisations are finding that while velocity increases, incidents per Pull Request are also rising by <a href="https://blog.exceeds.ai/ai-code-analysis-benchmark-reports/">23.5%</a>. Some engineering teams now spend a significant portion of their week cleaning up “AI slop” delivered by design teams who skipped a rigorous review process.</li>
<li><strong>The communication gap</strong><br />
Only <a href="https://www.lyssna.com/blog/ux-design-trends/">69% of designers</a> feel AI improves the quality of their work, compared to <strong>82% of developers</strong>. This gap exists because “code that compiles” is not the same as “code that is maintainable.”</li>
</ul>
<p>When a designer hands off AI-generated code that ignores a company’s internal naming conventions or management patterns, they aren’t helping the engineer; they are creating a puzzle that someone else has to solve later.</p>
<figure class="
  
    break-out article__image
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/ux-designer-nightmare-production-ready-becomes-design-deliverable/3-issues-developers-face-ai-generated-code.jpg"></p>
<p>    <img loading="lazy" width="800" height="600" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Typical issues that developers face with AI-generated code" class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ux-designer-nightmare-production-ready-becomes-design-deliverable/3-issues-developers-face-ai-generated-code.jpg"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Typical issues that developers face with AI-generated code. (Image source: <a href="https://www.netcorpsoftwaredevelopment.com/blog/ai-generated-code-statistics">Netcorp</a>) (<a href="https://files.smashing.media/articles/ux-designer-nightmare-production-ready-becomes-design-deliverable/3-issues-developers-face-ai-generated-code.jpg">Large preview</a>)<br />
    </figcaption></figure>
<h3 id="the-solution">The Solution</h3>
<p>We need to move away from the nightmare of the “<strong>Solo Full-Stack Designer</strong>” and toward a model of <strong>designer/coder collaboration</strong>.</p>
<p><strong>The ideal reality:</strong></p>
<ul>
<li><strong>The Partnership</strong><br />
Instead of designers trying to be mediocre coders, they should work in a <strong>human-AI-human loop</strong>. A senior UX designer should work <em>with</em> an engineer to use AI; the designer creates prompts for <strong>intent, accessibility, and user flow</strong>, while the engineer creates prompts for <strong>architecture and performance</strong>.</li>
<li><strong>Design systems as guardrails</strong><br />
To prevent accessibility debt from spreading at scale, <a href="https://webaim.org/projects/million/">accessible components must be the default</a> in your design system. AI should be used to feed these tokens into your UI, ensuring that even generated code stays within the “source of truth.”</li>
</ul>
<h2 id="beyond-the-prompt">Beyond The Prompt</h2>
<p>The industry is currently in a state of “AI Infatuation,” but the pendulum will eventually swing back toward quality.</p>
<blockquote class="pull-quote">
<p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aThe%20UX%20designer%e2%80%99s%20nightmare%20ends%20when%20we%20stop%20trying%20to%20compete%20with%20AI%20tools%20at%20what%20they%20do%20best%20%28generating%20syntax%29%20and%20keep%20our%20focus%20on%20what%20they%20cannot%20do%20%28understanding%20human%20complexity%29.%0a&amp;url=https://smashingmagazine.com%2f2026%2f04%2fproduction-ready-becomes-design-deliverable-ux%2f"></p>
<p>The UX designer’s nightmare ends when we stop trying to compete with AI tools at what they do best (generating syntax) and keep our focus on what they cannot do (understanding human complexity).</p>
<p>    </a>
  </p>
<div class="pull-quote__quotation">
<div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
</p></div>
</blockquote>
<p>Businesses that prioritise “designer-shipped code” without engineering oversight will eventually face a reckoning of technical debt, security breaches, and accessibility lawsuits. The designers who thrive in 2026 and beyond will be those who refuse to be “prompt operators” and instead position themselves as the <strong>guardians of the user experience</strong>. This is the perfect outcome for experienced designers and for the industry.</p>
<p>Our value has always been our ability to advocate for the human on the other side of the screen. We must use AI to augment our design thinking, allowing us to test more ideas and iterate faster, but we must never let it replace the specialised engineering expertise that ensures our designs technically <em>work</em> for everyone.</p>
<h3 id="summary-checklist-for-ux-designers">Summary Checklist for UX Designers</h3>
<ul>
<li><strong>Work Together.</strong><br />
Use AI-made code as a starting point to talk with your developers. Don’t use it as a shortcut to avoid working with them. Ask them to help you with prompts for code creation for the best outcomes.</li>
<li><strong>Understand the “Why”.</strong><br />
Never submit code you don’t understand. If you can’t explain how the AI-generated logic works, don’t include it in your work.</li>
<li><strong>Build for Everyone.</strong><br />
Good design is more than just looks. Use AI to check if your code works for people using screen readers or keyboards, not just to make things look pretty.</li>
</ul>
<div class="signature">
  <img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Smashing Editorial" width="35" height="46" loading="lazy" class="lazyload" data-src="https://www.smashingmagazine.com/images/logo/logo--red.png"><br />
  <span>(yk)</span>
</div>
</article>
]]></content:encoded>
					
					<wfw:commentRss>http://computercoursesonline.com/index.php/2026/04/22/the-ux-designers-nightmare-when-production-ready-becomes-a-design-deliverable/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Session Timeouts: The Overlooked Accessibility Barrier In Authentication Design</title>
		<link>http://computercoursesonline.com/index.php/2026/04/20/session-timeouts-the-overlooked-accessibility-barrier-in-authentication-design/</link>
					<comments>http://computercoursesonline.com/index.php/2026/04/20/session-timeouts-the-overlooked-accessibility-barrier-in-authentication-design/#respond</comments>
		
		<dc:creator><![CDATA[.]]></dc:creator>
		<pubDate>Mon, 20 Apr 2026 13:00:00 +0000</pubDate>
				<category><![CDATA[Ux]]></category>
		<guid isPermaLink="false">http://computercoursesonline.com/?p=1208</guid>

					<description><![CDATA[Session Timeouts: The Overlooked Accessibility Barrier In Authentication Design Session Timeouts: The Overlooked Accessibility Barrier In Authentication Design Eleanor Hecks 2026-04-20T13:00:00+00:00 2026-04-23T20:34:20+00:00 For web professionals, session management is a balancing act between user experience, cybersecurity, and resource usage. For people with disabilities, it is more than that &#8212; it is a barrier to buying digital...]]></description>
										<content:encoded><![CDATA[<p>              <title>Session Timeouts: The Overlooked Accessibility Barrier In Authentication Design</title></p>
<article>
<header>
<h1>Session Timeouts: The Overlooked Accessibility Barrier In Authentication Design</h1>
<address>Eleanor Hecks</address>
<p>                  2026-04-20T13:00:00+00:00<br />
                  2026-04-23T20:34:20+00:00<br />
                </header>
<p>For web professionals, session management is a balancing act between user experience, cybersecurity, and resource usage. For people with disabilities, it is more than that &mdash; it is a barrier to buying digital tickets, scrolling on social media, or applying for a loan online. <strong>Session timeout accessibility</strong> can be the difference between a bad day and a good day for those with disabilities.</p>
<p>For many, getting halfway through an important form only to be unceremoniously kicked back to the login screen is a common experience. Such incidents can lead to exasperation and even abandonment of the website entirely. With some backend work, web professionals can ensure no one has to experience this frustration.</p>
<h2 id="why-session-timeouts-disproportionately-affect-users-with-disabilities">Why Session Timeouts Disproportionately Affect Users With Disabilities</h2>
<p>A considerable portion of the global population has cognitive, motor, or vision impairments. Worldwide, <a href="https://designerly.com/mobile-app-accessibility-checklist/">around 1.3 billion people</a> have significant disabilities. Whether they possess motor, cognitive, or visual impairments, their disabilities affect their ability to interact with technology easily. They can all be disproportionately affected by session timeouts, making session timeout accessibility a critical issue.</p>
<p>Session timeouts are inaccessible for a large percentage of the population. An <a href="https://www.hanoversearch.com/blog/inclusive-recruitment-a-focus-on-neurodiverse-talent/.">estimated 20% of people are</a> neurodivergent, meaning timeout barriers don’t just affect a small subset of users &mdash; they impact a <strong>substantial portion of any website’s audience</strong>. As a result, some users may look inactive when they are not. <strong>Strict timeouts create undue pressure.</strong></p>
<h3 id="motor-impairments-and-slower-input-speeds">Motor Impairments and Slower Input Speeds</h3>
<p>For instance, someone with cerebral palsy tries to purchase tickets online for an upcoming concert. Due to coordination difficulties and muscle stiffness, they may enter their information more slowly than a non-disabled person would. They select the date, choose their seats, and fill out personal information. Before they can enter their credit card details, a timeout pop-up appears. They have been logged out due to “inactivity” and must restart the entire process.</p>
<p>This situation is not entirely hypothetical. Matthew Kayne is a disability rights advocate, broadcaster, and contributor to The European magazine. He describes the effort required to navigate websites as someone with cerebral palsy. He explains how the user interface <a href="https://the-european.eu/story-53902/this-one-digital-glitch-is-pushing-disabled-people-to-breaking-point.html">is often poorly designed</a> for adaptive devices, and he worries his equipment won’t respond correctly. After carefully navigating each page, he is suddenly logged out. In a moment, one timed form can erase hours of work, and it’s not just a matter of inconvenience. A single failed attempt can delay support or cause him to miss appointments.</p>
<p>Motor impairments can <strong>slow input speed</strong>, making it appear the user is not at their computer. As such, people who experience stiffness, hand tremors, coordination challenges, involuntary movements, or muscle weakness are disproportionately affected by session timeouts. According to the DWP Accessibility Manual, it <a href="https://accessibility-manual.dwp.gov.uk/tools-and-resources/basic-accessibility-checks/10-session-timeouts-impact-on-users">can take multiple attempts</a> for adaptive technology to register input, slowing users down considerably. Even if they receive a warning, they may not be able to act fast enough to prove they are still active.</p>
<h3 id="cognitive-impairments-and-processing-time">Cognitive Impairments and Processing Time</h3>
<p>Session timeouts can also create accessibility barriers for those with various types of cognitive differences. Strict timeouts can create undue pressure that assumes everyone processes information at the same speed. Users may appear inactive when they are actually reading, thinking, or processing.</p>
<p>Cognitive differences encompass a wide range of experiences, including neurodivergences like autism and ADHD, developmental disabilities like Down syndrome, and learning disabilities like dyslexia. Many people are born with cognitive differences. In fact, an <a href="https://www.hanoversearch.com/blog/inclusive-recruitment-a-focus-on-neurodiverse-talent/.">estimated 20% of people are</a> neurodivergent, making up a large portion of any website’s audience. Others acquire cognitive disabilities later in life through traumatic brain injury or conditions like dementia.</p>
<p>People with cognitive disabilities often need more time to complete online tasks &mdash; not because of any deficit, but because they process information differently. Design choices that work well for neurotypical users can create unnecessary obstacles for people with ADHD, dyslexia, autism, or memory-related conditions.</p>
<p>Invisible session timeouts are particularly problematic for people who experience memory loss, language processing differences, or <strong>time blindness</strong>. For example, neurodivergent technology leader Kate Carruthers says ADHD <a href="https://katecarruthers.com/life-with-adhd-time-blindness-or-why-i-lose-hours-not-just-my-keys/">has affected her perception</a> of time. She has time blindness and can’t reliably track how much time has passed, making estimates unhelpful.</p>
<blockquote class="pull-quote">
<p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aWhen%20websites%20depend%20on%20users%20estimating%20remaining%20time%20before%20a%20session%20expires,%20they%20quietly%20exclude%20people%20%e2%80%94%20not%20just%20those%20with%20formal%20ADHD%20diagnoses,%20but%20anyone%20who%20experiences%20time%20differently%20or%20processes%20information%20at%20a%20different%20pace.%0a&amp;url=https://smashingmagazine.com%2f2026%2f04%2fsession-timeouts-accessibility-barrier-authentication-design%2f"></p>
<p>When websites depend on users estimating remaining time before a session expires, they quietly exclude people — not just those with formal ADHD diagnoses, but anyone who experiences time differently or processes information at a different pace.</p>
<p>    </a>
  </p>
<div class="pull-quote__quotation">
<div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
</p></div>
</blockquote>
<h3 id="vision-impairments-and-screen-reader-navigation-overhead">Vision Impairments and Screen Reader Navigation Overhead</h3>
<p>Since blind or low-vision users cannot visually scan a page to find what they need, they must listen to links, headings, and form fields, which is inherently <strong>more time-consuming</strong>. More than <a href="https://int.livhospital.com/complete-top-5-reasons-for-vision-loss-worldwide/">43 million people worldwide</a> are affected by blindness, while 295 million have moderate to severe vision impairment, which makes this a significant accessibility concern for any global-facing website.</p>
<p>As a result, these users’ sessions may expire even if they are active. <strong>Live timers and 30-second warnings do little to help</strong>, as they are not built with screen readers in mind.</p>
<p>Bogdan Cerovac, a web developer passionate about digital accessibility, experienced this firsthand. The countdown timer informed him how long he had left before being logged out due to inactivity. By all accounts, it worked fine. However, he describes the <a href="https://cerovac.com/a11y/2025/07/countdowns-and-timers-forgotten-detail-that-can-make-your-users-really-hate-your-product/">screen reader experience as horrible</a>, as it notified him of the remaining time every single second. He couldn’t navigate the page because he was spammed by constant status messages.</p>
<h2 id="common-timeout-patterns-that-fail-accessibility-requirements">Common Timeout Patterns That Fail Accessibility Requirements</h2>
<p>According to the National Institute of Standards and Technology, <a href="https://pages.nist.gov/800-63-4/sp800-63b/session/">session management is preferable</a> to continually preserving credentials, which would incentivize users to create authentication workarounds that could threaten security. However, several common timeout patterns fail to meet modern standards for session timeout accessibility.</p>
<figure class="
  
    break-out article__image
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/session-timeouts-accessibility-barrier-authentication-design/1-timeout-pattern-fail-accessibility.png"></p>
<p>    <img loading="lazy" width="800" height="480" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="A session expired window with a “Back to main page” button." class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/session-timeouts-accessibility-barrier-authentication-design/1-timeout-pattern-fail-accessibility.png"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Image source: <a href="https://github.com/alfio-event/alf.io/issues/903">princekwame</a>. (<a href="https://files.smashing.media/articles/session-timeouts-accessibility-barrier-authentication-design/1-timeout-pattern-fail-accessibility.png">Large preview</a>)<br />
    </figcaption></figure>
<h3 id="silent-timeouts-and-insufficient-warnings">Silent Timeouts and Insufficient Warnings</h3>
<p>Many websites either provide no warning before logging users out, or they display a brief, seconds-long pop-up that appears too late to be actionable. For users who navigate via screen reader, these warnings may not be announced in time. For those with motor impairments, a 30-second countdown may not provide enough time to respond.</p>
<p>Let’s consider the Consular Electronic Application Center’s DS-260 page, which is used to apply for or renew U.S. nonimmigrant visas. If an application <a href="https://travel.state.gov/content/travel/en/us-visas/visa-information-resources/forms/online-immigrant-visa-forms/ds-260-faqs.html">is idle for around 20 minutes</a>, it will log the user off without warning. The FAQ page only provides an approximate time estimate. Someone’s work only saves when they complete the page, so they may lose significant progress.</p>
<h3 id="nonextendable-sessions">Nonextendable Sessions</h3>
<p>An abrupt “session expired” message is frustrating even for individuals without disabilities. If there is no option to continue, users are forced to log back in and restart their work, wasting time and energy.</p>
<h3 id="form-data-loss-on-expiration">Form Data Loss on Expiration</h3>
<p>Unless the website automatically saves progress, visitors will lose everything when the session expires. For someone with disabilities, this does not simply waste time. It can make their day immeasurably harder. Imagine spending an hour on a service request, job application, or purchase order only for all progress to be completely erased with little to no warning.</p>
<h2 id="design-patterns-that-balance-security-and-accessibility">Design Patterns That Balance Security and Accessibility</h2>
<p>Inconsistent timeout periods and a lack of warnings lead to the sudden, unexpected loss of all unsaved work. For long, complex forms, like the DS-260, a poor user experience is extremely frustrating. In comparison, the United Kingdom’s application for pension credit is highly accessible. It warns users <a href="https://design-system.dwp.gov.uk/patterns/manage-a-session-timeout">at least two minutes</a> in advance and allows them to extend the session. It meets level AA of the WCAG 2.2 success criteria, indicating its accessibility.</p>
<figure class="
  
    break-out article__image
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/session-timeouts-accessibility-barrier-authentication-design/2-timeout-pattern-accessibility.png"></p>
<p>    <img loading="lazy" width="800" height="450" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="A tab session expired window with a refresh button." class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/session-timeouts-accessibility-barrier-authentication-design/2-timeout-pattern-accessibility.png"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Image source: <a href="https://experienceleaguecommunities.adobe.com/adobe-workfront-23/pop-up-message-saying-session-has-expired-129862">Experience League</a>. (<a href="https://files.smashing.media/articles/session-timeouts-accessibility-barrier-authentication-design/2-timeout-pattern-accessibility.png">Large preview</a>)<br />
    </figcaption></figure>
<p>People with disabilities are disproportionately affected by the unintended consequences of poor session management. Thankfully, session timeouts’ inaccessibility is not a matter of fact. With a few small changes, web professionals can significantly improve their website’s accessibility.</p>
<h3 id="advance-warning-systems-and-extend-functionality">Advance Warning Systems and Extend Functionality</h3>
<p>Websites should clearly state the time limit’s existence and duration before the session starts. For instance, if someone is filling out a bank form, the first page should exist solely to inform them that it has a 60-minute time limit. A live counter that updates regularly can help them track how much time remains. Also, users should be told whether they can adjust the session timeout length.</p>
<h3 id="activity-based-vs-absolute-timeouts">Activity-Based vs. Absolute Timeouts</h3>
<p>An activity-based timeout logs users out due to inactivity, while an absolute timeout logs them out regardless of activity. For an office, a 24-hour absolute timer might make sense, since workers only need to log in when they get to work. As long as users know when their session will expire, the latter is more accessible than the former.</p>
<h3 id="auto-save-and-progress-preservation">Auto-Save and Progress Preservation</h3>
<p>Cookies, localStorage, and sessionStorage are temporary, client-side storage mechanisms that allow web applications to store data for the duration of a single browser session. They are powerful, lightweight tools. Web developers can use them to automatically save users’ progress at frequent intervals, ensuring data is restored upon reauthentication.</p>
<p>This way, even if someone’s session expires by accident, they are not penalized. Once they log back in, they can finish filling out their credit card details or pick up where they left off with an online form.</p>
<h2 id="testing-and-wcag-compliance-considerations">Testing and WCAG Compliance Considerations</h2>
<p>The Web Content Accessibility Guidelines (WCAG) is a collection of internationally accepted internet accessibility standards published by the W3C. It acts as the arbiter of session timeout accessibility. Web developers should pay special attention to <strong>Guideline 2.9.2</strong>, <a href="https://www.w3.org/TR/wcag-3.0/#adequate-time">which outlines best practices for adequate</a> time.</p>
<p>The <strong>timeout adjustable mechanism</strong> should extend the time limit before the session expires or allow it to be turned off completely. For the former option, a dialog box should appear asking users if they need more time, allowing them to continue with one click. The WC3 notes that exceptions exist.</p>
<p>For example, when a website conducts a live ticket sale, users can only hold tickets in their carts for 10 minutes to give others a chance to purchase limited inventory. Alternatively, session timeouts may be necessary on shared computers. If librarians allowed everyone to stay logged in instead of automatically signing them out overnight, they would risk security issues.</p>
<p>Some processes should not have time limits at all. When browsing social media, reading a news article, or searching for items on an e-commerce site, there is no reason a session should expire within an arbitrary time frame. Meanwhile, in a timed exam, it may be necessary. However, in this case, administrators can extend time limits for students with disabilities.</p>
<p>When web developers make session management accessible, they are not catering to a small group. Pew Research Center data shows <a href="https://www.pewresearch.org/short-reads/2021/09/10/americans-with-disabilities-less-likely-than-those-without-to-own-some-digital-devices/">62% of adults with disabilities</a> own a computer. 72% have high-speed home internet. These figures do not differ statistically from the percentage of non-disabled adults who say the same.</p>
<h2 id="overcoming-the-session-timeout-accessibility-barrier">Overcoming the Session Timeout Accessibility Barrier</h2>
<p>The WCAG provides additional resources that web developers can review to understand session management accessibility better:</p>
<ul>
<li><a href="https://www.w3.org/TR/UNDERSTANDING-WCAG20/time-limits-required-behaviors.html">WCAG SC 2.2.1 Timing Adjustable</a></li>
<li><a href="https://www.w3.org/TR/UNDERSTANDING-WCAG20/time-limits-server-timeout.html">WCAG SC 2.2.5 Re-authenticating</a></li>
<li><a href="https://www.w3.org/WAI/WCAG22/Understanding/timeouts.html">WCAG SC 2.2.6 Timeouts</a></li>
</ul>
<p>In addition to following these guidelines, there is a wealth of information from leading educational institutions, authorities on open web technologies, and government agencies. They provide a great starting place for those with intermediate web development knowledge.</p>
<p>Web professionals should consider the following resources to learn more about tools and techniques they can use to make session management more accessible:</p>
<ul>
<li><a href="https://accessibility.huit.harvard.edu/technique-session-extension">Harvard University’s Session Extension Technique</a></li>
<li><a href="https://accessibility-manual.dwp.gov.uk/tools-and-resources/basic-accessibility-checks/10-session-timeouts-how-to-test">DWP Accessibility Manual: How to test session timeouts</a></li>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage">Window: sessionStorage property</a></li>
</ul>
<blockquote class="pull-quote">
<p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aSession%20timeout%20accessibility%20is%20not%20only%20an%20industry%20best%20practice%20but%20an%20ethical%20web%20development%20standard.%0a&amp;url=https://smashingmagazine.com%2f2026%2f04%2fsession-timeouts-accessibility-barrier-authentication-design%2f"></p>
<p>Session timeout accessibility is not only an industry best practice but an ethical web development standard.</p>
<p>    </a>
  </p>
<div class="pull-quote__quotation">
<div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
</p></div>
</blockquote>
<p>Those who prioritize it will appeal to a wider audience, <strong>improve usability</strong>, and attract more website visitors and longer sessions.</p>
<p>The main takeaway is that a website with inaccessible session timeouts sends a clear message that it doesn’t value the user’s time or effort, a problem that creates significant barriers for people with disabilities. However, this is a solvable issue. With a few simple changes, such as providing session extension warnings and auto-saving progress, web developers can build a more considerate, accessible, and respectful internet for everyone.</p>
<h3 id="further-reading-on-smashingmag">Further Reading On SmashingMag</h3>
<ul>
<li>“<a href="https://www.smashingmagazine.com/2025/04/what-mean-site-be-keyboard-navigable/">What Does It Really Mean For A Site To Be Keyboard Navigable</a>”, Eleanor Hecks</li>
<li>“<a href="https://www.smashingmagazine.com/2025/06/designing-for-neurodiversity/">Designing For Neurodiversity</a>”, Vitaly Friedman</li>
<li>“<a href="https://www.smashingmagazine.com/2025/06/what-i-wish-someone-told-me-aria/">What I Wish Someone Told Me When I Was Getting Into ARIA</a>”, Eric Bailey</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="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Smashing Editorial" width="35" height="46" loading="lazy" class="lazyload" data-src="https://www.smashingmagazine.com/images/logo/logo--red.png"><br />
  <span>(yk)</span>
</div>
</article>
]]></content:encoded>
					
					<wfw:commentRss>http://computercoursesonline.com/index.php/2026/04/20/session-timeouts-the-overlooked-accessibility-barrier-in-authentication-design/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How To Improve UX In Legacy Systems</title>
		<link>http://computercoursesonline.com/index.php/2026/04/10/how-to-improve-ux-in-legacy-systems/</link>
					<comments>http://computercoursesonline.com/index.php/2026/04/10/how-to-improve-ux-in-legacy-systems/#respond</comments>
		
		<dc:creator><![CDATA[.]]></dc:creator>
		<pubDate>Fri, 10 Apr 2026 13:00:00 +0000</pubDate>
				<category><![CDATA[Ux]]></category>
		<guid isPermaLink="false">http://computercoursesonline.com/?p=1203</guid>

					<description><![CDATA[How To Improve UX In Legacy Systems How To Improve UX In Legacy Systems Vitaly Friedman 2026-04-10T13:00:00+00:00 2026-04-16T21:02:41+00:00 Imagine that you need to improve the UX of a legacy system. A system that has been silently working in the background for almost a decade. It’s slow, half-broken, unreliable, and severely outdated &#8212; a sort of...]]></description>
										<content:encoded><![CDATA[<p>              <title>How To Improve UX In Legacy Systems</title></p>
<article>
<header>
<h1>How To Improve UX In Legacy Systems</h1>
<address>Vitaly Friedman</address>
<p>                  2026-04-10T13:00:00+00:00<br />
                  2026-04-16T21:02:41+00:00<br />
                </header>
<p>Imagine that you need to improve the <strong>UX of a legacy system</strong>. A system that has been silently working in the background for almost a decade. It’s slow, half-broken, unreliable, and severely outdated &mdash; a sort of “black box” that everyone relies upon, but nobody really knows what’s happening under the hood.</p>
<p><strong>Where would you even start?</strong> Legacy stories are often daunting, adventurous, and utterly confusing. They represent a mixture of fast-paced decisions, quick fixes, and accumulating UX debt.</p>
<p>There is no one-fits-all solution to tackle them, but there are ways to make progress, albeit slowly, while respecting the <strong>needs and concerns</strong> of users and stakeholders. Now, let’s see how we can do just that.</p>
<h2 id="the-actual-challenges-of-legacy-ux">The Actual Challenges Of Legacy UX</h2>
<p>It might feel that legacy products are waiting to be deprecated at any moment. But in reality, they are often <strong>critical for daily operations</strong>. Many legacy systems are heavily customized for the needs of the organization, often built externally by a supplier and often without rigorous usability testing.</p>
<p>It’s common for enterprises to spend <strong>40–60% of their time</strong> managing, maintaining, and fine-tuning legacy systems. They are essential, critical &mdash; but also very expensive to keep alive.</p>
<figure class="
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/how-improve-ux-legacy-systems/1-cash-register.jpg"></p>
<p>    <img loading="lazy" width="800" height="500" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="A detailed electronic medical record (EMR) screen for an ophthalmology patient, displaying their visit summary including chief complaint, past medical history, medications, and optical test results." class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-improve-ux-legacy-systems/1-cash-register.jpg"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Cash registers are frequently designed once and rarely touched again. Replacing them across 1000s of stores is remarkably expensive. (<a href="https://files.smashing.media/articles/how-improve-ux-legacy-systems/1-cash-register.jpg">Large preview</a>)<br />
    </figcaption></figure>
<h3 id="1-legacy-must-co-exist-with-products-built-around-them">1. Legacy Must Co-Exist With Products Built Around Them</h3>
<p>Running in a <strong>broken, decade-old ecosystem</strong>, legacy still works, yet nobody knows exactly how and why it still does. People who have set it up originally probably have left the company years ago, leaving a lot of unknowns and poorly documented work behind.</p>
<p>With them come <strong>fragmented and inconsistent design choices</strong>, stuck in old versions of old design tools that have long been discontinued.</p>
<figure class="
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/how-improve-ux-legacy-systems/2-legacy-system-healthcare.jpg"></p>
<p>    <img loading="lazy" width="800" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="A detailed electronic medical record (EMR) screen for an ophthalmology patient, displaying their visit summary including chief complaint, past medical history, medications, and optical test results." class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-improve-ux-legacy-systems/2-legacy-system-healthcare.jpg"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      One of many: a legacy system used by EMR systems in healthcare. (<a href="https://files.smashing.media/articles/how-improve-ux-legacy-systems/2-legacy-system-healthcare.jpg">Large preview</a>)<br />
    </figcaption></figure>
<p>Still, legacy systems must neatly <strong>co-exist within modern digital products</strong> built around them. In many ways, the end result resembles a Frankenstein &mdash; many bits and pieces glued together, often a mixture of modern UIs and painfully slow and barely usable fragments here and there &mdash; especially when it comes to validation, error messages, or processing data.</p>
<h3 id="2-legacy-systems-make-or-break-ux">2. Legacy Systems Make or Break UX</h3>
<p>Once you sprinkle a little bit of quick bugfixing, unresolved business logic issues, and unresponsive layouts, you have a <strong>truly frustrating experience</strong>, despite the enormous effort put into the rest of the application.</p>
<p>If one single step in a complex user flow feels <strong>utterly broken and confusing</strong>, then the entire product appears to be broken as well, despite the incredible efforts the design teams have put together in the rest of the product.</p>
<p>Well, eventually, you’ll have to tackle legacy. And that’s where we need to consider available options for your <strong>UX roadmap</strong>.</p>
<h2 id="ux-roadmap-for-tackling-legacy-projects">UX Roadmap For Tackling Legacy Projects</h2>
<h3 id="don-t-dismiss-legacy-build-on-existing-knowledge">Don’t Dismiss Legacy: Build on Existing Knowledge</h3>
<p>Because legacy systems are often big unknowns that cause a lot of frustration to everyone, from stakeholders to designers to engineers to users. The initial thought might be to remove it entirely and <strong>redesign it from scratch</strong>, but in practice, that’s not always feasible. Big-bang-redesign is a <strong>remarkably expensive</strong> and very time-consuming endeavor.</p>
<figure class="
  
    break-out article__image
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/how-improve-ux-legacy-systems/3-questions-ask-legacy-system.png"></p>
<p>    <img loading="lazy" width="800" height="467" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="An overview of questions to ask key stakeholders to understand the legacy system, its key features, workflows, and priorities." class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-improve-ux-legacy-systems/3-questions-ask-legacy-system.png"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      First things first: map legacy features, workflows, and priorities as a part of discovery. (<a href="https://files.smashing.media/articles/how-improve-ux-legacy-systems/3-questions-ask-legacy-system.png">Large preview</a>)<br />
    </figcaption></figure>
<p>Legacy systems <strong>hold valuable knowledge</strong> about the business practice, and they do work &mdash; and a new system must perfectly match years of knowledge and customization done behind the scenes. That’s why stakeholders and users (in B2B) are typically <strong>heavily attached to legacy systems</strong>, despite all their well-known drawbacks and pains.</p>
<p>To most people, because such systems are at the very heart of the business, operating on them seems to be extremely risky and will require a significant amount of <strong>caution and preparation</strong>. Corporate users don’t want big risks. So instead of dismissing legacy entirely, we might start by gathering existing knowledge first.</p>
<h3 id="map-existing-workflows-and-dependencies">Map Existing Workflows and Dependencies</h3>
<p>The best place to start is to understand how and where exactly legacy systems are in use. You might discover that some bits of the legacy systems are used all over the place &mdash; not only in your product, but also in business dashboards, by external agencies, and by other companies that integrate your product into their services.</p>
<figure class="
  
    break-out article__image
  
  
  "></p>
<p>    <a href="https://creative.navy/case-studies/ux-ui-design-technical-software-users"></p>
<p>    <img loading="lazy" width="800" height="464" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="An overview of users’ behavior, frequency of use for features, and the complexity of the flow." class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-improve-ux-legacy-systems/4-testing-session.jpg"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Testing sessions to understand where users struggle, and how difficult tasks are to complete for them. From a fantastic case study by <a href="https://creative.navy/case-studies/ux-ui-design-technical-software-users">CreativeNavy</a>. (<a href="https://files.smashing.media/articles/how-improve-ux-legacy-systems/4-testing-session.jpg">Large preview</a>)<br />
    </figcaption></figure>
<p>Very often, legacy systems have dependencies on their own, integrating other legacy systems that might be much older and in a much worse state. Chances are high that you might not even consider them in the big-bang redesign &mdash; mostly because you don’t know just <strong>how many black boxes</strong> are in there.</p>
<figure class="
  
    break-out article__image
  
  
  "></p>
<p>    <a href="https://creative.navy/case-studies/ux-ui-design-technical-software-users"></p>
<p>    <img loading="lazy" width="800" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="An overview of users’ behavior, frequency of use for features, and the complexity of the flow." class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-improve-ux-legacy-systems/5-map-workflows-user-behavior.jpg"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Map existing workflows by tracking user behavior, frequency, desired outcome, complexity, patterns, and user needs. From a fantastic case study by <a href="https://creative.navy/case-studies/ux-ui-design-technical-software-users">CreativeNavy</a>. (<a href="https://files.smashing.media/articles/how-improve-ux-legacy-systems/5-map-workflows-user-behavior.jpg">Large preview</a>)<br />
    </figcaption></figure>
<p>Set up a board to <a href="https://www.linkedin.com/pulse/breaking-down-complexity-task-analysis-ux-vitaly-friedman-sjt4f/">document current workflows and dependencies</a> to get a better idea of how everything works together. Include stakeholders, and <strong>involve heavy users in the conversation</strong>. You won’t be able to open the black box, but you can still shed some light on it from the perspectives of different people who may be relying on legacy for their work.</p>
<figure class="
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/how-improve-ux-legacy-systems/6-prioritizing-migrated-features.png"></p>
<p>    <img loading="lazy" width="800" height="375" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Prioritizing migrated features and features by impact and urgency." class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-improve-ux-legacy-systems/6-prioritizing-migrated-features.png"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Priorities matter. You won’t need to migrate everything, but you need to discover critical parts that must be migrated. (<a href="https://files.smashing.media/articles/how-improve-ux-legacy-systems/6-prioritizing-migrated-features.png">Large preview</a>)<br />
    </figcaption></figure>
<p>Once you’ve done that, set up a meeting to <strong>reflect to users and stakeholders</strong> what you have discovered. You will need to build confidence and trust that you aren’t missing anything important, and you need to visualize the dependencies that a legacy tool has to everyone involved.</p>
<p>Replacing a legacy system is <strong>never about legacy alone</strong>. It’s about the dependencies and workflows that rely on it, too.</p>
<h3 id="choose-your-ux-migration-strategy">Choose Your UX Migration Strategy</h3>
<p>Once you have a <strong>big picture</strong> in front of you, you need to decide on what to do next. Big-bang relaunch or a small upgrade? Which approach would work best? You might <strong>consider the following options</strong> before you decide on how to proceed:</p>
<figure class="
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/how-improve-ux-legacy-systems/7-legacy-migration-strategies.jpg"></p>
<p>    <img loading="lazy" width="800" height="804" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="A diagram titled ‘Legacy Migration Strategies’, showing five different approaches to migrating from an old system to a new system using arrows and descriptions." class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/how-improve-ux-legacy-systems/7-legacy-migration-strategies.jpg"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      The different legacy migration strategies. You never migrate just a system &mdash; you also migrate workflows, habits, processes, and ways of working. (<a href="https://files.smashing.media/articles/how-improve-ux-legacy-systems/7-legacy-migration-strategies.jpg">Large preview</a>)<br />
    </figcaption></figure>
<ul>
<li><strong>Big-bang relaunch</strong>.<br />
Sometimes the only available option, but it’s very risky, expensive, and can take years, without any improvements to the existing setup in the meantime.</li>
<li><strong>Incremental migration</strong>.<br />
Slowly retire pieces of legacy by replacing small bits with new designs. This offers quicker wins in a <code>Frankenstein</code> style but can make the system unstable.</li>
<li><strong>Parallel migration</strong>.<br />
Run a public beta of the replacement alongside the legacy system to involve users in shaping the new design. Retire the old system when the new one is stable, but be prepared for the cost of maintaining both.</li>
<li><strong>Incremental parallel migration</strong>.<br />
List all business requirements the legacy system fulfills, then build a new product to meet them reliably, matching the old system from day one. Test early with power users, possibly offering an option to switch systems until the old one is fully retired.</li>
<li><strong>Legacy UI upgrade + public beta</strong>.<br />
Perform low-risk fine-tuning on the legacy system to align UX, while incrementally building a new system with a public beta. This yields quicker and long-term wins, ideal for fast results.</li>
</ul>
<p>Replacing a system that has been carefully refined and heavily customized for a decade is a monolithic task. You can’t just rebuild something from scratch within a few weeks that others have been working on for years.</p>
<p>So whenever possible, try to <strong>increment gradually</strong>, involving users and stakeholders and engineers along the way &mdash; and with enough <strong>buffer time</strong> and <strong>continuous feedback loops</strong>.</p>
<h2 id="wrapping-up">Wrapping Up</h2>
<p>With legacy projects, failure is often not an option. You’re migrating not just components, but <strong>users and workflows</strong>. Because you operate on the <strong>very heart of the business</strong>, expect a lot of attention, skepticism, doubts, fears, and concerns. So build <strong>strong relationships</strong> with key stakeholders and key users and share ownership with them. You will need their support and their buy-in to bring your UX work in action.</p>
<p>Stakeholders will request old and new features. They will focus on <strong>edge cases, exceptions, and tiny tasks</strong>. They will question your decisions. They will send mixed signals and change their opinions. And they will expect the new system to run flawlessly from day one.</p>
<p>And the best thing you can do is to work with them throughout the entire design process, right from the very beginning. Run a successful pilot project to <strong>build trust</strong>. Report your progress repeatedly. And account for <strong>intense phases of rigorous testing</strong> with legacy users.</p>
<p>Revamping a legacy system is a tough challenge. But there is rarely any project that can have so much impact on such a scale. Roll up your sleeves and get through it successfully, and your team will be <strong>remembered, respected, and rewarded</strong> for years to come.</p>
<h2 id="meet-measure-ux-amp-design-impact">Meet “Measure UX &amp; Design Impact”</h2>
<p>Meet <a href="https://measure-ux.com"><strong>Measure UX &amp; Design Impact</strong></a>, Vitaly’s practical guide <strong>for designers and UX leads</strong> on how to track and visualize the incredible <strong>impact</strong> of your UX work on business &mdash; with a <a href="https://smashingconf.com/online-workshops/workshops/vitaly-friedman-impact-design/">live UX training</a> later this year. <a href="https://measure-ux.com/">Jump to details</a>.</p>
<figure class="break-out" style="margin-bottom:0;padding-bottom:0">
    <a href="https://measure-ux.com/" title="How To Measure UX and Design Impact, with Vitaly Friedman"><br />
    <img loading="lazy" width="900" height="466" style="border-radius: 11px" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="How to Measure UX and Design Impact, with Vitaly Friedman." class="lazyload" data-src="https://computercoursesonline.com/wp-content/uploads/2025/04/measure-ux-and-design-impact-course.png"><br />
    </a><figcaption class="op-vertical-bottom">Meet <a href="https://measure-ux.com/">Measure UX and Design Impact</a>, a practical video course for designers and UX leads.</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"><br />
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>
<p><span class="book-cta__price"><span><span class=""><span class="currency-sign">$</span>&nbsp;<span>495<sup class="sup">.00</sup></span></span> <span class="book-cta__price--old"><span class="currency-sign">$</span>&nbsp;<span>799<sup class="sup">.00</sup></span></span></span></span><br />
<a href="https://smart-interface-design-patterns.thinkific.com/enroll/3081832?price_id=3951439" class="btn btn--full btn--medium btn--text-shadow"><br />
Get Video + UX Training</p>
<div></div>
<p></a></p>
<p class="book-cta__desc">25 video lessons (8h) + <a href="https://smashingconf.com/online-workshops/workshops/vitaly-friedman-impact-design/">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>250<sup class="sup">.00</sup></span></span><span class="book-cta__price--old"><span class="currency-sign">$</span>&nbsp;<span>350<sup class="sup">.00</sup></span></span></span></span></div>
<p><a href="https://smart-interface-design-patterns.thinkific.com/enroll/3081832?price_id=3950630" class="btn btn--full btn--medium btn--text-shadow"><br />
Get the video course</p>
<div></div>
<p></a></p>
<p class="book-cta__desc" data-audience="anonymous free supporter" data-remove="true">25 video lessons (8h). 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>
<p><span></span></div>
</div>
<h2 id="useful-resources">Useful Resources</h2>
<ul>
<li><a href="https://blog.scottlogic.com/2021/07/16/UX-Migration-Strategy.html">UX Migration Strategy For Legacy Apps</a>, by Tamara Chehayeb Makarem</li>
<li><a href="https://uxdesign.cc/to-improve-legacy-systems-sometimes-you-need-to-take-a-restoration-mindset-d72f7b69442f?sk=v2%2F524df15a-3aca-48f6-adff-98588a64bda0">How To Improve Legacy Systems</a>, by Christopher Wong</li>
<li><a href="https://medium.com/enterprise-ux/designing-with-legacy-d0e4bef0d9ea">Designing With Legacy</a>, by Peter Zalman</li>
<li><a href="https://medium.com/design-bootcamp/redesigning-a-legacy-system-for-a-large-organisation-5089429f7e2e">Redesigning A Large Legacy System</a>, by Pawel Halicki</li>
<li><a href="https://understandlegacycode.com">How To Manage Legacy Code</a>, by Nicolas Carlo</li>
<li><a href="https://www.koruux.com/blog/transforming-legacy-system/">How To Transform Legacy</a>, by Bansi Mehta</li>
<li><a href="https://www.debt.design/">Design Debt 101</a>, by Alicja Suska</li>
<li><a href="https://www.linkedin.com/posts/vitalyfriedman_ux-enterprise-activity-7128696386841120769-VcPD">Practical Guide To Enterprise UX</a>, by Yours Truly</li>
<li><a href="https://www.linkedin.com/posts/vitalyfriedman_ux-design-healthcare-activity-7124347175395815424-Q8Xn">Healthcare UX Design Playbook</a>, by Yours Truly</li>
</ul>
<div class="signature">
  <img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Smashing Editorial" width="35" height="46" loading="lazy" class="lazyload" data-src="https://www.smashingmagazine.com/images/logo/logo--red.png"><br />
  <span>(yk)</span>
</div>
</article>
]]></content:encoded>
					
					<wfw:commentRss>http://computercoursesonline.com/index.php/2026/04/10/how-to-improve-ux-in-legacy-systems/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Identifying Necessary Transparency Moments In Agentic AI (Part 1)</title>
		<link>http://computercoursesonline.com/index.php/2026/04/07/identifying-necessary-transparency-moments-in-agentic-ai-part-1/</link>
					<comments>http://computercoursesonline.com/index.php/2026/04/07/identifying-necessary-transparency-moments-in-agentic-ai-part-1/#respond</comments>
		
		<dc:creator><![CDATA[.]]></dc:creator>
		<pubDate>Tue, 07 Apr 2026 10:00:00 +0000</pubDate>
				<category><![CDATA[Ux]]></category>
		<guid isPermaLink="false">http://computercoursesonline.com/?p=1201</guid>

					<description><![CDATA[Identifying Necessary Transparency Moments In Agentic AI (Part 1) Identifying Necessary Transparency Moments In Agentic AI (Part 1) Victor Yocco 2026-04-07T10:00:00+00:00 2026-04-09T20:32:18+00:00 Designing for autonomous agents presents a unique frustration. We hand a complex task to an AI, it vanishes for 30 seconds (or 30 minutes), and then it returns with a result. We stare...]]></description>
										<content:encoded><![CDATA[<p>              <title>Identifying Necessary Transparency Moments In Agentic AI (Part 1)</title></p>
<article>
<header>
<h1>Identifying Necessary Transparency Moments In Agentic AI (Part 1)</h1>
<address>Victor Yocco</address>
<p>                  2026-04-07T10:00:00+00:00<br />
                  2026-04-09T20:32:18+00:00<br />
                </header>
<p>Designing for autonomous agents presents a unique frustration. We hand a complex task to an AI, it vanishes for 30 seconds (or 30 minutes), and then it returns with a result. We stare at the screen. Did it work? Did it hallucinate? Did it check the compliance database or skip that step?</p>
<p>We typically respond to this anxiety with one of two extremes. We either keep the system a <strong>Black Box</strong>, hiding everything to maintain simplicity, or we panic and provide a <strong>Data Dump</strong>, streaming every log line and API call to the user.</p>
<p>Neither approach directly addresses the nuance needed to provide users with the ideal level of transparency.</p>
<p>The <em>Black Box</em> leaves users feeling powerless. The <em>Data Dump</em> creates notification blindness, destroying the efficiency the agent promised to provide. Users ignore the constant stream of information until something breaks, at which point they lack the context to fix it.</p>
<p>We need an organized way to find the balance. In my previous article, “<a href="https://www.smashingmagazine.com/2026/02/designing-agentic-ai-practical-ux-patterns/">Designing For Agentic AI</a>”, we looked at interface elements that build trust, like showing the AI’s intended action beforehand (Intent Previews) and giving users control over how much the AI does on its own (Autonomy Dials). But knowing which elements to use is only part of the challenge. The harder question for designers is knowing when to use them.</p>
<p>How do you know which specific moment in a 30-second workflow requires an Intent Preview and which can be handled with a simple log entry?</p>
<p>This article provides a method to answer that question. We will walk through the <strong>Decision Node Audit</strong>. This process gets designers and engineers in the same room to map backend logic to the user interface. You will learn how to pinpoint the exact moments a user needs an update on what the AI is doing. We will also cover an <strong>Impact/Risk matrix</strong> that will help to prioritize which decision nodes to display and any associated design pattern to pair with that decision.</p>
<div data-audience="non-subscriber" data-remove="true" class="feature-panel-container">
<aside class="feature-panel">
<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>
<p><a data-instant href="smashing-workshops" class="btn btn--green btn--large">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"></p>
<div class="feature-panel-image">
<img loading="lazy" class="feature-panel-image-img lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Feature Panel" width="257" height="355" data-src="/images/smashing-cat/cat-scubadiving-panel.svg"></p>
</div>
<p></a>
</div>
</aside>
</div>
<h2 id="transparency-moments-a-case-study-example">Transparency Moments: A Case Study Example</h2>
<p>Consider Meridian (not real name), an insurance company that uses an agentic AI to process initial accident claims. The user uploads photos of vehicle damage and the police report. The agent then disappears for a minute before returning with a risk assessment and a proposed payout range.</p>
<p>Initially, Meridian’s interface simply showed Calculating Claim Status. Users grew frustrated. They had submitted several detailed documents and felt uncertain about whether the AI had even reviewed the police report, which contained mitigating circumstances. The Black Box created distrust.</p>
<p>To fix this, the design team conducted a Decision Node Audit. They found that the AI performed three distinct, probability-based steps, with numerous smaller steps embedded:</p>
<ul>
<li><strong>Image Analysis</strong><br />
The agent compared the damage photos against a database of typical car crash scenarios to estimate the repair cost. This involved a confidence score.</li>
<li><strong>Textual Review</strong><br />
It scanned the police report for keywords that affect liability (e.g., fault, weather conditions, sobriety). This involved a probability assessment of legal standing.</li>
<li><strong>Policy Cross Reference</strong><br />
It matched the claim details against the user’s specific policy terms, searching for exceptions or coverage limits. This also involved probabilistic matching.</li>
</ul>
<p>The team turned these steps into transparency moments. The interface sequence was updated to:</p>
<ul>
<li><strong>Assessing Damage Photos</strong>: Comparing against 500 vehicle impact profiles.</li>
<li><strong>Reviewing Police Report</strong>: Analyzing liability keywords and legal precedent.</li>
<li><strong>Verifying Policy Coverage</strong>: Checking for specific exclusions in your plan.</li>
</ul>
<p>The system still took the same amount of time, but the explicit communication about the agent’s internal workings restored user confidence. Users understood that the AI was performing the complex task it was designed for, and they knew exactly where to focus their attention if the final assessment seemed inaccurate. This design choice transformed a moment of anxiety into a moment of connection with the user.</p>
<h3 id="applying-the-impact-risk-matrix-what-we-chose-to-hide">Applying the Impact/Risk Matrix: What We Chose to Hide</h3>
<p>Most AI experiences have no shortage of events and decision nodes that could potentially be displayed during processing. One of the most critical outcomes of the audit was to decide what to keep invisible. In the Meridian example, the backend logs generated 50+ events per claim. We could have defaulted to displaying each event as they were processed as part of the UI. Instead, we applied the risk matrix to prune them:</p>
<ul>
<li><em>Log Event:</em> Pinging Server West-2 for redundancy check.
<ul>
<li><em>Filter Verdict:</em> <strong>Hide.</strong> (Low Stakes, High Technicality).</li>
</ul>
</li>
<li><em>Log Event:</em> Comparing repair estimate to BlueBook value.
<ul>
<li><em>Filter Verdict:</em> <strong>Show.</strong> (High Stakes, impacts user’s payout).</li>
</ul>
</li>
</ul>
<p>By cutting out the unnecessary details, the important information &mdash; like the coverage verification &mdash; was more impactful. We created an open interface and designed an open <em>experience</em>.</p>
<p>This approach uses the idea that people feel better about a service when they can see the work being done. By showing the specific steps (Assessing, Reviewing, Verifying), we changed a 30-second wait from a time of worry (<em>“Is it broken?”</em>) to a time of feeling like something valuable is being created (<em>“It’s thinking”</em>).</p>
<p>Let’s now take a closer look at how we can review the decision-making process in our products to identify key moments that require clear information.</p>
<div class="partners__lead-place"></div>
<h2 id="the-decision-node-audit">The Decision Node Audit</h2>
<p>Transparency fails when we treat it as a style choice rather than a functional requirement. We have a tendency to ask, <em>“What should the UI look like?”</em> before we ask, <em>“What is the agent actually deciding?”</em></p>
<p>The Decision Node Audit is a straightforward way to make AI systems easier to understand. It works by carefully mapping out the system’s internal process. The main goal is to find and clearly define the exact moments where the system stops following its set rules and instead makes a choice based on chance or estimation. By mapping this structure, creators can show these points of uncertainty directly to the people using the system. This changes system updates from being vague statements to specific, reliable reports about how the AI reached its conclusion.</p>
<p>In addition to the insurance case study above, I recently worked with a team building a procurement agent. The system reviewed vendor contracts and flagged risks. Originally, the screen displayed a simple progress bar: <em>“Reviewing contracts.”</em> Users hated it. Our research indicated they felt anxious about the legal implications of a missing clause.</p>
<p>We fixed this by conducting a Decision Node Audit. I’ve included a step-by-step checklist for conducting this audit at the conclusion of this article.</p>
<p>We ran a session with the engineers and outlined how the system works. We identified “Decision Points” &mdash; moments where the AI had to choose between two good options.</p>
<p>In standard computer programs, the process is clear: if A happens, then B will always happen. In AI systems, the process is often based on chance. The AI thinks A is probably the best choice, but it might only be 65% certain.</p>
<p>In the contract system, we found a moment when the AI checked the liability terms against our company rules. It was rarely a perfect match. The AI had to decide if a 90% match was good enough. This was a key decision point.</p>
<figure class="
  
    break-out article__image
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/identifying-necessary-transparency-moments-agentic-ai-part1/1-decision-node-structure.png"></p>
<p>    <img loading="lazy" width="800" height="437" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="The diagram shows how to connect a hidden system decision based on probability (an Ambiguity Point) to a visible moment of explanation for the user (a Transparency Moment)." class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/identifying-necessary-transparency-moments-agentic-ai-part1/1-decision-node-structure.png"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      <strong>Figure 1:</strong> This diagram shows how to connect a hidden system decision based on probability (an Ambiguity Point) to a visible moment of explanation for the user (a Transparency Moment). (<a href="https://files.smashing.media/articles/identifying-necessary-transparency-moments-agentic-ai-part1/1-decision-node-structure.png">Large preview</a>)<br />
    </figcaption></figure>
<p>Once we identified this node, we exposed it to the user. Instead of <em>“Reviewing contracts,”</em> the interface updated to say: <em>“Liability clause varies from standard template. Analyzing risk level.”</em></p>
<p>This specific update gave users confidence. They knew the agent checked the liability clause. They understood the reason for the delay and gained trust that the desired action was occurring on the back end. They also knew where to dig in deeper once the agent generated the contract.</p>
<p>To check how the AI makes decisions, you need to work closely with your engineers, product managers, business analysts, and key people who are making the choices (often hidden) that affect how the AI tool functions. Draw out the steps the tool takes. Mark every spot where the process changes direction because a probability is met. These are the places where you should focus on being more transparent.</p>
<p>As shown in Figure 2 below, the Decision Node Audit involves these steps:</p>
<ol>
<li>
<p><strong>Get the team together:</strong> Bring in the product owners, business analysts, designers, key decision-makers, and the engineers who built the AI. For example,</p>
<p>Think about a product team building an AI tool designed to review messy legal contracts. The team includes the UX designer, the product manager, the UX researcher, a practicing lawyer who acts as the subject-matter expert, and the backend engineer who wrote the text-analysis code.</p>
</li>
<li>
<p><strong>Draw the whole process:</strong> Document every step the AI takes, from the user’s first action to the final result.</p>
<p>The team stands at a whiteboard and sketches the entire sequence for a key workflow that involves the AI searching for a liability clause in a complex contract. The lawyer uploads a fifty-page PDF&nbsp;&rarr; The system converts the document into readable text.&nbsp;&rarr; The AI scans the pages for liability clauses.&nbsp;&rarr; The user waits.&nbsp;&rarr; Moments or minutes later, the tool highlights the found paragraphs in yellow on the user interface. They do this for many other workflows that the tool accommodates as well.</p>
</li>
<li>
<p><strong>Find where things are unclear:</strong> Look at the process map for any spot where the AI compares options or inputs that don’t have one perfect match.</p>
<p>The team looks at the whiteboard to spot the ambiguous steps. Converting an image to text follows strict rules. Finding a specific liability clause involves guesswork. Every firm writes these clauses differently, so the AI has to weigh multiple options and make a prediction instead of finding an exact word match.</p>
</li>
<li>
<p><strong>Identify the ‘best guess’ steps:</strong> For each unclear spot, check if the system uses a confidence score (for example, is it 85% sure?). These are the points where the AI makes a final choice.</p>
<p>The system has to guess (give a probability) which paragraph(s) closely resemble a standard liability clause. It assigns a confidence score to its best guess. That guess is a decision node. The interface needs to tell the lawyer it is highlighting a potential match, rather than stating it found the definitive clause.</p>
</li>
<li>
<p><strong>Examine the choice:</strong> For each choice point, figure out the specific internal math or comparison being done (e.g., matching a part of a contract to a policy or comparing a picture of a broken car to a library of damaged car photos).</p>
<p>The engineer explains that the system compares the various paragraphs against a database of standard liability clauses from past firm cases. It calculates a text similarity score to decide on a match based on probabilities.</p>
</li>
<li>
<p><strong>Write clear explanations:</strong> Create messages for the user that clearly describe the specific internal action happening when the AI makes a choice.</p>
<p>The content designer writes a specific message for this exact moment. The text reads: <em>Comparing document text to standard firm clauses to identify potential liability risks.</em></p>
</li>
<li>
<p><strong>Update the screen:</strong> Put these new, clear explanations into the user interface, replacing vague messages like <em>“Reviewing contracts.”</em></p>
<p>The design team removes the generic Processing PDF loading spinner. They insert the new explanation into a status bar located right above the document viewer while the AI thinks.</p>
</li>
<li>
<p><strong>Check for Trust:</strong> Make sure the new screen messages give users a simple reason for any wait time or result, which should make them feel more confident and trusting.</p>
</li>
</ol>
<figure class="
  
    break-out article__image
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/identifying-necessary-transparency-moments-agentic-ai-part1/2-decision-nodes-ai-legal-tool.png"></p>
<p>    <img loading="lazy" width="800" height="437" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Comic where a product team maps the decision nodes of an AI legal tool to design transparent interface messages." class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/identifying-necessary-transparency-moments-agentic-ai-part1/2-decision-nodes-ai-legal-tool.png"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      <strong>Figure 2:</strong> A product team maps the decision nodes of an AI legal tool to design transparent interface messages. (Comic generated using Google Gemini/Nano Banana) (<a href="https://files.smashing.media/articles/identifying-necessary-transparency-moments-agentic-ai-part1/2-decision-nodes-ai-legal-tool.png">Large preview</a>)<br />
    </figcaption></figure>
<h3 id="the-impact-risk-matrix">The Impact/Risk Matrix</h3>
<p>Once you look closely at the AI’s process, you’ll likely find many points where it makes a choice. An AI might make dozens of small choices for a single complex task. Showing them all creates too much unnecessary information. You need to group these choices.</p>
<p>You can use an <strong>Impact/Risk Matrix</strong> to sort these choices based on the types of action(s) the AI is taking. Here are examples of impact/risk matrices:</p>
<p>First, look for low-stakes and low-impact decisions.</p>
<p><strong>Low Stakes / Low Impact</strong></p>
<ul>
<li><em>Example:</em> Organizing a file structure or renaming a document.</li>
<li><em>Transparency Need:</em> Minimal. A subtle toast notification or a log entry suffices. Users can undo these actions easily.</li>
</ul>
<p>Then identify the high-stakes and high-impact decisions.</p>
<p><strong>High Stakes / High Impact</strong></p>
<ul>
<li><em>Example:</em> Rejecting a loan application or executing a stock trade.</li>
<li><em>Transparency Need:</em> High. These actions require Proof of Work. The system must demonstrate the rationale before or immediately as it acts.</li>
</ul>
<p>Consider a financial trading bot that treats all buy/sell orders the same. It executes a $5 trade with the same opacity as a $50,000 trade. Users might question whether the tool recognizes the potential impact of transparency on trading on a large dollar amount. They need the system to pause and show its work for the high-stakes trades. The solution is to  introduce a Reviewing Logic state for any transaction exceeding a specific dollar amount, allowing the user to see the factors driving the decision before execution.</p>
<h3 id="mapping-nodes-to-patterns-a-design-pattern-selection-rubric">Mapping Nodes to Patterns: A Design Pattern Selection Rubric</h3>
<p>Once you have identified your experience&rsquo;s key decision nodes, you must decide which UI pattern applies to each one you’ll display. In Designing For Agentic AI, we introduced patterns like the Intent Preview (for high-stakes control) and the Action Audit (for retrospective safety). The decisive factor in choosing between them is reversibility.</p>
<p>We filter every decision node through the impact matrix in order to assign the correct pattern:</p>
<p><strong>High Stakes &amp; Irreversible:</strong> These nodes require an Intent Preview. Because the user cannot easily undo the action (e.g., permanently deleting a database), the transparency moment must happen before execution. The system must pause, explain its intent, and require confirmation.</p>
<p><strong>High Stakes &amp; Reversible:</strong> These nodes can rely on the Action Audit &amp; Undo pattern. If the AI-powered sales agent moves a lead to a different pipeline, it can do so autonomously as long as it notifies the user and offers an immediate Undo button.</p>
<p>By strictly categorizing nodes this way, we avoid “alert fatigue.” We reserve the high-friction Intent Preview only for the truly irreversible moments, while relying on the Action Audit to maintain speed for everything else.</p>
<table class="tablesaw break-out">
<thead>
<tr>
<th></th>
<th>Reversible</th>
<th>Irreversible</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Low Impact</strong></td>
<td><strong>Type</strong>: Auto-Execute<br /><strong>UI</strong>: Passive Toast / Log<br /><em>Ex: Renaming a file</em></td>
<td><strong>Type</strong>: Confirm<br /><strong>UI</strong>: Simple Undo option<br /><em>Ex: Archiving an email</em></td>
</tr>
<tr>
<td><strong>High Impact</strong></td>
<td><strong>Type</strong>: Review<br /><strong>UI</strong>: Notification + Review Trail<br /><em>Ex: Sending a draft to a client</em></td>
<td><strong>Type</strong>: Intent preview<br /><strong>UI</strong>: Modal / Explicit Permission<br /><em>Ex: Deleting a server</em></td>
</tr>
</tbody>
</table>
<p><strong><em>Table 1:</em></strong> <em>The impact and reversibility matrix can then be used to map your moments of transparency to design patterns.</em></p>
<h3 id="qualitative-validation-the-wait-why-test">Qualitative Validation: “The Wait, Why?” Test</h3>
<p>You can identify potential nodes on a whiteboard, but you must validate them with human behavior. You need to verify whether your map matches the user’s mental model. I use a protocol called  the <strong>“Wait, Why?” Test</strong>.</p>
<p>Ask a user to watch the agent complete a task. Instruct them to speak aloud. Whenever they ask a question, <em>“Wait, why did it do that?”</em> or <em>“Is it stuck?”</em> or <em>“Did it hear me?”</em> &mdash; you mark a timestamp.</p>
<p>These questions signal user confusion. The user feels their control slipping away. For example, in a study for a healthcare scheduling assistant, users watched the agent book an appointment. The screen sat static for four seconds. Participants consistently asked, <em>“Is it checking my calendar or the doctor’s?”</em></p>
<figure class="
  
    break-out article__image
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/identifying-necessary-transparency-moments-agentic-ai-part1/3-wait-why-protocol.png"></p>
<p>    <img loading="lazy" width="800" height="437" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="The Wait, Why? Protocol. A timeline illustrating how silence creates anxiety. By mapping the specific moment users ask ‘Is it stuck?’, designers can insert transparency exactly when it is needed." class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/identifying-necessary-transparency-moments-agentic-ai-part1/3-wait-why-protocol.png"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      <strong>Figure 3:</strong> The Wait, Why? Protocol. A timeline illustrating how silence creates anxiety. By mapping the specific moment users ask ‘Is it stuck?’, designers can insert transparency exactly when it is needed. (<a href="https://files.smashing.media/articles/identifying-necessary-transparency-moments-agentic-ai-part1/3-wait-why-protocol.png">Large preview</a>)<br />
    </figcaption></figure>
<p>That question revealed a missing <strong>Transparency Moment</strong>. The system needed to split that four-second wait into two distinct steps: <em>“Checking your availability”</em> followed by <em>“Syncing with provider schedule.”</em></p>
<p>This small change reduced users’ expressed levels of anxiety.</p>
<p>Transparency fails when it only describes a system action. The interface must connect the technical process to the user’s specific goal. A screen displaying <em>“Checking your availability”</em> falls flat because it lacks context. The user understands that the AI is looking at a calendar, but they do not know why.</p>
<p>We must pair the action with the outcome. The system needs to split that four-second wait into two distinct steps. First, the interface displays <em>“Checking your calendar to find open times.”</em> Then it updates to <em>“Syncing with the provider’s schedule to secure your appointment.”</em> This grounds the technical process in the user’s actual life.</p>
<p>Consider an AI managing inventory for a local cafe. The system encounters a supply shortage. An interface reading “contacting vendor” or “reviewing options” creates anxiety. The manager wonders if the system is canceling the order or buying an expensive alternative. A better approach is to explain the intended result: <em>“Evaluating alternative suppliers to maintain your Friday delivery schedule.”</em> This tells the user exactly what the AI is trying to achieve.</p>
<div class="partners__lead-place"></div>
<h2 id="operationalizing-the-audit">Operationalizing the Audit</h2>
<p>You have completed the Decision Node Audit and filtered your list through the Impact and Risk Matrix. You now have a list of essential moments for being transparent. Next, you need to create them in the UI. This step requires teamwork across different departments. You can’t design transparency by yourself using a design tool. You need to understand how the system works behind the scenes.</p>
<p>Start with a <strong>Logic Review</strong>. Meet with your lead system designer. Bring your map of decision nodes. You need to confirm that the system can actually share these states. I often find that the technical system doesn’t reveal the exact state I want to show. The engineer might say the system just returns a general “working” status. You must push for a detailed update. You need the system to send a specific notice when it switches from reading text to checking rules. Without that technical connection, your design is impossible to build.</p>
<p>Next, involve the Content Design team. You have the technical reason for the AI’s action, but you need a clear, human-friendly explanation. Engineers provide the underlying process, but content designers provide the way it’s communicated. Do not write these messages alone. A developer might write <em>“Executing function 402,”</em> which is technically correct but meaningless to the user. A designer might write <em>“Thinking,”</em> which is friendly but too vague. A content strategist finds the right middle ground. They create specific phrases, such as <em>“Scanning for liability risks”</em>, that show the AI is working without confusing the user.</p>
<p>Finally, test the transparency of your messages. Don’t wait until the final product is built to see if the text works. I conduct comparison tests on simple prototypes where the only thing that changes is the status message. For example, I show one group (Group A) a message that says <em>“Verifying identity”</em> and another group (Group B) a message that says <em>“Checking government databases”</em> (these are made-up examples, but you understand the point). Then I ask them which AI feels safer. You’ll often discover that certain words cause worry, while others build trust. You must treat the wording as something you need to test and prove effective.</p>
<h3 id="how-this-changes-the-design-process">How This Changes the Design Process</h3>
<p>Conducting these audits has the potential to strengthen how a team works together. We stop handing off polished design files. We start using messy prototypes and shared spreadsheets. The core tool becomes a <strong>transparency matrix</strong>. Engineers and the content designers edit this spreadsheet together. They map the exact technical codes to the words the user will read.</p>
<p>Teams will experience friction during the logic review. Imagine a designer asking the engineer how the AI decides to decline a transaction submitted on an expense report. The engineer might say the backend only outputs a generic status code like <em>“Error: Missing Data”.</em> The designer states that this isn’t actionable information on the screen. The designer negotiates with the engineer to create a specific technical hook. The engineer writes a new rule so the system reports exactly what is missing, such as a missing receipt image.</p>
<p>Content designers act as translators during this phase. A developer might write a technically accurate string like <em>“Calculating confidence threshold for vendor matching.”</em> A content designer translates that string into a phrase that builds trust for a specific outcome. The strategist rewrites it as <em>“Comparing local vendor prices to secure your Friday delivery.”</em> The user understands the action and the result.</p>
<p>The entire cross-functional team sits in on user testing sessions. They watch a real person react to different status messages. Seeing a user panic because the screen says <em>“Executing trade”</em> forces the team to rethink their approach. The engineers and designers align on better wording. They change the text to <em>“Verifying sufficient funds”</em> before buying stock. Testing together guarantees the final interface serves both the system logic and the user’s peace of mind.</p>
<p>It does require time to incorporate these additional activities into the team’s calendar. However, the end result should be a team that communicates more openly, and users who have a better understanding of what their AI-powered tools are doing on their behalf (and why). This <strong>integrated approach</strong> is a cornerstone of designing truly trustworthy AI experiences.</p>
<h2 id="trust-is-a-design-choice">Trust Is A Design Choice</h2>
<p>We often view trust as an emotional byproduct of a good user experience. It is easier to view trust as a mechanical result of predictable communication.</p>
<p>We build trust by showing the right information at the right time. We destroy it by overwhelming the user or hiding the machinery completely.</p>
<p>Start with the Decision Node Audit, particularly for agentic AI tools and products. Find the moments where the system makes a judgment call. Map those moments to the Risk Matrix. If the stakes are high, open the box. Show the work.</p>
<p>In the next article, we will look at how to design these moments: how to write the copy, structure the UI, and handle the inevitable errors when the agent gets it wrong.</p>
<h2 id="appendix-the-decision-node-audit-checklist">Appendix: The Decision Node Audit Checklist</h2>
<p><strong>Phase 1: Setup and Mapping</strong></p>
<p><strong><img src="https://s.w.org/images/core/emoji/13.1.0/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Get the team together:</strong> Bring in the product owners, business analysts, designers, key decision-makers, and the engineers who built the AI.</p>
<p><em>Hint:</em> You need the engineers to explain the actual backend logic. Do not attempt this step alone.</p>
<p><strong><img src="https://s.w.org/images/core/emoji/13.1.0/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Draw the whole process:</strong> Document every step the AI takes, from the user’s first action to the final result.</p>
<p><em>Hint:</em> A physical whiteboard session often works best for drawing out these initial steps.</p>
<p><strong>Phase 2: Locating the Hidden Logic</strong></p>
<p><strong><img src="https://s.w.org/images/core/emoji/13.1.0/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Find where things are unclear:</strong> Look at the process map for any spot where the AI compares options or inputs that do not have one perfect match.</p>
<p><strong><img src="https://s.w.org/images/core/emoji/13.1.0/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Identify the best guess steps:</strong> For each unclear spot, check if the system uses a confidence score. For example, ask if the system is 85 percent sure. These are the points where the AI makes a final choice.</p>
<p><strong><img src="https://s.w.org/images/core/emoji/13.1.0/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Examine the choice:</strong> For each choice point, figure out the specific internal math or comparison being done. An example is matching a part of a contract to a policy. Another example involves comparing a picture of a broken car to a library of damaged car photos.</p>
<p><strong>Phase 3: Creating the User Experience</strong></p>
<p><strong><img src="https://s.w.org/images/core/emoji/13.1.0/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Write clear explanations:</strong> Create messages for the user that clearly describe the specific internal action happening when the AI makes a choice.</p>
<p><em>Hint:</em> Ground your messages in concrete reality. If an AI books a meeting with a client at a local cafe, tell the user the system is checking the cafe reservation system.</p>
<p><strong><img src="https://s.w.org/images/core/emoji/13.1.0/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Update the screen:</strong> Put these new, clear explanations into the user interface. Replace vague messages like Reviewing contracts with your specific explanations.</p>
<p><strong><img src="https://s.w.org/images/core/emoji/13.1.0/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Check for Trust:</strong> Make sure the new screen messages give users a simple reason for any wait time or result. This should make them feel confident and trusting.</p>
<p><em>Hint:</em> Test these messages with actual users to verify they understand the specific outcome being achieved.</p>
<div class="signature">
  <img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Smashing Editorial" width="35" height="46" loading="lazy" class="lazyload" data-src="https://www.smashingmagazine.com/images/logo/logo--red.png"><br />
  <span>(yk)</span>
</div>
</article>
]]></content:encoded>
					
					<wfw:commentRss>http://computercoursesonline.com/index.php/2026/04/07/identifying-necessary-transparency-moments-in-agentic-ai-part-1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>A Practical Guide To Design Principles</title>
		<link>http://computercoursesonline.com/index.php/2026/04/01/a-practical-guide-to-design-principles/</link>
					<comments>http://computercoursesonline.com/index.php/2026/04/01/a-practical-guide-to-design-principles/#respond</comments>
		
		<dc:creator><![CDATA[.]]></dc:creator>
		<pubDate>Wed, 01 Apr 2026 10:00:00 +0000</pubDate>
				<category><![CDATA[Ux]]></category>
		<guid isPermaLink="false">http://computercoursesonline.com/?p=1197</guid>

					<description><![CDATA[A Practical Guide To Design Principles A Practical Guide To Design Principles Vitaly Friedman 2026-04-01T10:00:00+00:00 2026-04-06T10:32:33+00:00 We often see design principles as rigid guidelines that dictate design decisions. But actually, they are an incredible tool to rally the team around a shared purpose and document the values and beliefs that an organization embodies. They align...]]></description>
										<content:encoded><![CDATA[<p>              <title>A Practical Guide To Design Principles</title></p>
<article>
<header>
<h1>A Practical Guide To Design Principles</h1>
<address>Vitaly Friedman</address>
<p>                  2026-04-01T10:00:00+00:00<br />
                  2026-04-06T10:32:33+00:00<br />
                </header>
<p>We often see design principles as rigid guidelines that dictate design decisions. But actually, they are an incredible tool to <strong>rally the team around a shared purpose</strong> and document the values and beliefs that an organization embodies.</p>
<p>They align teams and inform decision-making. They also keep us afloat amidst all the hype, big assumptions, desire for faster delivery, and AI workslop. But how do we choose the right ones, and how do we get started? Let’s find out.</p>
<h2 id="real-world-design-principles">Real-World Design Principles</h2>
<p>In times when we can generate any passable design and code within minutes, we need to decide better <strong>what’s worth designing and building</strong> &mdash; and what values we want our products to embody.</p>
<p>It’s similar to voice and tone. You might not design it intentionally, but then end users will define it for you. And so, without principles, many company initiatives are <strong>random, sporadic, ad-hoc</strong> &mdash; and feel vague, inconsistent, or simply dull to the outside world.</p>
<p><strong>Design principles</strong> are guidelines and design considerations that <a href="https://ixdf.org/literature/topics/design-principles">designers apply with discretion</a> &mdash; by default, without debating or discussing what has already been agreed upon.</p>
<p>One fantastic resource that I keep coming back to after all these years is Ben Brignell’s <a href="https://principles.design">Principles.design</a>. It has <strong>230 pointers for design principles and methods</strong>, searchable and tagged, covering everything from language and infrastructure to hardware and organizations.</p>
<h2 id="10-principles-of-good-design">10 Principles Of Good Design</h2>
<p>There is no shortage of principles out there. But the good ones are more than just being <em>visionary</em> &mdash; they <strong>have a point of view</strong>, and they explain what we <em>don’t do</em> as much as what we do. They also explain what <strong>we stand for</strong> in the world &mdash; beyond profits, stock prices, and all the hype and noise around us.</p>
<figure class="
  
    break-out article__image
  
  
  "></p>
<p>    <a href="https://www.vitsoe.com/gb/about/good-design#good-design-is-innovative"></p>
<p>    <img loading="lazy" width="800" height="559" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="10 legendary principles for good design" class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/stop-endless-debates-design-principles/1-principles-good-design.jpg"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      10 legendary principles for good design, by <a href="https://www.vitsoe.com/gb/about/good-design#good-design-is-innovative">Dieter Rams</a>. Still relevant, after all these years. (<a href="https://files.smashing.media/articles/stop-endless-debates-design-principles/1-principles-good-design.jpg">Large preview</a>)<br />
    </figcaption></figure>
<p>Many years ago, I encountered <a href="https://www.vitsoe.com/gb/about/good-design#good-design-is-innovative">Dieter Rams’ 10 principles of good design</a> (see above), a very <strong>humble, practical and tangible</strong> overview of principles that were informing, shaping, and guarding his design work at Braun.</p>
<p>There are <strong>no visionary claims</strong>, and no big bold statements: just a clear overview of what we do, and where our ambition and care lie for the products we are designing. It’s honest, sincere, and in many ways beautifully <strong>humane</strong>.</p>
<h3 id="examples-of-design-principles">Examples Of Design Principles</h3>
<p>There are plenty of <strong>wonderful examples</strong> that I keep close:</p>
<ul>
<li><a href="https://www.anthropic.com/constitution">Anthropic’s Constitution</a></li>
<li><a href="https://principles.design/examples/principles-of-product-design">Principles of Product Design</a>, by Joshua Porter</li>
<li><a href="https://principles.design/examples/20-guiding-principles-for-experience-design">Guiding Principles for Experience Design</a>, by Whitney Hess, PCC</li>
<li><a href="https://github.com/Heydon/principles-of-web-accessibility">Principles of Web Accessibility</a>, by Heydon Pickering</li>
<li><a href="https://humanebydesign.com">Humane by Design</a>, by Jon Yablonski</li>
<li><a href="https://principles.design/examples/designing-for-voice-interfaces">Designing Voice UX Principles</a>, by Brian Colcord</li>
<li><a href="https://linear.app/developers/aig">Agentic Design Principles</a>, by Linear</li>
<li><a href="https://www.intercom.com/blog/principles-bot-design/">AI Chatbot Design Principles</a>, by Emmet Connolly</li>
<li><a href="https://voiceprinciples.com">Voice UX Principles</a>, by Ben Sauer</li>
</ul>
<h3 id="design-principles-in-design-systems">Design Principles In Design Systems</h3>
<ul>
<li><a href="https://guides.18f.org/">18F</a></li>
<li><a href="https://styleguide.audi.com/document/2440#/-/experience-principles">Audi</a></li>
<li><a href="https://www.ibm.com/design/language/philosophy/principles/">Carbon (IBM)</a></li>
<li><a href="https://acorn.firefox.com/latest/get-started/firefox-design-principles-5ezPvNdo">Firefox</a></li>
<li><a href="https://www.gov.uk/guidance/government-design-principles">Gov.uk</a></li>
<li><a href="https://contentdesign.intuit.com/style-and-usage/our-principles/">Intuit</a></li>
<li><a href="https://service-manual.nhs.uk/design-system/design-principles">NHS</a></li>
<li><a href="https://nordhealth.design/principles/">Nordhealth</a></li>
<li><a href="https://base.uber.com/6d2425e9f/p/434f39-principles">Uber</a></li>
</ul>
<h2 id="how-to-establish-design-principles">How To Establish Design Principles</h2>
<p>Design principles can be personal, but usually they are committed to and shaped by the <strong>entire product team</strong>. Design principles <strong>aren’t just for designers</strong>. User’s experience is <em>everything</em> from performance to support to customer service, and ideally, participants would cover these areas as well.</p>
<p>In practice, though, establishing principles might feel incredibly challenging. They are abstract and fluffy and often ambiguous, and often very difficult to agree upon.</p>
<figure class="
  
    break-out article__image
  
  
  "></p>
<p>    <a href="https://www.figma.com/community/file/1051212964426062558"></p>
<p>    <img loading="lazy" width="800" height="461" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Workshop kit for a design principles workshop" class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/stop-endless-debates-design-principles/2-design-principles-workshop.png"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      <a href="https://www.figma.com/community/file/1051212964426062558">One of many workshop kits</a> for a design principles workshop. (<a href="https://files.smashing.media/articles/stop-endless-debates-design-principles/2-design-principles-workshop.png">Large preview</a>)<br />
    </figcaption></figure>
<p>You can get started with a <strong>simple 8-step workshop</strong> (inspired by <a href="https://medium.com/@marcintreder/design-system-sprint-4-design-principles-8efb22d8a208">Marcin Treder</a>, <a href="https://medium.com/design-bootcamp/design-principles-workshop-a-template-15c7c90458f2">Maria Meireles</a> and <a href="https://www.better.care/blog-en/establishing-design-principles-for-a-design-system-and-what-it-taught-us/">Better</a>):</p>
<ol>
<li><strong>Pre-session Research</strong><br />
Study how users speak about the products, what they appreciate, and the words they use.</li>
<li><strong>Get Into Principles Mode</strong><br />
Invite 6–8 participants, ask them to choose their favorite object, and describe it in 3 words.</li>
<li><strong>Product Analogies</strong><br />
Compare product to tangible items (e.g., ‘A Porsche 911’ or ‘a Braun audio system’).</li>
<li><strong>Extract Attributes</strong><br />
Individually, in silence, everyone writes 3–5 initial principles, which are then grouped by theme for review.</li>
<li><strong>Link Attributes To Research</strong><br />
Link attributes to actual user pain points or desires, to make sure they are grounded in reality.</li>
<li><strong>Value Statements</strong><br />
We write <em>‘We want X because of Y’</em> sentences that express the rationale behind our thinking.</li>
<li><strong>Move to Principles</strong><br />
Remove analogies to create enduring rules that will guide our design process.</li>
<li><strong>Reality Check</strong><br />
Search for both positive and negative examples in our products to see where principles are being met or ignored.</li>
</ol>
<figure class="
  
    break-out article__image
  
  
  "></p>
<p>    <a href="https://www.better.care/blog-en/establishing-design-principles-for-a-design-system-and-what-it-taught-us/"></p>
<p>    <img loading="lazy" width="800" height="492" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Variants of sentences for establishing design principles" class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/stop-endless-debates-design-principles/3-design-principles.jpg"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Voting for the most relevant sentences in keyword groups. From <a href="https://www.better.care/blog-en/establishing-design-principles-for-a-design-system-and-what-it-taught-us/">Better</a>. (<a href="https://files.smashing.media/articles/stop-endless-debates-design-principles/3-design-principles.jpg">Large preview</a>)<br />
    </figcaption></figure>
<h3 id="useful-starter-kits-for-principles-workshops">Useful Starter Kits For Principles Workshops</h3>
<ul>
<li><a href="https://medium.com/design-bootcamp/design-principles-workshop-a-template-15c7c90458f2">Design Principles Workshop (Figma Template)</a>, by Maria Meireles</li>
<li><a href="https://www.figma.com/community/file/1051212964426062558">Design Principles Workshop (FigJam Template)</a>, by Richard Picot</li>
<li><a href="https://miro.com/templates/design-principles-workshop/">How to Create Design Principles (Miro Workshop Template)</a>, by NanoGiants</li>
</ul>
<h2 id="wrapping-up">Wrapping Up</h2>
<p>Creating principles is only a small portion of the work; most work is about <strong>effectively sharing and embedding them</strong>. It’s difficult to get anywhere without finding ways to <strong>make design principles a default</strong> &mdash; by revisiting settings, templates, naming conventions, and output.</p>
<p>Principles help <strong>avoid endless discussions</strong> that often stem from personal preferences or taste. But design should not be a matter of taste; it must be guided by our goals and values. Design principles can help with just that.</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 100s of real-life examples and UX guidelines to design AI features that people actually use &mdash; with a <a href="https://smashingconf.com/online-workshops/workshops/ai-interfaces-vitaly-friedman/">live UX training</a> later this year. <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" width="800" height="414" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Design Patterns For AI Interfaces promo picture" class="lazyload" data-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"></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>
</p>
<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"><br />
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>
<p><span class="book-cta__price"><span><span class=""><span class="currency-sign">$</span>&nbsp;<span>450<sup class="sup">.00</sup></span></span> <span class="book-cta__price--old"><span class="currency-sign">$</span>&nbsp;<span>799<sup class="sup">.00</sup></span></span></span></span><br />
<a href="https://smart-interface-design-patterns.thinkific.com/enroll/3476562?price_id=4401578" class="btn btn--full btn--medium btn--text-shadow"><br />
Get Video + UX Training</p>
<div></div>
<p></a></p>
<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<sup class="sup">.00</sup></span></span><span class="book-cta__price--old"><span class="currency-sign">$</span>&nbsp;<span>395<sup class="sup">.00</sup></span></span></span></span></div>
<p><a href="https://smart-interface-design-patterns.thinkific.com/enroll/3476562?price_id=4397456" class="btn btn--full btn--medium btn--text-shadow"><br />
Get the video course</p>
<div></div>
<p></a></p>
<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>
<p><span></span></div>
</div>
<h2 id="useful-resources">Useful Resources</h2>
<ul>
<li><a href="https://principles.design">Design Principles Collection</a>, by Ben Brignell</li>
<li>“<a href="https://medium.com/@marcintreder/design-system-sprint-4-design-principles-8efb22d8a208">How To Establish Design Principles</a>”, by Marcin Treder</li>
<li>“<a href="https://www.better.care/blog-en/establishing-design-principles-for-a-design-system-and-what-it-taught-us/">Establishing Design Principles for a Design System and What It Taught Us</a>”, by Better Design Team</li>
<li><a href="https://principles.adactio.com">Design Principles</a>, by Jeremy Keith</li>
<li><a href="https://www.designprinciplesftw.com">Design Principles Collection</a>, by Gabriel Svennerberg</li>
<li><a href="https://medium.com/design-bootcamp/design-principles-workshop-a-template-15c7c90458f2">Design Principles Workshop (Figma Template)</a>, by Maria Meireles</li>
<li><a href="https://www.figma.com/community/file/1051212964426062558">Design Principles Workshop (FigJam Template)</a>, by Richard Picot</li>
<li><a href="https://miro.com/templates/design-principles-workshop/">How to Create Design Principles (Miro Workshop Template)</a>, by NanoGiants</li>
<li><a href="https://designsystems.surf/components/modal">Modals in Design Systems</a></li>
</ul>
<div class="signature">
  <img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Smashing Editorial" width="35" height="46" loading="lazy" class="lazyload" data-src="https://www.smashingmagazine.com/images/logo/logo--red.png"><br />
  <span>(yk)</span>
</div>
</article>
]]></content:encoded>
					
					<wfw:commentRss>http://computercoursesonline.com/index.php/2026/04/01/a-practical-guide-to-design-principles/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>The Site-Search Paradox: Why The Big Box Always Wins</title>
		<link>http://computercoursesonline.com/index.php/2026/03/26/the-site-search-paradox-why-the-big-box-always-wins/</link>
					<comments>http://computercoursesonline.com/index.php/2026/03/26/the-site-search-paradox-why-the-big-box-always-wins/#respond</comments>
		
		<dc:creator><![CDATA[.]]></dc:creator>
		<pubDate>Thu, 26 Mar 2026 10:00:00 +0000</pubDate>
				<category><![CDATA[Ux]]></category>
		<guid isPermaLink="false">http://computercoursesonline.com/?p=1199</guid>

					<description><![CDATA[The Site-Search Paradox: Why The Big Box Always Wins The Site-Search Paradox: Why The Big Box Always Wins Carrie Webster 2026-03-26T10:00:00+00:00 2026-04-06T10:32:33+00:00 In the early days of the web, the search bar was a luxury, added to a site once it became “too big” to navigate by clicking. We treated it like an index at...]]></description>
										<content:encoded><![CDATA[<p>              <title>The Site-Search Paradox: Why The Big Box Always Wins</title></p>
<article>
<header>
<h1>The Site-Search Paradox: Why The Big Box Always Wins</h1>
<address>Carrie Webster</address>
<p>                  2026-03-26T10:00:00+00:00<br />
                  2026-04-06T10:32:33+00:00<br />
                </header>
<p>In the early days of the web, the search bar was a luxury, added to a site once it became “too big” to navigate by clicking. We treated it like an index at the back of a book: a literal, alphabetical list of words that pointed to specific pages. If you typed the exact word the author used, you found what you needed. If you didn’t, you were met with a “0 Results Found” screen that felt like a digital dead end.</p>
<p>Twenty-five years later, we are still building search bars that act like 1990s index cards, even though the humans using them have been fundamentally rewired. Today, when a user lands on your site and can’t find what they need in the global navigation within seconds, they don’t try to learn your taxonomy. They head for the search box. But if that box fails them, and demands they use <em>your</em> specific brand vocabulary, or punishes them for a typo, they do something that should keep every UX designer awake at night. They leave your site, go to Google, and type <strong>site:yourwebsite.com [query]</strong>. Or, worse still, they just type in their query and end up on a competitor’s website. I personally use Google over a site’s search nearly every time.</p>
<p>This is the <strong>Site-Search Paradox</strong>. In an era where we have more data and better tools than ever, our internal search experiences are often so poor that users prefer to use a trillion-dollar global search engine to find a single page on a local site. As Information Architects and UX designers, we have to ask, why does the “Big Box” win, and how can we take our users back?</p>
<h2 id="the-syntax-tax-and-the-death-of-exact-match">The “Syntax Tax” And The Death Of Exact Match</h2>
<p>The primary reason site search fails is what I call the <strong>Syntax Tax</strong>. This is the cognitive load we place on users when we require them to guess the exact string of characters we’ve used in our database.</p>
<p>Research by <strong>Origin Growth</strong> on <a href="https://www.origingrowth.co.uk/blog/search-vs-navigate-how-people-behave-on-websites-do-they-search-or-do-they-navigate/"><strong>Search vs Navigate</strong></a> shows that roughly <strong>50% of users</strong> go straight to the search bar upon landing on a site. For example, when a user types “sofa” into a furniture site that has categorised everything under “couches,” and the site returns nothing, the user doesn’t think, <em>“Ah, I should try a synonym.”</em> They think, <em>“This site doesn’t have what I want.”</em></p>
<p>This is a failure of <strong>Information Architecture (IA)</strong>. We’ve built our systems to match <em>strings</em> (literal sequences of letters) rather than <em>things</em> (the concepts behind the words). When we force users to match our internal vocabulary, we are taxing their brainpower.</p>
<figure class="
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/site-search-paradox-why-big-box-always-wins/1-keyword-semantic-search.jpg"></p>
<p>    <img loading="lazy" width="800" height="1000" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Keyword Search vs Semantic Search" class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/site-search-paradox-why-big-box-always-wins/1-keyword-semantic-search.jpg"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Keyword Search vs. Semantic Search. (Image source: <a href="https://www.linkedin.com/posts/gerrid-smith_seo-digitalmarketing-marketing-activity-7349860105007341568-ipM_/">Gerrid Smith</a>) (<a href="https://files.smashing.media/articles/site-search-paradox-why-big-box-always-wins/1-keyword-semantic-search.jpg">Large preview</a>)<br />
    </figcaption></figure>
<div data-audience="non-subscriber" data-remove="true" class="feature-panel-container">
<aside class="feature-panel">
<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>
<p><a data-instant href="smashing-workshops" class="btn btn--green btn--large">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"></p>
<div class="feature-panel-image">
<img loading="lazy" class="feature-panel-image-img lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Feature Panel" width="257" height="355" data-src="/images/smashing-cat/cat-scubadiving-panel.svg"></p>
</div>
<p></a>
</div>
</aside>
</div>
<h2 id="why-google-wins-it-s-not-power-it-s-context">Why Google Wins: It’s Not Power, It’s Context</h2>
<p>It is easy to throw our hands up and say, “We can’t compete with Google’s engineering.” But Google’s success isn’t just about raw power; it’s about <strong>contextual understanding</strong>. While we often treat search as a technical utility, Google treats it as an IA challenge.</p>
<p>Data from the <strong>Baymard Institute</strong> reveals that <a href="https://baymard.com/blog/ecommerce-search-query-types"><strong>41% of e-commerce sites</strong></a> fail to support even basic symbols or abbreviations, and this often leads to <strong>users</strong> abandoning a site after a single failed search attempt. Google wins because it uses <a href="https://www.ibm.com/think/topics/stemming-lemmatization#:~:text=How%20lemmatization%20works,syntactic%20function%20in%20the%20sentence."><strong>stemming and lemmatization</strong></a> &mdash; IA techniques that recognize “running” and “ran” are the same intent. Most internal searches are “blind” to this context, treating “Running Shoe” and “Running Shoes” as entirely different entities.</p>
<blockquote class="pull-quote">
<p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aIf%20your%20site%20search%20can%e2%80%99t%20handle%20a%20simple%20plural%20or%20a%20common%20misspelling,%20you%20are%20effectively%20charging%20your%20users%20a%20tax%20for%20being%20human.%0a&amp;url=https://smashingmagazine.com%2f2026%2f03%2fsite-search-paradox-why-big-box-always-wins%2f"></p>
<p>If your site search can’t handle a simple plural or a common misspelling, you are effectively charging your users a tax for being human.</p>
<p>    </a>
  </p>
<div class="pull-quote__quotation">
<div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
</p></div>
</blockquote>
<figure class="
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/site-search-paradox-why-big-box-always-wins/2-user-query-friction-user-flow.jpg"></p>
<p>    <img loading="lazy" width="800" height="800" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="User Query Friction vs User Flow" class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/site-search-paradox-why-big-box-always-wins/2-user-query-friction-user-flow.jpg"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      User Query Friction vs. User Flow. (Image source: Created with Gemini) (<a href="https://files.smashing.media/articles/site-search-paradox-why-big-box-always-wins/2-user-query-friction-user-flow.jpg">Large preview</a>)<br />
    </figcaption></figure>
<h2 id="the-ux-of-maybe-designing-for-probabilistic-results">The UX Of “Maybe”: Designing For Probabilistic Results</h2>
<p>In traditional IA, we think in binaries: A page is either in a category, or it isn’t. A search result is either a match or it isn’t. Modern search, which users now expect, is <strong>probabilistic</strong>. It deals in “confidence levels.”</p>
<p>According to <strong>Forresters</strong>, users who use search are <a href="https://www.nosto.com/blog/ecommerce-site-search-statistics/#:~:text=Everyone’s%20searching%20for%20something%2C%20but,to%20convert%20and%20come%20back"><strong>2&ndash;3 times more likely to convert</strong></a> than those who don’t, <em>if</em> the search works. And <a href="https://www.nosto.com/blog/ecommerce-site-search-statistics/#:~:text=Everyone’s%20searching%20for%20something%2C%20but,to%20convert%20and%20come%20back"><strong>80% of users</strong></a> on e-commerce sites exit a site due to poor search results.</p>
<p>As designers, we rarely design for the middle ground. We design a “<strong>Results Found</strong>” page and a “<strong>No Results</strong>” page. We miss the most important state: <strong>The “Did You Mean?” State.</strong> A well-designed search interface should provide “Fuzzy” matches. Instead of a cold “0 Results Found” screen, we should be using our metadata to say, <em>“We didn’t find that in ‘Electronics,’ but we found 3 matches in ‘Accessories’.”</em> By designing for “Maybe,” we can keep the user in the flow.</p>
<h2 id="case-study-the-cost-of-invisible-content">Case Study: The Cost Of “Invisible” Content</h2>
<p>To understand why IA is the fuel for the search engine, we must look at how data is structured behind the scenes. In my 25 years of practice, I’ve seen that the “findability” of a page is directly tied to its structured metadata.</p>
<p>Consider a large-scale enterprise I worked with that had over 5,000 technical documents. Their internal search was returning irrelevant results because the “Title” tag of every document was the internal SKU number (e.g., “DOC-9928-X”) rather than the human-readable name.</p>
<p>By reviewing the search logs, we discovered that users were searching for “installation guide.” Because that phrase didn’t appear in the SKU-based title, the engine ignored the most relevant files. We implemented a <strong>Controlled Vocabulary</strong>, which was a set of standardised terms that mapped SKUs to human language. Within three months, the “Exit Rate” from the search page dropped by 40%. This wasn’t an algorithmic fix; it was an IA fix. It proves that a search engine is only as good as the map we give it.</p>
<div class="partners__lead-place"></div>
<h2 id="the-internal-language-gap">The Internal Language Gap</h2>
<p>Throughout my two decades in UX, I’ve noticed a recurring theme: internal teams often suffer from “The curse of knowledge.” We become so immersed in our own corporate vocabulary, or sometimes referred to as business jargon, that we forget the user doesn’t speak our language.</p>
<p>I once worked with a financial institution that was frustrated by high call volumes to their support centre. Users were complaining they couldn’t find “loan payoff” information on the site. When we looked at the search logs, “loan payoff” was the #1 searched term that resulted in zero hits.</p>
<p>Why? Because the institution’s IA team had labelled every relevant page under the formal term “Loan Release.” To the bank, a “payoff” was a process, but a “Loan Release” was the legal document that was the “thing” in the database. Because the search engine was looking for literal character strings, it refused to connect the user’s desperate need with the company’s official solution.</p>
<p>This is where the IA professional must act as a translator. By simply adding “loan payoff” as a hidden metadata keyword to the Loan Release pages, we solved a multi-million dollar support problem. We didn’t need a faster server; we needed <strong>a more empathetic taxonomy</strong>.</p>
<h2 id="the-4-step-site-search-audit-framework">The 4-step Site-search Audit Framework</h2>
<p>If you want to reclaim your search box from Google, you cannot simply “set it and forget it.” You must treat search as a living product. Here is the framework I use to audit and optimise search experiences:</p>
<h3 id="phase-1-the-zero-result-audit">Phase 1: The “Zero-result” Audit</h3>
<p>Pull your search logs from the last 90 days. Filter for all queries that returned zero results. Group these into three buckets:</p>
<ul>
<li><strong>True gaps</strong><br />
Content the user wants that you simply don’t have (a signal for your content strategy team).</li>
<li><strong>Synonym gaps</strong><br />
Content you have, but described in words the user doesn’t use (e.g., “Sofa” vs “Couch”).</li>
<li><strong>Format gaps</strong><br />
The user is looking for a “video” or “PDF,” but your search only indexes HTML text.</li>
</ul>
<h3 id="phase-2-query-intent-mapping">Phase 2: Query Intent Mapping</h3>
<p>Analyse the <em>top 50</em> most common queries. Are they <strong>Navigational</strong> (looking for a specific page), <strong>Informational</strong> (looking for “how to”), or <strong>Transactional</strong> (looking for a specific product)? Your search UI should look different for each. A navigational search should “Quick-Link” the user directly to the destination, bypassing the results page entirely.</p>
<h3 id="phase-3-the-fuzzy-matching-test">Phase 3: The “Fuzzy” Matching Test</h3>
<p>Intentionally mistype your top 10 products. Use plurals, common typos, and American vs. British English spellings (e.g., “Color” vs. “Colour”). If your search fails these tests, your engine lacks “stemming” support. This is a technical requirement you must advocate for to your engineering team.</p>
<h3 id="phase-4-scoping-and-filtering-ux">Phase 4: Scoping And Filtering UX</h3>
<p>Look at your results page. Does it offer filters that actually make sense? If a user searches for “shoes,&rdquo; they should see filters for <em>Size</em> and <em>Colour</em>. Generic filters can be as bad as no filters.</p>
<h2 id="reclaiming-the-search-box-a-strategy-for-ia-professionals">Reclaiming The Search Box: A Strategy For IA Professionals</h2>
<p>To stop the exodus to Google, we must move beyond the “Box” and look at the <strong>scaffolding</strong>.</p>
<p><strong>Step A: Implement semantic scaffolding.</strong><br />
Don’t just return a list of links. Use your IA to provide context. If a user searches for a product, show them the product, but also show them the <em>manual</em>, the <em>FAQs</em>, and the <em>related parts</em>. This “associative” search mimics how the human brain works and how Google operates.</p>
<p><strong>Step B: Stop being a librarian, start being a concierge.</strong><br />
A librarian tells you exactly where the book is on the shelf. A concierge listens to what you want to achieve and gives you a recommendation. Your search bar should use predictive text not just to complete words, but to <strong>suggest intentions</strong>.</p>
<h2 id="using-a-google-powered-search-bar">Using A Google-powered Search Bar</h2>
<p>Using a “Google-powered” search bar, as seen on the <strong>University of Chicago</strong> website, is essentially an admission that a site’s internal organisation has become too complex for its own navigation to handle. While it is a quick “fix” for massive institutions to ensure users find <em>something</em>, it is generally a poor choice for businesses with deep content.</p>
<figure class="
  
    break-out article__image
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/site-search-paradox-why-big-box-always-wins/3-university-chicago-website.png"></p>
<p>    <img loading="lazy" width="800" height="508" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Example of a university website using Google-powered search." class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/site-search-paradox-why-big-box-always-wins/3-university-chicago-website.png"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Example of a university website using Google-powered search. (Source: <a href="https://www.uchicago.edu/en">University of Chicago</a>) (<a href="https://files.smashing.media/articles/site-search-paradox-why-big-box-always-wins/3-university-chicago-website.png">Large preview</a>)<br />
    </figcaption></figure>
<p>By delegating the search to Google, you surrender the user experience to an outside algorithm. You lose the ability to promote specific products, you expose your users to third-party ads, and you train your customers to leave your ecosystem the moment they need help. For a business, search should be a curated conversation that guides a customer toward a goal, not a generic list of links that pushes them back to the open web.</p>
<figure class="
  
  
  "></p>
<p>    <a href="https://files.smashing.media/articles/site-search-paradox-why-big-box-always-wins/4-search-results.jpg"></p>
<p>    <img loading="lazy" width="800" height="817" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Shows search results with useful options when there are no exact matches. Additional suggestions are provided, including a “Did you mean” feature to help connect users with similar items." class="lazyload" data-src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/site-search-paradox-why-big-box-always-wins/4-search-results.jpg"></p>
<p>    </a><figcaption class="op-vertical-bottom">
      Shows search results with useful options when there are no exact matches. Additional suggestions are provided, including a “Did you mean” feature to help connect users with similar items. (Image source: <a href="https://www.crateandbarrel.com/">Crate &amp; Barrel</a>) (<a href="https://files.smashing.media/articles/site-search-paradox-why-big-box-always-wins/4-search-results.jpg">Large preview</a>)<br />
    </figcaption></figure>
<div class="partners__lead-place"></div>
<h2 id="the-simple-search-ux-checklist">The Simple Search UX Checklist</h2>
<p>Here is a final checklist for reference when you are building the search experience for your users. Work with your product team to ensure you are engaging with the right team members.</p>
<ul>
<li><strong>Kill the dead-end.</strong><br />
Never just say “<strong>No results found</strong>.” If an exact match isn’t there, suggest a similar category, a popular product, or a way to contact support.</li>
<li><strong>Fix “almost” matches.</strong><br />
Make sure the search can handle plurals (like “plant” vs. “plants”) and common typos. Users shouldn’t be punished for a slip of the thumb.</li>
<li><strong>Predict the user’s goal.</strong><br />
Use an “auto-suggest” menu to show helpful actions (like “Track my order”) or categories, not just a list of words.</li>
<li><strong>Talk like a human.</strong><br />
Look at your search logs to see the words people actually use. If they type “couch” and you call it “sofa,” create a bridge in the background so they find what they need anyway.</li>
<li><strong>Smart filtering.</strong><br />
Only show filters that matter. If someone searches for “shoes,” show them size and color filters, not a generic list that applies to the whole site.</li>
<li><strong>Show, don’t just list.</strong><br />
Use small thumbnails and clear labels in the search results so users can see the difference between a product, a blog post, and a help article at a glance.</li>
<li><strong>Speed is trust.</strong><br />
If the search takes more than a second, use a loading animation. If it’s too slow, people will immediately go back to Google.</li>
<li><strong>Check the “failure” logs.</strong><br />
Once a month, look at what people searched for that returned zero results. This is your “to-do list” for fixing your site’s navigation.</li>
</ul>
<h2 id="conclusion-the-search-bar-is-a-conversation">Conclusion: The Search Bar Is A Conversation</h2>
<p>The search box is the only place on your site where the user tells us exactly, in their own words, what they want. When we fail to understand those words, when we let the “Big Box” of Google do the work for us, we aren’t just losing a page view. We are losing the opportunity to prove that we <strong>understand</strong> our customers.</p>
<blockquote class="pull-quote">
<p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aSuccess%20in%20modern%20UX%20isn%e2%80%99t%20about%20having%20the%20most%20content;%20it%e2%80%99s%20about%20having%20the%20most%20findable%20content.%20It%e2%80%99s%20time%20to%20stop%20taxing%20users%20for%20their%20syntax%20and%20start%20designing%20for%20their%20intent.%0a&amp;url=https://smashingmagazine.com%2f2026%2f03%2fsite-search-paradox-why-big-box-always-wins%2f"></p>
<p>Success in modern UX isn’t about having the most content; it’s about having the most findable content. It’s time to stop taxing users for their syntax and start designing for their intent.</p>
<p>    </a>
  </p>
<div class="pull-quote__quotation">
<div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
</p></div>
</blockquote>
<p>By moving from literal string matching to semantic understanding, and by supporting our search engines with robust, human-centered Information Architecture, we can finally close the gap.</p>
<div class="signature">
  <img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Smashing Editorial" width="35" height="46" loading="lazy" class="lazyload" data-src="https://www.smashingmagazine.com/images/logo/logo--red.png"><br />
  <span>(yk)</span>
</div>
</article>
]]></content:encoded>
					
					<wfw:commentRss>http://computercoursesonline.com/index.php/2026/03/26/the-site-search-paradox-why-the-big-box-always-wins/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
