<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[UX Research in the Wild]]></title><description><![CDATA[Want reliable resources from reputable UX researchers? Join our community to access carefully curated articles, templates, tutorials, and tools proven to work in the real world.]]></description><link>https://trevorcalabro.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!pKsW!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee87cc4f-5c9a-40f0-9c25-8a7df25bf2e1_1067x1067.png</url><title>UX Research in the Wild</title><link>https://trevorcalabro.substack.com</link></image><generator>Substack</generator><lastBuildDate>Wed, 20 May 2026 11:37:21 GMT</lastBuildDate><atom:link href="https://trevorcalabro.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Trevor Calabro]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[UXResearchInTheWild@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[UXResearchInTheWild@substack.com]]></itunes:email><itunes:name><![CDATA[Trevor Calabro]]></itunes:name></itunes:owner><itunes:author><![CDATA[Trevor Calabro]]></itunes:author><googleplay:owner><![CDATA[UXResearchInTheWild@substack.com]]></googleplay:owner><googleplay:email><![CDATA[UXResearchInTheWild@substack.com]]></googleplay:email><googleplay:author><![CDATA[Trevor Calabro]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[How Primary Nav Bars Should Work]]></title><description><![CDATA[A Comprehensive Best Practices Document]]></description><link>https://trevorcalabro.substack.com/p/primary-navigation-interaction-guide</link><guid isPermaLink="false">https://trevorcalabro.substack.com/p/primary-navigation-interaction-guide</guid><dc:creator><![CDATA[Trevor Calabro]]></dc:creator><pubDate>Sat, 16 May 2026 13:03:23 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a5d7674b-bb97-4da2-b38d-a7596c5ddb3d_694x619.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Summary: </strong>This week&#8217;s article is based on official documentation that explains how primary navigation bars should work. This is all you&#8217;ll ever need to know about proper interaction design for primary navigation bars.</p><div><hr></div><p>Over the last 10+ years, I&#8217;ve written essentially the same series of documents for different orgs around interaction design and accessibility best practices for primary navigation bars.</p><p>I finally sat down and combined all those documents into this master best-practice guide. This is intended to be more of a reference guide, and I&#8217;m happy to share it because, if you&#8217;re anything like me, you hate wasting time going back and forth with your front-end devs on all the little nuances that go into doing something as foundational as a nav bar.</p><p>My hope is that many of you bookmark this article, just like I will, and send the link anytime you need to share guidance with others.</p><p><strong>This guide details the following topics:</strong></p><ul><li><p>Navigation bar interaction behavior</p></li><li><p>Dropdowns, mega menus, and mobile menus</p></li><li><p>How to think about hover</p></li><li><p>How to handle parent-child relationships</p></li><li><p>All the different UI component interaction states</p></li><li><p>Keyboard and screen-reader navigation</p></li><li><p>Proper semantic HTML and ARIA execution</p></li></ul><div class="callout-block" data-callout="true"><h3>&#128204;<strong> 2 Ways to Use This Document</strong></h3><ol><li><p><strong>As a reference document:</strong> The best way to use this document is to press <strong>Control + F</strong> and find specific guidance around the primary navigation bar topics you care about.</p></li><li><p><strong>As source material for Gen AI tools:</strong> This kind of document has also been used as source material for <strong>Gen AI</strong> tools that generate UI designs, interaction specs, or front-end code.<br>When the tool has clear guidance up front, the first output is more likely to follow better primary navigation bar behavior around links, buttons, hover, focus, keyboard interaction, semantic HTML, and ARIA.</p></li></ol><p>If you want more general information about how to design a primary navigation bar, start with this article: <a href="https://trevorcalabro.substack.com/p/why-your-navigation-sucks">Why Your Navigation Stinks</a>.</p></div><div><hr></div><h1>The Purpose of This Guide</h1><p>This document defines interaction design standards for the UI pattern <strong>primary navigation bar.</strong> Primary navigation bars must help users move between major feature areas, understand where they are, and predict what will happen when they activate an item. The interaction model should remain consistent across desktop and mobile, even when the layout changes across breakpoints.</p><div class="pullquote"><p>The goal is to make primary navigation predictable, scannable, keyboard operable, and understandable without requiring users to guess how each item behaves.</p></div><div class="callout-block" data-callout="true"><p><strong>&#9888;&#65039; Disclaimer: </strong>For this pattern guide, <strong>&#8220;</strong><em><strong>activate&#8221; </strong></em>means an intentional user action using a mouse, touchpad, touch gesture, Enter key, Space key, or similar input method, depending on the item type.</p><p><strong>Hover is not activation. </strong>Hover may provide visual feedback, but in this navigation pattern, hover must not open, close, reveal, or dismiss navigation menus.</p><p>This is intentionally stricter than some general web guidance because this navigation system prioritizes predictable behavior across cursor, keyboard, and touch input.</p></div><h1>2. Core Principles</h1><h3>2.1 Use clear information scent</h3><p>Items must help users predict what they will find or what will happen after activating them.</p><p><strong>A primary navigation item should clearly communicate one of the following:</strong></p><ul><li><p>A destination</p></li><li><p>A major feature area</p></li><li><p>A user task</p></li><li><p>A meaningful content category</p></li><li><p>A parent category that exposes related child destinations</p></li></ul><p>Item labels should match the language users expect within the web application. They should not rely on internal team names, implementation structure, roadmap language, or terminology that only makes sense to the organization.</p><div class="callout-block" data-callout="true"><p>&#10060; Avoid labels that are too broad, abstract, or internally meaningful to create a clear expectation for users. If a label could reasonably mean several different things, it likely does not provide enough information scent.</p></div><p>A user should be able to scan the primary navigation and make a confident choice without needing to pause and interpret what the item might contain.</p><h3>2.2 Support recognition over recall</h3><p>Primary navigation should not require users to remember where something lives from prior experience.</p><p><strong>Users should be able to recognize available paths by scanning:</strong></p><ul><li><p>Visible labels</p></li><li><p>Group headings</p></li><li><p>Dropdown indicators</p></li><li><p>Parent-child relationships</p></li><li><p>Current page indicators</p></li><li><p>Visual grouping inside dropdown menus or mega menus</p></li></ul><p>Do not rely on hidden meaning, icon familiarity, or prior training. If an item opens a child menu, the UI should make that behavior visible. If an item sends the user directly to a page, the UI should make that behavior feel different from a Menu item.</p><h3>2.3 Maintain consistent interaction behavior</h3><p>Items with the same function must behave the same way throughout the application.</p><p><strong>Primary navigation items should follow one of two interaction models:</strong></p><ol><li><p>Destination behavior: The item takes the user directly to a page or route.</p></li><li><p>Disclosure behavior: The item opens or closes a child menu.</p></li></ol><p><strong>&#10004;&#65039; Requirements:</strong></p><ul><li><p>Destination items use link behavior.</p></li><li><p>Menu items use button behavior.</p></li><li><p>Menu items include a dropdown indicator.</p></li><li><p>Destination items do not include a dropdown indicator.</p></li><li><p>Parent items that expose child menus should not also act as direct destination links.</p></li><li><p>Parent landing pages should be represented as child overview links when needed.</p></li><li><p>Menus must open only through intentional activation.</p></li><li><p>Menus must close only through intentional dismissal behavior.</p></li><li><p>Hover must not open, close, reveal, or dismiss a menu in this navigation pattern.</p></li></ul><div class="callout-block" data-callout="true"><p>&#10060; Avoid interaction ambiguity. A user should not have to determine whether activating the label does one thing and activating the dropdown indicator does another.</p></div><h3>2.4 Keep the hierarchy as flat as practical</h3><p>Primary navigation should reduce unnecessary hierarchy.</p><p>Each additional level creates more interaction cost and more abstraction for the user to understand. A flatter structure makes it easier for users to scan available destinations and make a confident choice.</p><div class="callout-block" data-callout="true"><p>&#10060; This does not mean every destination must appear at the top level. It means child menus should expose terminal nodes clearly and avoid unnecessary nested categories.</p></div><p><strong>A good primary navigation structure should:</strong></p><ul><li><p>Make major feature areas visible.</p></li><li><p>Group related destinations under meaningful parent items.</p></li><li><p>Expose terminal nodes inside dropdown menus or mega menus.</p></li><li><p>Avoid forcing users through multiple nested levels before they can reach a destination.</p></li></ul><h1>3. Primary Navigation Anatomy</h1><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mzCb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb03ce81d-80d4-40cc-96d7-a100f0e7abaa_1766x134.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mzCb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb03ce81d-80d4-40cc-96d7-a100f0e7abaa_1766x134.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mzCb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb03ce81d-80d4-40cc-96d7-a100f0e7abaa_1766x134.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mzCb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb03ce81d-80d4-40cc-96d7-a100f0e7abaa_1766x134.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mzCb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb03ce81d-80d4-40cc-96d7-a100f0e7abaa_1766x134.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mzCb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb03ce81d-80d4-40cc-96d7-a100f0e7abaa_1766x134.jpeg" width="1456" height="110" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b03ce81d-80d4-40cc-96d7-a100f0e7abaa_1766x134.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:110,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:18872,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/197846073?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb03ce81d-80d4-40cc-96d7-a100f0e7abaa_1766x134.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mzCb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb03ce81d-80d4-40cc-96d7-a100f0e7abaa_1766x134.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mzCb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb03ce81d-80d4-40cc-96d7-a100f0e7abaa_1766x134.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mzCb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb03ce81d-80d4-40cc-96d7-a100f0e7abaa_1766x134.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mzCb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb03ce81d-80d4-40cc-96d7-a100f0e7abaa_1766x134.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h3>3.1 Navigation landmark</h3><p>Primary navigation must be represented as a semantic navigation landmark.</p><p>From an interaction design perspective, this matters because users of assistive technology need a predictable way to identify and move to the primary navigation region.</p><p><strong>&#10004;&#65039; Recommended default:</strong></p><pre><code><code>&lt;nav&gt;
  &lt;!-- Primary navigation items --&gt;
&lt;/nav&gt;</code></code></pre><p>If the page includes only one navigation landmark, an accessible name is optional. If the page includes more than one navigation landmark, each landmark should have a clear accessible name.</p><p>Use distinct names when navigation landmarks serve different purposes, such as Primary, Utility, Breadcrumb, or Footer.</p><p>If the same navigation is repeated in more than one place with identical links, the repeated landmarks may use the same accessible name.</p><p><strong>&#10004;&#65039; Preferred naming order:</strong></p><ol><li><p>Use a visible or visually hidden heading with <code>aria-labelledby</code>.</p></li><li><p>Use <code>aria-label</code> only when no visible or referenceable label is available.</p></li></ol><p><strong>Example when a referenceable heading exists:</strong></p><pre><code><code>&lt;h2 id="primary-navigation-heading" class="visually-hidden"&gt;Primary&lt;/h2&gt;

&lt;nav aria-labelledby="primary-navigation-heading"&gt;
  &lt;!-- Primary navigation items --&gt;
&lt;/nav&gt;</code></code></pre><p><strong>Example when no visible or referenceable label exists:</strong></p><pre><code><code>&lt;nav aria-label="Primary"&gt;
  &lt;!-- Primary navigation items --&gt;
&lt;/nav&gt;</code></code></pre><p>Do not use <code>aria-label=&#8221;Primary navigation&#8221; </code>as the default. This is usually redundant rather than a severe accessibility failure, because screen readers already announce the landmark as navigation. The accessible name should usually identify which navigation it is, not repeat the word navigation.</p><h3>3.2 Navigation list</h3><p>Primary navigation should use a list structure when presenting a set of related items.</p><p><strong>&#10004;&#65039; Recommended structure:</strong></p><ul><li><p><code>&lt;nav&gt; </code>for the navigation landmark</p></li><li><p><code>&lt;ul&gt; </code>and<code> &lt;li&gt; </code>for the item collection</p></li><li><p><code>&lt;a&gt; </code>for destination items</p></li><li><p><code>&lt;button type=&#8221;button&#8221;&gt; </code>for Menu items</p></li></ul><p><strong>The interaction design rule is straightforward:</strong></p><ul><li><p>If the item moves the user to a destination, it is a link.</p></li><li><p>If the item opens or closes a child menu, it is a button.</p></li></ul><p>This distinction should be reflected in both the interaction behavior and the visual design.</p><h3>3.3 Item types</h3><p>Primary navigation items must be one of two types.</p><h4><strong>1. Destination item</strong></h4><p>A destination item takes the user directly to a page or route.</p><p><strong>&#10004;&#65039; Interaction requirements:</strong></p><ul><li><p>Activating the item navigates to the destination.</p></li><li><p>The item does not open a child menu.</p></li><li><p>The item does not include a dropdown indicator.</p></li><li><p>The item may show current page state if it represents the currently displayed page or route.</p></li><li><p>Hover may show an over state, but it must not trigger navigation.</p></li></ul><p><strong>&#10004;&#65039; Implementation requirement:</strong></p><ul><li><p>Use an<code> &lt;a&gt; </code>element.</p></li></ul><p><strong>Example:</strong></p><pre><code><code>&lt;a href="/path"&gt;Item label&lt;/a&gt;</code></code></pre><h4><strong>2. Menu item</strong></h4><p>A Menu item opens or closes a child menu.</p><p><strong>&#10004;&#65039; Interaction requirements:</strong></p><ul><li><p>Activating the item opens the child menu.</p></li><li><p>Activating the same item again closes the child menu.</p></li><li><p>Hovering over the item must not open the child menu in this pattern.</p></li><li><p>Hovering out of the item must not close the child menu in this pattern.</p></li><li><p>The item includes a dropdown indicator.</p></li><li><p>The item has distinct expanded and collapsed states.</p></li><li><p>The child menu appears in a predictable spatial relationship to the item.</p></li><li><p>The child menu can be dismissed through expected dismissal behaviors.</p></li></ul><p><strong>&#10004;&#65039; Implementation requirements:</strong></p><ul><li><p>Use a<code> &lt;button type=&#8221;button&#8221;&gt; </code>element.</p></li><li><p>Use <code>aria-expanded</code>.</p></li><li><p>Use <code>aria-controls</code> only when the control-to-menu relationship needs to be explicit. <code>aria-expanded</code> is the essential ARIA state for the Menu item.</p></li></ul><p>Example:</p><pre><code><code>&lt;button type="button" aria-expanded="false"&gt;
  Item label
&lt;/button&gt;</code></code></pre><h3>3.4 Stronger code example</h3><p>The following example shows the preferred structure for a primary navigation landmark, one current destination item, and one Menu item with a child menu.</p><pre><code><code>&lt;h2 id="primary-navigation-heading" class="visually-hidden"&gt;Primary&lt;/h2&gt;

&lt;nav aria-labelledby="primary-navigation-heading"&gt;
  &lt;ul class="primary-nav"&gt;
    &lt;li&gt;
      &lt;a href="/dashboard" aria-current="page"&gt;Dashboard&lt;/a&gt;
    &lt;/li&gt;

    &lt;li&gt;
      &lt;button
        type="button"
        aria-expanded="false"
        aria-controls="reports-menu"
      &gt;
        Reports
        &lt;span aria-hidden="true"&gt;&#9662;&lt;/span&gt;
      &lt;/button&gt;

      &lt;ul id="reports-menu" hidden&gt;
        &lt;li&gt;&lt;a href="/reports/overview"&gt;Reports overview&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="/reports/activity"&gt;Activity reports&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="/reports/compliance"&gt;Compliance reports&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/li&gt;
  &lt;/ul&gt;
&lt;/nav&gt;</code></code></pre><p><strong>This example demonstrates the expected implementation model:</strong></p><ul><li><p>The navigation region uses a semantic <code>&lt;nav&gt;</code> landmark.</p></li><li><p>The landmark is named by a referenceable heading.</p></li><li><p>The item collection uses a list structure.</p></li><li><p>Destination items use native links.</p></li><li><p>Menu items use native buttons.</p></li><li><p>The disclosure button uses <code>type=&#8221;button&#8221;</code>.</p></li><li><p>The disclosure button exposes its open or closed state with <code>aria-expanded</code>.</p></li><li><p>This example includes <code>aria-controls</code> because the controlled submenu has a stable id. <code>aria-expanded</code> remains the essential ARIA state for the disclosure button. If <code>aria-controls</code> is used, it must reference the menu controlled by the disclosure button.</p></li><li><p>The closed child menu uses hidden so it is removed from the visual interface and the accessibility tree.</p></li><li><p>When toggling a menu, update hidden, keyboard focusability, and <code>aria-expanded </code>together so the visual state, keyboard state, and accessibility tree stay synchronized.</p></li><li><p>If the menu is animated, the transition must not leave focusable content hidden from sighted users or visible content hidden from assistive technologies. Animation cannot break synchronization between visual state, focusability, hidden, and <code>aria-expanded</code>.</p></li><li><p>The dropdown indicator is decorative and hidden from assistive technology with<code> aria-hidden=&#8221;true&#8221;</code>.</p></li></ul><h2>4. Information Architecture Standards</h2><h3>4.1 Parent-child relationships</h3><p>A parent item must represent a meaningful category. Child items must belong logically under that parent.</p><p>The parent-child relationship should be clear from the user&#8217;s point of view, not just from the organization&#8217;s point of view.</p><p><strong>Good parent-child relationships are based on:</strong></p><ul><li><p>User tasks</p></li><li><p>User goals</p></li><li><p>Feature areas users recognize</p></li><li><p>Common workflows</p></li><li><p>Expected content groupings</p></li></ul><div class="callout-block" data-callout="true"><p>&#10060; Avoid using the primary navigation to mirror internal departments, feature team ownership, or implementation structure.</p></div><h3>4.2 Terminal nodes</h3><p>A terminal node is an item that takes the user to a page or route.</p><p>In a dropdown menu or mega menu, the primary activatable child items should usually be terminal nodes. This lets users move from the menu to a destination without needing to understand additional hidden layers.</p><p><strong>Terminal nodes may include:</strong></p><ul><li><p>Landing pages</p></li><li><p>Overview pages</p></li><li><p>Feature areas</p></li><li><p>Filtered results pages</p></li><li><p>Task-specific pages</p></li><li><p>Settings pages</p></li><li><p>Reports or dashboard views</p></li></ul><div class="callout-block" data-callout="true"><p>&#10060; Avoid menu structures that require users to move through several abstract layers before finding a destination.</p></div><p><strong>&#10004;&#65039; Preferred pattern:</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FZl1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb158ee0e-8aa1-40ef-ae75-c3c2ad2d209d_1726x548.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FZl1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb158ee0e-8aa1-40ef-ae75-c3c2ad2d209d_1726x548.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FZl1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb158ee0e-8aa1-40ef-ae75-c3c2ad2d209d_1726x548.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FZl1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb158ee0e-8aa1-40ef-ae75-c3c2ad2d209d_1726x548.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FZl1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb158ee0e-8aa1-40ef-ae75-c3c2ad2d209d_1726x548.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FZl1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb158ee0e-8aa1-40ef-ae75-c3c2ad2d209d_1726x548.jpeg" width="1456" height="462" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b158ee0e-8aa1-40ef-ae75-c3c2ad2d209d_1726x548.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:462,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:83032,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/197846073?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb158ee0e-8aa1-40ef-ae75-c3c2ad2d209d_1726x548.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FZl1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb158ee0e-8aa1-40ef-ae75-c3c2ad2d209d_1726x548.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FZl1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb158ee0e-8aa1-40ef-ae75-c3c2ad2d209d_1726x548.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FZl1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb158ee0e-8aa1-40ef-ae75-c3c2ad2d209d_1726x548.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FZl1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb158ee0e-8aa1-40ef-ae75-c3c2ad2d209d_1726x548.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><pre><code><code>Primary navigation item
  Child destination
  Child destination
  Child destination</code></code></pre><p></p><p><strong>&#10060; Avoid:</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lIz0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa83c521f-9240-4f4a-89cd-d08a037144f2_1726x490.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lIz0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa83c521f-9240-4f4a-89cd-d08a037144f2_1726x490.jpeg 424w, https://substackcdn.com/image/fetch/$s_!lIz0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa83c521f-9240-4f4a-89cd-d08a037144f2_1726x490.jpeg 848w, https://substackcdn.com/image/fetch/$s_!lIz0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa83c521f-9240-4f4a-89cd-d08a037144f2_1726x490.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!lIz0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa83c521f-9240-4f4a-89cd-d08a037144f2_1726x490.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lIz0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa83c521f-9240-4f4a-89cd-d08a037144f2_1726x490.jpeg" width="1456" height="413" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a83c521f-9240-4f4a-89cd-d08a037144f2_1726x490.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:413,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:109431,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/197846073?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa83c521f-9240-4f4a-89cd-d08a037144f2_1726x490.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lIz0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa83c521f-9240-4f4a-89cd-d08a037144f2_1726x490.jpeg 424w, https://substackcdn.com/image/fetch/$s_!lIz0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa83c521f-9240-4f4a-89cd-d08a037144f2_1726x490.jpeg 848w, https://substackcdn.com/image/fetch/$s_!lIz0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa83c521f-9240-4f4a-89cd-d08a037144f2_1726x490.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!lIz0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa83c521f-9240-4f4a-89cd-d08a037144f2_1726x490.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><pre><code><code>Primary navigation item
  Category
    Subcategory
      Sub-subcategory
        Destination</code></code></pre><h3>4.3 Parent landing pages</h3><p>If a parent category has a landing page, do not use split-button behavior.</p><p><strong>The parent item should not behave as both:</strong></p><ul><li><p>A link to the parent landing page</p></li><li><p>A Menu item that opens a child menu</p></li></ul><p>That interaction model creates ambiguity because the same row appears to have two different functions.</p><p>For this navigation system, hybrid parent link plus disclosure behavior is not allowed. The restriction is a design-system rule intended to preserve one clear interaction purpose per row.</p><p><strong>&#10004;&#65039; Required pattern:</strong></p><ul><li><p>Make the parent item a Menu item.</p></li><li><p>Add a child destination item labeled <code>[Parent Category]</code> Overview.</p></li></ul><p><strong>Example structure:</strong></p><pre><code><code>Parent Category
  Parent Category Overview
  Child Destination
  Child Destination</code></code></pre><p><strong>In this pattern:</strong></p><ul><li><p>Activating the parent item expands or collapses the child section.</p></li><li><p>Activating the overview item navigates to the parent landing page.</p></li><li><p>The row has one interaction target.</p></li><li><p>The dropdown indicator is not a separate interaction target.</p></li><li><p>The user does not need to understand a split-button interaction.</p></li></ul><p>This pattern should apply consistently across levels of the primary navigation hierarchy. Do not use the split-button UI control. </p><h3>4.4 Duplicate destinations</h3><p>A destination should generally appear only once in primary navigation.</p><p>Duplicating the same destination in multiple navigation areas can make users question whether the items lead to the same place or different places.</p><div class="callout-block" data-callout="true"><p>&#10060; Avoid duplicate destination items unless user research shows users strongly expect the same destination in more than one category.</p></div><p>When a destination could reasonably belong in more than one place, choose the location that best matches the user&#8217;s mental model.</p><h3>4.5 Child item grouping</h3><p>Child items should be grouped by user expectations.</p><p><strong>&#10060; Do not group items by:</strong></p><ul><li><p>Internal team ownership</p></li><li><p>Feature architecture</p></li><li><p>System architecture</p></li><li><p>Department names</p></li><li><p>Release structure</p></li><li><p>Roadmap structure</p></li></ul><p><strong>&#10004;&#65039; Groups should be:</strong></p><ul><li><p>Descriptive</p></li><li><p>Mutually distinct</p></li><li><p>Medium-granularity</p></li><li><p>Ordered intentionally</p></li></ul><div class="callout-block" data-callout="true"><p>&#10060; Use medium-granularity groups. Avoid very large groups that take too long to scan. Also avoid very small groups that create too many headings and make the menu feel fragmented.</p></div><p><strong>Group order may be based on:</strong></p><ul><li><p>Task frequency</p></li><li><p>Workflow sequence</p></li><li><p>User importance</p></li><li><p>Natural conceptual order</p></li></ul><p>If none of those apply, place the most commonly used or most important group in the top-left area of the mega menu.</p><h2>5. Navigation Labeling Standards</h2><h3>5.1 Label clarity</h3><p>Item labels must clearly describe the destination, task, or category.</p><p><strong>A strong label should answer the user&#8217;s basic question:</strong></p><blockquote><p>What will I find if I activate this?</p></blockquote><div class="callout-block" data-callout="true"><p>&#10060; Avoid labels that are too broad to create a clear expectation. Labels should not require users to know internal terminology, team ownership, feature history, or implementation details.</p></div><p>A label is too vague when it could plausibly contain several unrelated destinations or when users would need to open it just to understand what it means.</p><h3>5.2 Label consistency</h3><p>Use the same term for the same concept across the application.</p><p>Do not alternate between similar labels unless each term has a distinct user-facing meaning.</p><p>If multiple related terms are needed, each term should represent a distinct concept and appear in the navigation only where that distinction is meaningful to users.</p><h3>5.3 Label differentiation</h3><p>Items in the same set should be easy to distinguish from one another.</p><div class="callout-block" data-callout="true"><p>&#10060; Avoid placing labels near each other if users are likely to read them as overlapping categories.</p></div><p>Each label should create a distinct information scent trail.</p><h3>5.4 Icon labels</h3><p>Icons in primary navigation must include visible text labels.</p><p><a href="https://trevorcalabro.substack.com/p/every-icon-needs-a-label?utm_source=publication-search">Do not use icon-only</a> primary navigation items. (buttons/links)</p><p>Icons may support recognition, but they should not carry the meaning on their own. This applies to desktop and mobile navigation.</p><p>For mobile primary navigation, the menu control should include a visible text label such as Menu. The menu icon may appear with the label, but the icon should not be the only visible cue.</p><h2>6. Desktop Primary Navigation Behavior</h2><h3>6.1 Opening menus</h3><p>Dropdown menus and mega menus must open only by intentional activation.</p><p>For this primary navigation pattern, hover must not open, close, reveal, or dismiss dropdown menus, mega menus, or child navigation items.</p><p><strong>&#10004;&#65039; Required behavior:</strong></p><ul><li><p>Activate a Menu item: open the child menu.</p></li><li><p>Activate the same Menu item again: close the child menu.</p></li><li><p>Activate another Menu item: close the current menu and open the activated menu.</p></li><li><p>Activate a destination item: navigate to the destination.</p></li><li><p>Hover over an item: show only the visual over state.</p></li><li><p>Hover out of an item: remove only the visual over state.</p></li></ul><p>This interaction model gives users control because menus open based on intentional activation, not cursor movement.</p><h3>6.2 Hover behavior</h3><p>Hover state may indicate that an item is interactive.</p><p><strong>&#10004;&#65039; Hover may change:</strong></p><ul><li><p>Background</p></li><li><p>Text decoration</p></li><li><p>Border</p></li><li><p>Color</p></li><li><p>Elevation</p></li><li><p>Dropdown indicator styling</p></li></ul><p><strong>&#10060; In this pattern, hover must not:</strong></p><ul><li><p>Open a menu</p></li><li><p>Close a menu</p></li><li><p>Reveal child items</p></li><li><p>Dismiss child items</p></li><li><p>Replace focused state</p></li><li><p>Replace current page state</p></li><li><p>Trigger behavior that changes the available navigation structure</p></li></ul><p>Hover is visual feedback only. It should communicate that an item is interactive, but it must not change menu visibility.</p><h3>6.3 Hover out behavior</h3><p>Hover out removes the hover state.</p><p>Hover out must not close a dropdown menu or mega menu in this pattern.</p><p>Users must be able to dismiss an open menu through deliberate actions, not through cursor movement. This prevents fragile interaction paths where a menu closes unexpectedly because the cursor moved slightly outside the menu boundary.</p><p><strong>&#10004;&#65039; Required rule:</strong></p><ul><li><p>If a menu was opened by activation, it remains open until the user intentionally dismisses it.</p></li></ul><h3>6.4 Menu dismissal</h3><p>Users must be able to close an open dropdown menu or mega menu by using deliberate dismissal methods.</p><p><strong>&#10004;&#65039; Required dismissal methods:</strong></p><ul><li><p>Activate the Menu item again.</p></li><li><p>Activate outside the menu.</p></li><li><p>Press the <code>Esc </code>key.</p></li><li><p>Move focus out of the open navigation region, when this dismissal behavior is intentionally defined. Moving focus from the Menu item into its child menu must not dismiss the menu.</p></li><li><p>Activate another Menu item.</p></li><li><p>Activate a destination item.</p></li></ul><p>When the <code>Esc </code>key closes the menu, focus must return to the Menu item that opened it.</p><p>This keeps the user oriented and prevents keyboard users from losing their place in the navigation.</p><h3>6.5 Animation timing</h3><p>Dropdown and mega menu animations should be brief.</p><p><strong>&#10004;&#65039; Recommended duration:</strong></p><ul><li><p>100 to 150 milliseconds</p></li></ul><p>Animation may help users understand that a menu has opened or closed, but it should not slow down navigation.</p><p><strong>&#10060; Avoid animations that:</strong></p><ul><li><p>Delay access to child items</p></li><li><p>Make the interface feel less responsive</p></li><li><p>Create unnecessary motion</p></li><li><p>Interfere with focus visibility</p></li><li><p>Make it harder to track the current state</p></li><li><p>Ignore user motion preferences</p></li><li><p>Desynchronize hidden, keyboard focusability, and <code>aria-expanded</code> during open or close transitions</p></li></ul><h3>6.6 Motion preferences and reduced motion</h3><p>Navigation animation must not create unnecessary motion or make the interface harder to use.</p><p>If menu animation is used, implementation should respect user motion preferences, including prefers-reduced-motion.</p><p><strong>&#10004;&#65039; Requirements:</strong></p><ul><li><p>Animations must not delay access to child items.</p></li><li><p>Animations must not interfere with visible focus indicators.</p></li><li><p>Animations must not be required for users to understand whether a menu is open or closed.</p></li><li><p>When users request reduced motion, non-essential menu animation should be reduced or removed.</p></li><li><p>Open, closed, expanded, collapsed, focused, and current page states must remain clear even when animation is reduced or removed.</p></li><li><p>When animation is used, visual visibility, keyboard focusability, hidden, and <code>aria-expanded</code> must remain synchronized throughout the open and close behavior.</p></li></ul><p>Reduced motion should not change the interaction model. Menus still open by activation and close through defined dismissal behavior.</p><h2>7. Dropdown Menu and Mega Menu Behavior</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7YKX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ea2988-0c3f-4f3a-9c5d-4c057e9c7fe3_1726x548.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7YKX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ea2988-0c3f-4f3a-9c5d-4c057e9c7fe3_1726x548.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7YKX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ea2988-0c3f-4f3a-9c5d-4c057e9c7fe3_1726x548.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7YKX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ea2988-0c3f-4f3a-9c5d-4c057e9c7fe3_1726x548.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7YKX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ea2988-0c3f-4f3a-9c5d-4c057e9c7fe3_1726x548.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7YKX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ea2988-0c3f-4f3a-9c5d-4c057e9c7fe3_1726x548.jpeg" width="1456" height="462" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f0ea2988-0c3f-4f3a-9c5d-4c057e9c7fe3_1726x548.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:462,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:83032,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/197846073?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ea2988-0c3f-4f3a-9c5d-4c057e9c7fe3_1726x548.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7YKX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ea2988-0c3f-4f3a-9c5d-4c057e9c7fe3_1726x548.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7YKX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ea2988-0c3f-4f3a-9c5d-4c057e9c7fe3_1726x548.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7YKX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ea2988-0c3f-4f3a-9c5d-4c057e9c7fe3_1726x548.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7YKX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ea2988-0c3f-4f3a-9c5d-4c057e9c7fe3_1726x548.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>7.1 Dropdown indicators</h3><p>Menus must include a dropdown indicator.</p><p><strong>Acceptable indicators include:</strong></p><ul><li><p>Down chevron</p></li><li><p>Disclosure arrow</p></li><li><p>Caret</p></li></ul><p>The dropdown indicator communicates that activating the item will expose child navigation items.</p><p>Destination items must not include dropdown indicators.</p><p><strong>This distinction helps users tell the difference between:</strong></p><ul><li><p>Items that navigate directly</p></li><li><p>Items that open child menus</p></li></ul><p>Dropdown indicators should be visually consistent across the primary navigation system.</p><p>The dropdown indicator should not behave as a separate interaction target. Activating the label area or the indicator area should perform the same disclosure action.</p><h3>7.2 Open state</h3><p><strong>When a dropdown menu or mega menu is open:</strong></p><ul><li><p>The Menu item must show an open visual state.</p></li><li><p>The Menu item must use <code>aria-expanded=&#8221;true&#8221;</code>.</p></li><li><p>The child menu must be visible.</p></li><li><p>The child menu must appear in a predictable spatial relationship to the Menu item.</p></li><li><p>The dropdown indicator should visually reflect the expanded state.</p></li><li><p>The menu should remain open until intentionally dismissed.</p></li></ul><p>The open state should make it clear which top-level item controls the visible menu.</p><p>Opening a menu must be triggered by activation, not hover.</p><h3>7.3 Closed state</h3><p><strong>When a dropdown menu or mega menu is closed:</strong></p><ul><li><p>The Menu item must show a collapsed visual state.</p></li><li><p>The Menu item must use <code>aria-expanded=&#8221;false&#8221;</code>.</p></li><li><p>The child menu must be hidden visually.</p></li><li><p>The child menu should be hidden from assistive technology unless there is an intentional reason not to do so.</p></li><li><p>The dropdown indicator should visually reflect the collapsed state.</p></li></ul><p>The closed state should communicate that child items are available, but not currently visible.</p><p>Closing a menu must be triggered by intentional dismissal behavior, not hover out.</p><h3>7.4 Esc key behavior</h3><p><strong>When the user presses the </strong><code>Esc </code><strong>key while a menu is open:</strong></p><ul><li><p>The menu closes.</p></li><li><p>Focus returns to the Menu item that opened the menu.</p></li><li><p>The Menu item updates to <code>aria-expanded=&#8221;false&#8221;</code>.</p></li><li><p>The visual state updates from expanded to collapsed.</p></li></ul><p>This behavior should be consistent for all dropdown menus and mega menus in the primary navigation.</p><h3>7.5 Focus behavior</h3><p>When a menu opens, focus behavior must be predictable and consistent.</p><p>The design team should choose one focus model and apply it consistently across primary navigation menus.</p><p><strong>Acceptable patterns:</strong></p><ol><li><p>Focus remains on the Menu item: The menu opens, and the user can continue forward through the tab order into the child items.</p></li><li><p>Focus moves into the opened menu: Focus moves to the first focusable item inside the opened menu.</p></li></ol><p><strong>In either pattern:</strong></p><ul><li><p>Open menu items must be reachable by keyboard.</p></li><li><p>Users must be able to move focus out of the menu.</p></li><li><p>Focus should not be trapped inside standard desktop dropdown menus or mega menus.</p></li><li><p>Focus order must follow the visual and logical order of the menu.</p></li><li><p><code>Esc </code>must close the menu and return focus to the Menu item.</p></li><li><p>Focus movement may dismiss the menu only when that dismissal behavior is intentionally defined. Moving focus from the Menu item into the opened child menu must not dismiss the menu.</p></li></ul><p>Focus behavior should not depend on hover.</p><h3>7.6 Mega menu layout</h3><p>Mega menus should organize terminal nodes into visible groups.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jYM6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ff9c409-806a-4200-9cbe-f618dc545414_1909x541.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jYM6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ff9c409-806a-4200-9cbe-f618dc545414_1909x541.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jYM6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ff9c409-806a-4200-9cbe-f618dc545414_1909x541.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jYM6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ff9c409-806a-4200-9cbe-f618dc545414_1909x541.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jYM6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ff9c409-806a-4200-9cbe-f618dc545414_1909x541.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jYM6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ff9c409-806a-4200-9cbe-f618dc545414_1909x541.jpeg" width="1456" height="413" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2ff9c409-806a-4200-9cbe-f618dc545414_1909x541.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:413,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:148416,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/197846073?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ff9c409-806a-4200-9cbe-f618dc545414_1909x541.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jYM6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ff9c409-806a-4200-9cbe-f618dc545414_1909x541.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jYM6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ff9c409-806a-4200-9cbe-f618dc545414_1909x541.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jYM6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ff9c409-806a-4200-9cbe-f618dc545414_1909x541.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jYM6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ff9c409-806a-4200-9cbe-f618dc545414_1909x541.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Each group should include:</strong></p><ul><li><p>Descriptive group heading</p></li><li><p>Related destination items</p></li><li><p>Clear visual separation from other groups</p></li><li><p>Logical reading order</p></li></ul><p><strong>&#10004;&#65039; Preferred structure:</strong></p><pre><code><code>Primary navigation item
  Mega menu
    Group heading
      Destination item
      Destination item
      Destination item</code></code></pre><p><strong>&#10060; Avoid deep nested structures inside mega menus:</strong></p><pre><code><code>Primary navigation item
  Mega menu
    Category
      Subcategory
        Sub-subcategory
          Destination item</code></code></pre><p>Mega menus work best when they expose meaningful destination choices in a scannable layout. They should not become a complete site map or a visual representation of the full feature architecture.</p><h3>7.7 Current page inside a dropdown or mega menu</h3><p>If the currently displayed page is represented by a child item inside a dropdown or mega menu, the child item should receive the current page indicator.</p><p><strong>Example structure:</strong></p><pre><code><code>Parent Item
  Child Destination
  Child Destination &#8592; current page
  Child Destination</code></code></pre><p><strong>In this pattern:</strong></p><ul><li><p>The current child destination receives the current page indicator.</p></li><li><p>The current child destination uses <code>aria-current=&#8221;page&#8221;</code>.</p></li><li><p>The parent item may receive a visual parent-active treatment.</p></li><li><p>The parent item should not use <code>aria-current=&#8221;page&#8221;</code> unless the parent item itself is the current page.</p></li></ul><p>The parent-active treatment helps users understand which primary navigation section contains the current page. It should be visually distinct from the child item&#8217;s current page indicator.</p><h2>8. Mobile Primary Navigation Behavior</h2><h3>8.1 Menu control</h3><p>The mobile primary navigation control must include a visible text label.</p><p><strong>&#10004;&#65039; Preferred label:</strong></p><ul><li><p>Menu</p></li></ul><p>The menu icon may appear with the label, but the visible text label must remain present.</p><div class="callout-block" data-callout="true"><p>&#10060; Avoid icon-only mobile primary navigation controls. The menu control should not rely on users recognizing the hamburger icon or remembering what it means.</p></div><p>The control should clearly communicate that activating it opens the primary navigation.</p><p>The Menu control and any close control must provide a target area large enough for accurate cursor and tap activation. Use at least 24 by 24 CSS pixels unless a valid exception applies. This is a minimum, not the ideal target size. In practice, mobile menu controls, close controls, and accordion rows should be larger than the minimum whenever layout allows.</p><h3>8.2 Opening and closing mobile navigation</h3><p>Mobile navigation must open and close by intentional activation or defined keyboard dismissal.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BbT8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ffe0690-30de-4490-978e-769dc9f5f0d3_1388x878.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BbT8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ffe0690-30de-4490-978e-769dc9f5f0d3_1388x878.png 424w, https://substackcdn.com/image/fetch/$s_!BbT8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ffe0690-30de-4490-978e-769dc9f5f0d3_1388x878.png 848w, https://substackcdn.com/image/fetch/$s_!BbT8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ffe0690-30de-4490-978e-769dc9f5f0d3_1388x878.png 1272w, https://substackcdn.com/image/fetch/$s_!BbT8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ffe0690-30de-4490-978e-769dc9f5f0d3_1388x878.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BbT8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ffe0690-30de-4490-978e-769dc9f5f0d3_1388x878.png" width="1388" height="878" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4ffe0690-30de-4490-978e-769dc9f5f0d3_1388x878.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:878,&quot;width&quot;:1388,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:741902,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/197846073?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ffe0690-30de-4490-978e-769dc9f5f0d3_1388x878.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BbT8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ffe0690-30de-4490-978e-769dc9f5f0d3_1388x878.png 424w, https://substackcdn.com/image/fetch/$s_!BbT8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ffe0690-30de-4490-978e-769dc9f5f0d3_1388x878.png 848w, https://substackcdn.com/image/fetch/$s_!BbT8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ffe0690-30de-4490-978e-769dc9f5f0d3_1388x878.png 1272w, https://substackcdn.com/image/fetch/$s_!BbT8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ffe0690-30de-4490-978e-769dc9f5f0d3_1388x878.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>&#10004;&#65039; Required behavior:</strong></p><ul><li><p>Activate Menu: open primary navigation.</p></li><li><p>Activate Menu again or activate a close control: close primary navigation.</p></li><li><p>Press Esc: close primary navigation when keyboard focus is inside the menu.</p></li><li><p>Focus returns to the menu control when the menu is dismissed.</p></li></ul><p>Hover must not open, close, reveal, or dismiss mobile navigation or child navigation sections in this pattern.</p><p>The open and closed states should be visually clear.</p><p><strong>When the mobile menu is open:</strong></p><ul><li><p>The menu control should show an open state or be replaced by a clear close control.</p></li><li><p>The navigation panel or menu region should be visible.</p></li><li><p>The first available item should be reachable through the expected tab order.</p></li><li><p>The user should be able to dismiss the menu without activating a destination.</p></li></ul><p>If the mobile navigation panel blocks interaction with the rest of the page, treat it as a modal-style experience: prevent background interaction, provide a clear close control, support <code>Esc</code>, and restore focus to the Menu control when dismissed. If the panel does not block interaction with the rest of the page, focus should remain free to move through the page and should not be trapped inside the navigation.</p><h3>8.3 No split-button behavior</h3><p>Mobile navigation rows must not use split-button behavior.</p><p><strong>&#10060; Avoid this pattern:</strong></p><ul><li><p>Text label navigates to a parent landing page.</p></li><li><p>Adjacent chevron opens a child menu.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UQjW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67ca965b-06ea-4768-81c9-dc649bd819c5_1619x826.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UQjW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67ca965b-06ea-4768-81c9-dc649bd819c5_1619x826.jpeg 424w, https://substackcdn.com/image/fetch/$s_!UQjW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67ca965b-06ea-4768-81c9-dc649bd819c5_1619x826.jpeg 848w, https://substackcdn.com/image/fetch/$s_!UQjW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67ca965b-06ea-4768-81c9-dc649bd819c5_1619x826.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!UQjW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67ca965b-06ea-4768-81c9-dc649bd819c5_1619x826.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UQjW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67ca965b-06ea-4768-81c9-dc649bd819c5_1619x826.jpeg" width="443" height="226.06387362637363" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/67ca965b-06ea-4768-81c9-dc649bd819c5_1619x826.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:743,&quot;width&quot;:1456,&quot;resizeWidth&quot;:443,&quot;bytes&quot;:267698,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/197846073?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67ca965b-06ea-4768-81c9-dc649bd819c5_1619x826.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!UQjW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67ca965b-06ea-4768-81c9-dc649bd819c5_1619x826.jpeg 424w, https://substackcdn.com/image/fetch/$s_!UQjW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67ca965b-06ea-4768-81c9-dc649bd819c5_1619x826.jpeg 848w, https://substackcdn.com/image/fetch/$s_!UQjW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67ca965b-06ea-4768-81c9-dc649bd819c5_1619x826.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!UQjW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67ca965b-06ea-4768-81c9-dc649bd819c5_1619x826.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>This creates two interaction targets within what appears to be one navigation row. Users may not understand that the label and chevron perform different actions.</p><p><strong>&#10004;&#65039; Required pattern:</strong></p><ul><li><p>Each row has one interaction target.</p></li><li><p>A row either navigates to a destination or opens a child section.</p></li><li><p>A row must not do both.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8nMa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a2e0f56-d2cf-4047-bfe4-8232eedb81ad_1163x1269.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8nMa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a2e0f56-d2cf-4047-bfe4-8232eedb81ad_1163x1269.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8nMa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a2e0f56-d2cf-4047-bfe4-8232eedb81ad_1163x1269.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8nMa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a2e0f56-d2cf-4047-bfe4-8232eedb81ad_1163x1269.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8nMa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a2e0f56-d2cf-4047-bfe4-8232eedb81ad_1163x1269.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8nMa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a2e0f56-d2cf-4047-bfe4-8232eedb81ad_1163x1269.jpeg" width="400" height="436.457437661221" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7a2e0f56-d2cf-4047-bfe4-8232eedb81ad_1163x1269.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1269,&quot;width&quot;:1163,&quot;resizeWidth&quot;:400,&quot;bytes&quot;:305044,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/197846073?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a2e0f56-d2cf-4047-bfe4-8232eedb81ad_1163x1269.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8nMa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a2e0f56-d2cf-4047-bfe4-8232eedb81ad_1163x1269.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8nMa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a2e0f56-d2cf-4047-bfe4-8232eedb81ad_1163x1269.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8nMa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a2e0f56-d2cf-4047-bfe4-8232eedb81ad_1163x1269.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8nMa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a2e0f56-d2cf-4047-bfe4-8232eedb81ad_1163x1269.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If the row opens a child section, the whole row should operate as the Menu item. The dropdown indicator may remain visible, but it should not be a separate interaction target.</p><h3>8.4 Parent category with landing page</h3><p>If a parent category has a landing page, include that landing page as a child destination item.</p><p><strong>&#10004;&#65039; Required pattern:</strong></p><ul><li><p>The parent row opens or closes the child section.</p></li><li><p>The parent landing page appears as the first child destination item.</p></li><li><p>The parent landing page uses an explicit overview label.</p></li></ul><p><strong>Example structure:</strong></p><pre><code><code>Parent Category
  Parent Category Overview
  Child Destination
  Child Destination</code></code></pre><p>This keeps the parent row&#8217;s interaction simple and gives users a clear way to reach the parent landing page.</p><h3>8.5 Accordion behavior</h3><p>Mobile child navigation should use disclosure or accordion behavior.</p><p><strong>&#10004;&#65039; Required behavior:</strong></p><ul><li><p>Activate parent row: expand child section.</p></li><li><p>Activate the same parent row again: collapse child section.</p></li><li><p>Expanded state is visually indicated.</p></li><li><p>Expanded state is programmatically exposed with <code>aria-expanded</code>.</p></li><li><p>Child items appear directly under the parent row.</p></li><li><p>The dropdown indicator visually reflects expanded or collapsed state.</p></li></ul><p>Accordion behavior should preserve the parent-child relationship visually. Child items should appear close enough to the parent row that users can understand the relationship without relying on memory.</p><p>Hover must not expand or collapse accordion sections in this pattern.</p><h3>8.6 Mobile current page indication</h3><p>The currently displayed page, section, or route must have a visible current page indicator in mobile navigation.</p><p><strong>&#10004;&#65039; Requirements:</strong></p><ul><li><p>The current page indicator must be visible when the relevant navigation section is displayed.</p></li><li><p>The indicator must be persistent and not depend on hover or focus.</p></li><li><p>The current destination item must use <code>aria-current=&#8221;page&#8221;</code>.</p></li><li><p>If the current page is inside a collapsed parent section, the parent row may receive a visual parent-active treatment.</p></li><li><p>The parent row should not use<code> aria-current=&#8221;page&#8221;</code> unless the parent row itself represents the current page.</p></li></ul><p>This allows users to reopen the mobile navigation and understand where they are within the application structure.</p><h2>9. Keyboard Interaction Requirements</h2><h3>9.1 Tab order</h3><p>Tab order must follow the visual and logical order of the primary navigation.</p><p>The goal is for keyboard users to experience the navigation in the same order that sighted cursor users visually scan it.</p><p><strong>&#10004;&#65039; Recommended order:</strong></p><ol><li><p>Logo or home link, if present</p></li><li><p>Top-level primary navigation items</p></li><li><p>Open child menu items</p></li><li><p>Utility items, if present</p></li><li><p>Main page content</p></li></ol><p>When a dropdown menu or mega menu is closed, its child items should not be included in the tab order.</p><p>When a dropdown menu or mega menu is open, its child items must be reachable through the keyboard.</p><p>Tab order should not jump unexpectedly between unrelated areas of the page. Users should be able to move through the navigation predictably and understand where they are at each step.</p><p>Hover must not affect tab order. Child items should enter or leave the tab order based on the menu&#8217;s activated open or closed state, not cursor position.</p><h3>9.2 Keyboard commands</h3><p>Primary navigation must support standard keyboard behavior.</p><div id="datawrapper-iframe" class="datawrapper-wrap outer" data-attrs="{&quot;url&quot;:&quot;https://datawrapper.dwcdn.net/1CbEO/1/&quot;,&quot;thumbnail_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/34c9821e-a260-46db-9c89-4a9475e0a29f_1220x578.png&quot;,&quot;thumbnail_url_full&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0ad2a428-9fa7-4492-b4dc-1e6034771056_1220x578.png&quot;,&quot;height&quot;:283,&quot;title&quot;:&quot;Created with Datawrapper&quot;,&quot;description&quot;:&quot;&quot;}" data-component-name="DatawrapperToDOM"><iframe id="iframe-datawrapper" class="datawrapper-iframe" src="https://datawrapper.dwcdn.net/1CbEO/1/" width="730" height="283" frameborder="0" scrolling="no"></iframe><script type="text/javascript">!function(){"use strict";window.addEventListener("message",(function(e){if(void 0!==e.data["datawrapper-height"]){var t=document.querySelectorAll("iframe");for(var a in e.data["datawrapper-height"])for(var r=0;r<t.length;r++){if(t[r].contentWindow===e.source)t[r].style.height=e.data["datawrapper-height"][a]+"px"}}}))}();</script></div><p>Keyboard behavior should match the item type.</p><p><strong>Destination items behave like links:</strong></p><ul><li><p>Enter activates the item.</p></li><li><p>The user is taken to the destination.</p></li></ul><p><strong>Menu items behave like buttons:</strong></p><ul><li><p>Enter activates the item.</p></li><li><p>Space activates the item.</p></li><li><p>The child menu opens or closes.</p></li></ul><p>Keyboard activation is intentional activation. A menu may open or close through Enter or Space on a Menu item. A menu must not open or close because the cursor is hovering over the item while it has focus.</p><h3>9.3 Focused state</h3><p>Every interactive item must have a visible focused state.</p><p>The focused state tells keyboard users where they are in the navigation. It should be treated as a required interaction state, not a visual enhancement.</p><p><strong>Focused state must be:</strong></p><ul><li><p>Clearly visible</p></li><li><p>Persistent while the item has focus</p></li><li><p>Distinct from hover state</p></li><li><p>Distinct from current page state</p></li><li><p>Distinct from expanded and collapsed states</p></li><li><p>Distinct from active / pressed state</p></li><li><p>Not dependent on color alone</p></li></ul><p>Do not remove browser focus styling unless it is replaced with an equally clear or stronger focused state.</p><p><strong>The focused state should work across:</strong></p><ul><li><p>Top-level items</p></li><li><p>Child items</p></li><li><p>Dropdown indicators when they are part of the same disclosure control</p></li><li><p>Menu controls</p></li><li><p>Close controls, if present</p></li></ul><p>Focused state must not automatically open a dropdown menu or mega menu. If a Menu item receives focus, it should show focused state only. The menu opens only when the user activates the Menu item.</p><h3>9.4 Focus management</h3><p>Focus behavior should help users stay oriented.</p><p>When a menu is opened by activation, the team should choose one focus model and apply it consistently.</p><p><strong>Acceptable patterns:</strong></p><ol><li><p>Focus remains on the Menu item: The menu opens, and the user can continue forward through the tab order into the child items.</p></li><li><p>Focus moves into the opened menu: Focus moves to the first focusable child item inside the opened menu.</p></li></ol><p><strong>In both patterns:</strong></p><ul><li><p>Child items must be keyboard reachable.</p></li><li><p>Users must be able to move focus out of the menu.</p></li><li><p>Focus should not be trapped inside standard dropdown menus or mega menus.</p></li><li><p><code>Esc </code>must close the menu and return focus to the Menu item that opened it.</p></li><li><p>Focus order must match the visual and logical order of the menu.</p></li><li><p>Focus behavior must not depend on hover.</p></li></ul><p>Focus should only be trapped when the navigation is intentionally presented as a modal experience, such as a full-screen mobile menu that blocks interaction with the rest of the page. In that case, prevent background interaction, provide a clear close control, support <code>Esc</code>, and return focus to the Menu control when dismissed. If the mobile menu does not block the page, do not trap focus inside the navigation.</p><p>If focus movement is used as a dismissal method, it must be intentionally defined and consistent. Moving focus out of the open navigation region may dismiss the menu; moving focus from the Menu item into its child menu must not dismiss it.</p><h2>10. Cursor Interaction Requirements</h2><h3>10.1 Hover / over state</h3><p>Hover state may indicate that an item is interactive.</p><p><strong>Hover state may change:</strong></p><ul><li><p>Background</p></li><li><p>Text decoration</p></li><li><p>Border</p></li><li><p>Color</p></li><li><p>Elevation</p></li><li><p>Indicator styling</p></li></ul><div class="callout-block" data-callout="true"><p>&#9888;&#65039;<strong> Hover is visual feedback only.</strong></p></div><p><strong>In this pattern, hover must not:</strong></p><ul><li><p>Open a menu</p></li><li><p>Close a menu</p></li><li><p>Reveal child items</p></li><li><p>Dismiss child items</p></li><li><p>Change expanded or collapsed state</p></li><li><p>Change tab order</p></li><li><p>Replace focused state</p></li><li><p>Replace current page state</p></li><li><p>Trigger behavior that changes the available navigation structure</p></li></ul><p>The user may hover over an item and see an over state, but the navigation structure must not change until the user intentionally activates an item.</p><h3>10.2 Hover out</h3><p>Hover out removes the hover state.</p><p>Hover out must not close a dropdown menu or mega menu in this pattern.</p><p>Users should not have to move the cursor through a narrow path or maintain exact cursor placement to keep a menu open. That creates fragile navigation behavior and increases accidental dismissal.</p><p><strong>&#10004;&#65039; Required rule:</strong></p><ul><li><p>If a menu was opened by activation, it remains open until the user intentionally dismisses it.</p></li></ul><p><strong>Open menus should close through deliberate dismissal methods, such as:</strong></p><ul><li><p>Activating the Menu item again</p></li><li><p>Activating outside the menu</p></li><li><p>Pressing the <code>Esc </code>key</p></li><li><p>Moving focus out of the menu, when defined</p></li><li><p>Activating another Menu item</p></li><li><p>Activating a destination item</p></li></ul><h3>10.3 Activate outside</h3><p>Activating outside an open menu should dismiss the menu.</p><p><strong>This applies to:</strong></p><ul><li><p>Dropdown menus</p></li><li><p>Mega menus</p></li><li><p>Mobile navigation panels, when appropriate</p></li></ul><p>Activate outside behavior should not interfere with destination activation. If the user activates a valid destination item, the destination action should take priority.</p><p>Activating outside is intentional dismissal. Hovering outside the menu is not dismissal.</p><h3>10.4 Cursor movement</h3><p>Menus must not depend on precise cursor movement.</p><div class="callout-block" data-callout="true"><p>&#10060; Avoid interaction paths where minor cursor movement causes the menu to close unexpectedly.</p></div><p><strong>This is especially important when:</strong></p><ul><li><p>A child menu appears below or beside the parent item</p></li><li><p>The menu has multiple columns</p></li><li><p>The user must move the cursor across spacing between the parent item and child menu</p></li><li><p>The menu contains visual groups</p></li></ul><p>The user should be able to move from the parent item into the child menu without fighting the interaction model.</p><p>Cursor movement may change hover / over state. Cursor movement must not change whether the menu is open or closed.</p><h3>10.5 Target size</h3><p>Interactive targets in primary navigation must be large enough to activate accurately with cursor and touch input.</p><p><strong>Minimum target guidance:</strong></p><ul><li><p>Primary navigation links, disclosure buttons, mobile menu controls, close controls, and accordion rows should provide a target area of at least 24 by 24 CSS pixels unless a valid exception applies. Treat this as the minimum threshold, not the preferred size. For mobile menu controls, close controls, and accordion rows, aim larger than the minimum whenever layout allows.</p></li><li><p>Adjacent targets should have enough spacing that users are not likely to activate the wrong item by accident.</p></li><li><p>The visible label, icon, or dropdown indicator may be smaller than the target area, but the interactive target area itself must be large enough.</p></li><li><p>Do not rely on tiny chevrons or icons as the only practical target for expanding or collapsing navigation sections.</p></li></ul><p>This requirement supports cursor, tap, motor accessibility, and general usability. It is especially important for mobile navigation, dense desktop navigation bars, and any close or menu control.</p><h2>11. Interaction States</h2><p>Each interactive item should define the following states as applicable.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!K9vS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc8d8510-cd06-45b8-9436-2ed106a53ada_1460x922.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!K9vS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc8d8510-cd06-45b8-9436-2ed106a53ada_1460x922.jpeg 424w, https://substackcdn.com/image/fetch/$s_!K9vS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc8d8510-cd06-45b8-9436-2ed106a53ada_1460x922.jpeg 848w, https://substackcdn.com/image/fetch/$s_!K9vS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc8d8510-cd06-45b8-9436-2ed106a53ada_1460x922.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!K9vS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc8d8510-cd06-45b8-9436-2ed106a53ada_1460x922.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!K9vS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc8d8510-cd06-45b8-9436-2ed106a53ada_1460x922.jpeg" width="1456" height="919" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cc8d8510-cd06-45b8-9436-2ed106a53ada_1460x922.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:919,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:259648,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/197846073?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc8d8510-cd06-45b8-9436-2ed106a53ada_1460x922.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!K9vS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc8d8510-cd06-45b8-9436-2ed106a53ada_1460x922.jpeg 424w, https://substackcdn.com/image/fetch/$s_!K9vS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc8d8510-cd06-45b8-9436-2ed106a53ada_1460x922.jpeg 848w, https://substackcdn.com/image/fetch/$s_!K9vS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc8d8510-cd06-45b8-9436-2ed106a53ada_1460x922.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!K9vS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc8d8510-cd06-45b8-9436-2ed106a53ada_1460x922.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The visual system must also define how states combine. A single item can be focused and hovered, focused and active, focused and current, hovered and current, focused and expanded, or focused and disabled. Combined states should not be treated as new semantic roles. They are visual combinations of existing states.</p><p>For example, focused + active means the item has keyboard focus and is currently being activated. It does not mean the item has a special hybrid role. focused + current page means the item represents the current page and currently has focus. It does not mean the current page state and focused state are the same thing.</p><h3>11.1 Default state</h3><p>Default state is the base visual treatment for an available item before temporary interaction states such as hover, focus, active, or pressed are applied.</p><p>For Menu items, the default visual treatment may appear together with collapsed state. A collapsed Menu item can still be in its default visual presentation.</p><p><strong>&#10004;&#65039; Requirements:</strong></p><ul><li><p>Default state should make the item readable.</p></li><li><p>Default state should make the item appear available.</p></li><li><p>Default state should not visually compete with current page state.</p></li><li><p>Default state should not be confused with disabled state.</p></li><li><p>Default state should not imply that a child menu is open.</p></li></ul><h3>11.2 Hover / over state</h3><p>The cursor is over the item.</p><p><strong>&#10004;&#65039; Requirements:</strong></p><ul><li><p>Hover state must visually indicate interactivity.</p></li><li><p>Hover state must be visually distinct from focused, current page, expanded, and active / pressed states.</p></li><li><p>Hover state must be subtle enough that it does not compete with the current page indicator.</p></li><li><p>Hover state must not open, close, reveal, or dismiss a menu in this pattern.</p></li><li><p>Hover state must not change expanded or collapsed state.</p></li></ul><p>Hover state is visual feedback only.</p><h3>11.3 Focused state</h3><p>The item has keyboard focus.</p><p><strong>&#10004;&#65039; Requirements:</strong></p><ul><li><p>Every interactive item must have a visible focused state.</p></li><li><p>Focused state must be clearly visible.</p></li><li><p>Focused state must not rely on color alone.</p></li><li><p>Focused state must be visually distinct from hover, current page, expanded, and active / pressed states.</p></li><li><p>Focus must follow the defined tab order.</p></li><li><p>Focused state must not automatically open a menu.</p></li></ul><p><strong>Focused state should always answer the user&#8217;s question:</strong></p><blockquote><p>Where am I right now?</p></blockquote><p>A focused Menu item opens or closes its child menu only when the user activates it with Enter or Space.</p><h3>11.4 Active / pressed state</h3><p>The item is actively being activated.</p><p>This state occurs during intentional activation, such as when the user presses the mouse buttons, Enter, or Space.</p><p><strong>&#10004;&#65039; Requirements:</strong></p><ul><li><p>Active or pressed state should provide immediate visual feedback.</p></li><li><p>Active or pressed state should be temporary.</p></li><li><p>Active or pressed state should not be used to represent the current page.</p></li><li><p>Active or pressed state should not be confused with focused state.</p></li><li><p>Active or pressed state should not be confused with current page state.</p></li></ul><p>This state communicates that the user&#8217;s input has been received.</p><p>Hover does not create active or pressed state. The item enters active or pressed state only during intentional activation.</p><h3>11.5 Current page state</h3><p>The item representing the currently displayed page, section, or route must have a visible current page indicator.</p><p><strong>&#10004;&#65039; Requirements:</strong></p><ul><li><p>The current page indicator must be visually persistent.</p></li><li><p>The current page indicator must be visible without hover or focus.</p></li><li><p>The current page indicator must be visually distinct from hover, focused, expanded, and active / pressed states.</p></li><li><p>The current page indicator must not rely on color alone.</p></li><li><p>The current destination item must use <code>aria-current=&#8221;page&#8221;</code>.</p></li><li><p>Only one item in the same navigation set should use <code>aria-current=&#8221;page&#8221;</code>.</p></li></ul><p><strong>Example:</strong></p><pre><code><code>&lt;a href="/current-path" aria-current="page"&gt;Current item&lt;/a&gt;</code></code></pre><p>If the current page is represented by a child item inside a dropdown menu or mega menu, the child item should receive the current page indicator.</p><p><strong>Example structure:</strong></p><pre><code><code>Parent Item
  Child Destination
  Child Destination &#8592; current page
  Child Destination</code></code></pre><p><strong>In this pattern:</strong></p><ul><li><p>The current child destination receives the current page indicator.</p></li><li><p>The current child destination uses <code>aria-current=&#8221;page&#8221;</code>.</p></li><li><p>The parent item may receive a visual parent-active treatment.</p></li><li><p>The parent item should not use <code>aria-current=&#8221;page&#8221;</code> unless the parent item itself is the current page.</p></li></ul><p>The parent-active treatment helps users understand which top-level section contains the current page. It should be visually distinct from the child item&#8217;s current page indicator.</p><p>Current page state must not depend on hover, focus, or menu open state.</p><h3>11.6 Selected state</h3><p>Selected state should not be used as the normal way to represent the current page in primary navigation.</p><p>Use selected state only when the component supports selection as a state separate from navigation.</p><p><strong>Examples of appropriate selected state:</strong></p><ul><li><p>A selected item inside a picker</p></li><li><p>A selected item inside a switcher</p></li><li><p>A selected item inside an application-style component</p></li><li><p>A selected tab in a tablist</p></li></ul><p><strong>&#10004;&#65039; Requirements:</strong></p><ul><li><p>Selected state must be visually distinct from hover, focused, current page, expanded, and active / pressed states.</p></li><li><p>Selected state must not be used as a substitute for current page state.</p></li><li><p>Do not use <code>aria-selected</code> for standard primary navigation links.</p></li><li><p>Use <code>aria-selected</code> only for components with true selection semantics, such as tabs, listboxes, grids, or tree views.</p></li></ul><p>For standard primary navigation, the user is usually not selecting an item into a persistent selection set. They are navigating to a location. In that case, use current page state instead.</p><p>If a visual state guide uses the phrase Selected (Current Page), the implementation should still treat that state as current page state and expose it with <code>aria-current=&#8221;page&#8221;</code>, not <code>aria-selected</code>.</p><h3>11.7 Expanded state</h3><p>The Menu item&#8217;s child menu is open.</p><p><strong>&#10004;&#65039; Requirements:</strong></p><ul><li><p>Expanded state must be visually indicated.</p></li><li><p>The Menu item must use <code>aria-expanded=&#8221;true&#8221;</code>.</p></li><li><p>The dropdown indicator should visually reflect the expanded state.</p></li><li><p>Expanded state must be visually distinct from hover, focused, current page, and active / pressed states.</p></li><li><p>Expanded state must result from intentional activation, not hover.</p></li></ul><p><strong>Expanded state should answer the user&#8217;s question:</strong></p><blockquote><p>Which item opened this menu?</p></blockquote><h3>11.8 Collapsed state</h3><p>The Menu item&#8217;s child menu is closed.</p><p><strong>&#10004;&#65039; Requirements:</strong></p><ul><li><p>Collapsed state must be visually indicated.</p></li><li><p>The Menu item must use <code>aria-expanded=&#8221;false&#8221;</code>.</p></li><li><p>The dropdown indicator should visually reflect the collapsed state.</p></li></ul><p>Collapsed state should still communicate that child items are available, usually through the dropdown indicator.</p><p>Collapsed state must result from initial page state or intentional dismissal behavior, not hover out.</p><h3>11.9 Disabled state</h3><p>The item is visible but not currently available.</p><p>Use disabled navigation items sparingly.</p><p><strong>&#10004;&#65039; Requirements:</strong></p><ul><li><p>Disabled items must not be activatable.</p></li><li><p>Disabled state must be visually distinct from default state.</p></li><li><p>Disabled state must not rely on color alone.</p></li><li><p>Disabled items should not receive keyboard focus unless there is a specific accessibility reason.</p></li><li><p>Disabled items must not open, close, reveal, or dismiss menus.</p></li><li><p>Hover over a disabled item may show a disabled visual treatment, but it must not trigger behavior.</p></li></ul><div class="callout-block" data-callout="true"><p><strong>&#128221; Implementation note: </strong>Standard links do not support the native disabled attribute. If a destination is unavailable, prefer removing it, explaining the unavailable state nearby, or implementing an intentionally disabled pattern with clear visual, keyboard, and screen reader behavior. If <code>aria-disabled=&#8221;true&#8221;</code> is used, the implementation must still prevent activation and communicate the disabled state visually.</p></div><p>When possible, avoid showing disabled items unless the unavailable option helps users understand status, permissions, or workflow constraints.</p><p>If users cannot do anything with the item and do not need to know it exists, consider removing it from the navigation instead of showing it as disabled.</p><h3>11.10 Combined interaction states</h3><p>Interaction states can combine. The design system should document these combinations visually so implementation teams know which cue takes priority.</p><p><strong>Common combinations include:</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mCD4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2068b1e-ba9d-4499-99b8-9fd4f6121b0a_1484x613.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mCD4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2068b1e-ba9d-4499-99b8-9fd4f6121b0a_1484x613.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mCD4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2068b1e-ba9d-4499-99b8-9fd4f6121b0a_1484x613.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mCD4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2068b1e-ba9d-4499-99b8-9fd4f6121b0a_1484x613.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mCD4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2068b1e-ba9d-4499-99b8-9fd4f6121b0a_1484x613.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mCD4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2068b1e-ba9d-4499-99b8-9fd4f6121b0a_1484x613.jpeg" width="1456" height="601" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a2068b1e-ba9d-4499-99b8-9fd4f6121b0a_1484x613.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:601,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:270918,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/197846073?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2068b1e-ba9d-4499-99b8-9fd4f6121b0a_1484x613.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mCD4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2068b1e-ba9d-4499-99b8-9fd4f6121b0a_1484x613.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mCD4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2068b1e-ba9d-4499-99b8-9fd4f6121b0a_1484x613.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mCD4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2068b1e-ba9d-4499-99b8-9fd4f6121b0a_1484x613.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mCD4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2068b1e-ba9d-4499-99b8-9fd4f6121b0a_1484x613.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>&#10004;&#65039; Requirements:</strong></p><ul><li><p>Combined states must preserve focus visibility.</p></li><li><p>Combined states must preserve the current page indicator.</p></li><li><p>Combined states must not imply that focus, current page, active, or selected are the same concept.</p></li><li><p>Combined states must not create a hybrid interaction model.</p></li><li><p>Combined states must not change whether an item behaves as a destination item or Menu item.</p></li><li><p>If the dropdown indicator is present for a Menu item, it should remain visible across applicable states.</p></li></ul><p>The attached primary navigation item state guide should be treated as a visual reference for documenting state combinations. The language in this pattern should describe these as combinations, such as Focused + Hover or Focused + Active + Current Page, not as single blended states.</p><h2>12. Accessibility Requirements</h2><h3>12.1 Semantic HTML first</h3><p>Use semantic HTML before ARIA.</p><p>From the interaction design perspective, semantic HTML matters because it gives users expected behavior for free. Links behave like links. Buttons behave like buttons. Navigation landmarks behave like navigation landmarks.</p><p><strong>&#10004;&#65039; Required:</strong></p><ul><li><p>Use <code>&lt;nav&gt;</code> for the primary navigation landmark.</p></li><li><p>Use <code>&lt;a&gt;</code> for destination items.</p></li><li><p>Use <code>&lt;button type=&#8221;button&#8221;&gt;</code> for Menu items.</p></li><li><p>Use<code> &lt;ul&gt;</code> and <code>&lt;li&gt; </code>for item collections when appropriate.</p></li><li><p>Use visible text labels wherever possible.</p></li></ul><p>&#10060; <strong>Avoid:</strong></p><ul><li><p>Styling<code> &lt;div&gt;</code> or <code>&lt;span&gt;</code> elements as links or buttons.</p></li><li><p>Adding <code>role=&#8221;button&#8221; </code>to non-button elements unless there is no native option.</p></li><li><p>Adding redundant ARIA to native HTML elements.</p></li><li><p>Using ARIA as a substitute for correct HTML structure.</p></li></ul><p><strong>The interaction rule should come first:</strong></p><ul><li><p>If the item navigates, use a link.</p></li><li><p>If the item opens or closes something, use a button.</p></li></ul><p>Menu items must be activated intentionally. Do not create custom hover-triggered disclosure behavior for this pattern.</p><h3>12.2 ARIA use</h3><p>ARIA should only be used when semantic HTML does not provide the required name, state, or relationship.</p><p>Use ARIA to communicate missing information, not to recreate native behavior that already exists.</p><div id="datawrapper-iframe" class="datawrapper-wrap outer" data-attrs="{&quot;url&quot;:&quot;https://datawrapper.dwcdn.net/eF5IE/3/&quot;,&quot;thumbnail_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d38062d6-4960-4f2c-a1e6-4a62cd28ba3d_1220x536.png&quot;,&quot;thumbnail_url_full&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b4327049-9367-46eb-82b8-20c1351e254c_1220x606.png&quot;,&quot;height&quot;:262,&quot;title&quot;:&quot;Created with Datawrapper&quot;,&quot;description&quot;:&quot;&quot;}" data-component-name="DatawrapperToDOM"><iframe id="iframe-datawrapper" class="datawrapper-iframe" src="https://datawrapper.dwcdn.net/eF5IE/3/" width="730" height="262" frameborder="0" scrolling="no"></iframe><script type="text/javascript">!function(){"use strict";window.addEventListener("message",(function(e){if(void 0!==e.data["datawrapper-height"]){var t=document.querySelectorAll("iframe");for(var a in e.data["datawrapper-height"])for(var r=0;r<t.length;r++){if(t[r].contentWindow===e.source)t[r].style.height=e.data["datawrapper-height"][a]+"px"}}}))}();</script></div><p>ARIA must stay synchronized with the visual state.</p><p><strong>For example:</strong></p><ul><li><p>If the menu is visually open, the Menu item should use <code>aria-expanded=&#8221;true&#8221;</code>.</p></li><li><p>If the menu is visually closed, the Menu item should use <code>aria-expanded=&#8221;false&#8221;</code>.</p></li></ul><p>Hover must not change ARIA state in this pattern. <code>aria-expanded</code> should change only when the menu is opened or closed through activation or defined dismissal behavior.</p><p>When a menu opens or closes, hidden, keyboard focusability, and <code>aria-expanded</code> should be updated together so users do not encounter hidden focusable content or visible content that is missing the correct expanded state.</p><h3>12.3 Accessible names</h3><p>Every interactive item must have an accessible name.</p><p><strong>&#10004;&#65039; Preferred order:</strong></p><ol><li><p>Visible text label</p></li><li><p>Visible text referenced with <code>aria-labelledby</code></p></li><li><p><code>aria-label</code> only when no visible label or referenceable text is available</p></li></ol><p>Do not use <code>aria-label</code> as the default labeling method.</p><p>Visible labels are preferred because they create the same cue for sighted users and screen reader users. This keeps the interaction model consistent across users.</p><h3>12.4 Menu roles</h3><p>Do not use <code>role=&#8221;menu&#8221; </code>or <code>role=&#8221;menuitem&#8221;</code> for standard primary navigation unless the component intentionally follows application menu behavior.</p><p>Most primary navigation should use native links, buttons, lists, and disclosure behavior.</p><p>Use application menu roles only when the component behaves like an application menu and supports the expected keyboard model for that pattern.</p><p>For standard web application primary navigation, application menu roles usually add unnecessary complexity.</p><p>Menu roles must not be used to justify hover-triggered behavior. The interaction model must still support intentional activation, keyboard operation, clear focus behavior, and predictable dismissal.</p><h3>12.5 Target size</h3><p>Frontend implementation must provide cursor and tap targets that are large enough to activate accurately.</p><p><strong>&#10004;&#65039; Requirements:</strong></p><ul><li><p>Interactive navigation targets should be at least 24 by 24 CSS pixels unless a valid exception applies. This is the minimum threshold, not the preferred size. Mobile menu controls, close controls, and accordion rows should be larger than the minimum whenever layout allows.</p></li><li><p>Adjacent interactive targets should include enough spacing to reduce accidental activation.</p></li><li><p>The whole disclosure row should usually be the target when a row expands or collapses a child section.</p></li><li><p>Dropdown indicators should communicate state, but they should not become the only small target users must hit.</p></li><li><p>Mobile menu controls, close controls, accordion rows, top-level links, and disclosure buttons must all be reviewed for target size.</p></li></ul><h3>12.6 Reduced motion</h3><p>Navigation must remain understandable and usable when motion is reduced or removed.</p><p><strong>&#10004;&#65039; Requirements:</strong></p><ul><li><p>Non-essential animation should respect prefers-reduced-motion.</p></li><li><p>Reduced motion should reduce or remove menu, panel, accordion, and indicator animations when appropriate.</p></li><li><p>State changes must still be clear without relying on animation.</p></li><li><p>Focus visibility must not be weakened by animation or by reduced-motion behavior.</p></li><li><p>Reduced-motion behavior must not change the underlying keyboard, cursor, or tap interaction model.</p></li></ul><h2>13. Responsive Behavior</h2><h3>13.1 Preserve interaction logic</h3><p>Interaction logic should remain consistent across breakpoints.</p><p>The layout may change from a horizontal desktop navigation bar to a mobile menu, but the meaning of each item should not change.</p><p><strong>Across desktop and mobile:</strong></p><ul><li><p>Destination items navigate directly.</p></li><li><p>Menu items open child menus.</p></li><li><p>Menu items include indicators.</p></li><li><p>Destination items do not include indicators.</p></li><li><p>Parent landing pages appear as overview child items.</p></li><li><p>Split-button behavior is avoided.</p></li><li><p>Menus and child sections open by activation only.</p></li><li><p>Hover does not open, close, reveal, or dismiss navigation content in this pattern.</p></li></ul><p>A user should not need to relearn what an item does because the viewport changed.</p><h3>13.2 Preserve navigation meaning</h3><p><strong>Responsive layouts must preserve:</strong></p><ul><li><p>Label clarity</p></li><li><p>Parent-child relationships</p></li><li><p>Destination availability</p></li><li><p>Current page indication</p></li><li><p>Keyboard access</p></li><li><p>Screen reader access</p></li></ul><p><strong>When primary navigation collapses into a mobile menu, users should still be able to understand:</strong></p><ul><li><p>Which section they are in</p></li><li><p>Which parent item contains the current page</p></li><li><p>Which items navigate directly</p></li><li><p>Which items expose child items</p></li><li><p>How to open and close child sections</p></li></ul><p>Do not simplify the mobile version by removing important destinations unless there is a clear, user-centered reason.</p><h3>13.3 Preserve current page indication</h3><p>The current page indicator must work across breakpoints.</p><p><strong>On desktop:</strong></p><ul><li><p>The current destination item should show the current page indicator.</p></li><li><p>If the current item is inside a dropdown or mega menu, the parent item may receive a parent-active treatment.</p></li></ul><p><strong>On mobile:</strong></p><ul><li><p>The current destination item should show the current page indicator when visible.</p></li><li><p>If the current item is inside a collapsed section, the parent row may receive a parent-active treatment.</p></li><li><p>Opening the parent section should reveal the child item with the current page indicator.</p></li></ul><p>The user should be able to open primary navigation and understand where they are in the application.</p><p>Current page indication must be persistent. It must not depend on hover, focus, or whether the user has recently interacted with the menu.</p><h3>13.4 Preserve dismissal behavior</h3><p>Menu dismissal behavior should remain predictable across breakpoints.</p><p><strong>Users should be able to dismiss open navigation UI by:</strong></p><ul><li><p>Activating the menu control again, when applicable</p></li><li><p>Activating a close control, when provided</p></li><li><p>Activating outside the navigation panel, when appropriate</p></li><li><p>Pressing the <code>Esc </code>key</p></li><li><p>Activating a destination item</p></li></ul><p>When dismissal occurs through the <code>Esc </code>key, focus should return to the item that opened the menu or panel.</p><p>Hover out must not dismiss open navigation UI on any breakpoint in this pattern.</p><h2>14. Common Anti-Patterns</h2><h3>14.1 Hover-triggered dropdown menus</h3><p>&#10060; <strong>Problem:</strong></p><ul><li><p>Do not design patterns where the menu opens, closes, reveals, or dismisses based on hover interactions. </p></li></ul><p><strong>Why this fails in this pattern:</strong></p><ul><li><p>The menu can open unintentionally.</p></li><li><p>The menu can close unintentionally.</p></li><li><p>Touch users cannot rely on hover.</p></li><li><p>Keyboard users may not receive equivalent access.</p></li><li><p>Users have less control over when the menu opens or closes.</p></li><li><p>Cursor movement becomes part of the interaction logic instead of simple visual feedback.</p></li></ul><p><strong>&#10004;&#65039; Correction:</strong></p><ul><li><p>Use activation-triggered disclosure behavior for this navigation pattern.</p></li><li><p>Keep hover as visual feedback only.</p></li><li><p>Do not use hover to change menu visibility in this pattern.</p></li></ul><h3>14.2 Icon-only mobile menu control</h3><p>&#10060; <strong>Problem:</strong></p><ul><li><p>Do not design patterns where the primary navigation on mobile is hidden behind an unlabeled icon.</p></li></ul><p><strong>Why this fails in this pattern:</strong></p><ul><li><p>The icon may not be recognized by all users.</p></li><li><p>The control depends on recall or learned convention.</p></li><li><p>The interaction has weaker information scent.</p></li><li><p>The accessible name may not match the visible UI.</p></li></ul><p><strong>&#10004;&#65039; Correction:</strong></p><ul><li><p>Use a visible Menu label.</p></li><li><p>The icon may remain as a supporting visual cue.</p></li></ul><h3>14.3 Split-button navigation row</h3><p>&#10060; <strong>Problem:</strong></p><ul><li><p>Do not design patterns where one row contains separate targets for navigation and submenu expansion.</p></li></ul><p><strong>Why this fails:</strong></p><ul><li><p>Users may not understand that the label and indicator perform different actions.</p></li><li><p>The row appears to have one function but actually has two.</p></li><li><p>The smaller target is easier to miss.</p></li><li><p>Behavior becomes less predictable on mobile.</p></li><li><p>The pattern makes users determine whether the text, icon, or surrounding row is the correct target.</p></li></ul><p><strong>&#10004;&#65039; Correction:</strong></p><ul><li><p>Use one interaction target per row.</p></li><li><p>If the parent category has a landing page, include it as an overview child item.</p></li><li><p>Activating the parent row should either navigate or disclose child items, not both.</p></li><li><p>The dropdown indicator should communicate disclosure state, not act as a separate control.</p></li></ul><h3>14.4 Vague item labels</h3><p>&#10060; <strong>Problem:</strong></p><ul><li><p>Do not design patterns where the item label does not clearly communicate the destination, task, or category.</p></li></ul><p><strong>Why this fails:</strong></p><ul><li><p>Users have to interpret the label before activating it.</p></li><li><p>The item may appear to overlap with other items.</p></li><li><p>Users may open the item only to understand what it means.</p></li><li><p>The navigation becomes harder to scan.</p></li></ul><p><strong>&#10004;&#65039; Correction:</strong></p><ul><li><p>Use plain, descriptive, user-recognizable labels.</p></li><li><p>Use labels that describe what the user will find or do after activating the item.</p></li><li><p>Avoid labels that depend on internal terminology or feature team language.</p></li></ul><h3>14.5 Duplicated destinations</h3><p>&#10060; <strong>Problem:</strong></p><ul><li><p>Do not design patterns where the same destination appears in multiple primary navigation areas.</p></li></ul><p><strong>Why this fails:</strong></p><ul><li><p>Users may wonder whether the items lead to the same place or different places.</p></li><li><p>The structure becomes harder to learn.</p></li><li><p>The navigation may appear larger and more complex than it is.</p></li></ul><p><strong>&#10004;&#65039; Correction:</strong></p><ul><li><p>Place each destination in the most user-expected location.</p></li><li><p>Duplicate destinations only when research shows users strongly expect the same destination in more than one category.</p></li></ul><h3>14.6 Deep nested navigation</h3><p>&#10060; <strong>Problem:</strong></p><ul><li><p>Do not design patterns where users must move through multiple levels before reaching a destination.</p></li></ul><p><strong>Why this fails:</strong></p><ul><li><p>Each level adds interaction cost.</p></li><li><p>Each level requires users to interpret another abstraction.</p></li><li><p>The path becomes easier to abandon or misunderstand.</p></li></ul><p><strong>&#10004;&#65039; Correction:</strong></p><ul><li><p>Flatten the hierarchy where practical.</p></li><li><p>Expose terminal nodes more directly.</p></li><li><p>Use grouped mega menu layouts when many destinations need to be visible.</p></li></ul><h3>14.7 Non-semantic controls</h3><p>&#10060; <strong>Problem:</strong></p><ul><li><p>Do not design patterns where non-interactive element is styled to behave like a link or button.</p></li></ul><p><strong>Why this fails:</strong></p><ul><li><p>Keyboard behavior may not work correctly.</p></li><li><p>Screen reader behavior may be incorrect or incomplete.</p></li><li><p>Focus behavior may be missing.</p></li><li><p>Users may receive false cues about what the item does.</p></li></ul><p><strong>&#10004;&#65039; Correction:</strong></p><ul><li><p>Use native<code> &lt;a&gt; </code>elements for destination items.</p></li><li><p>Use native <code>&lt;button type=&#8221;button&#8221;&gt;</code> elements for Menu items.</p></li><li><p>Use ARIA only when semantic HTML does not provide the required name, state, or relationship.</p></li></ul><h3>14.8 Missing expanded state</h3><p>&#10060; <strong>Problem:</strong></p><ul><li><p>Do not design patterns where the menu opens visually but does not expose expanded or collapsed state.</p></li></ul><p><strong>Why this fails:</strong></p><ul><li><p>Screen reader users may not know whether the child menu is open.</p></li><li><p>The state of the item becomes unclear.</p></li><li><p>The visual UI and programmatic UI are out of sync.</p></li></ul><p><strong>&#10004;&#65039; Correction:</strong></p><ul><li><p>Use <code>aria-expanded </code>on the Menu item.</p></li><li><p>Keep<code> aria-expanded</code> synchronized with the visual state.</p></li><li><p>Update expanded state only when the menu is opened or closed through intentional activation or dismissal.</p></li></ul><h3>14.9 Defaulting to ARIA instead of semantic HTML</h3><p>&#10060; <strong>Problem:</strong></p><ul><li><p>Do not design patterns where ARIA is used to recreate behavior that native HTML already provides.</p></li></ul><p><strong>Why this fails:</strong></p><ul><li><p>The implementation becomes more fragile.</p></li><li><p>Native keyboard behavior may be lost.</p></li><li><p>Assistive technology behavior may become less predictable.</p></li><li><p>The team may accidentally create a custom component with incomplete interaction support.</p></li></ul><p><strong>&#10004;&#65039; Correction:</strong></p><ul><li><p>Use semantic HTML first.</p></li><li><p>Use ARIA only to communicate missing names, states, or relationships.</p></li></ul><h3>14.10 Misusing selected state</h3><p>&#10060; <strong>Problem:</strong></p><ul><li><p>Do not design patterns where selected state is used to represent the current page in standard primary navigation.</p></li></ul><p><strong>Why this fails:</strong></p><ul><li><p>Selection and current location are different concepts.</p></li><li><p><code>aria-selected </code>communicates selection semantics, not current page location.</p></li><li><p>Users of assistive technology may receive the wrong cue.</p></li></ul><p><strong>&#10004;&#65039; Correction:</strong></p><ul><li><p>Use current page state for the current route.</p></li><li><p>Use<code> aria-current=&#8221;page&#8221;</code> on the current destination item.</p></li><li><p>Reserve selected state and <code>aria-selected</code> for components with true selection semantics.</p></li></ul><h3>14.11 Treating combined states as new interaction types</h3><p>&#10060; <strong>Problem:</strong></p><ul><li><p>Do not design patterns where a combined visual state is documented as though it were a new standalone interaction type.</p></li></ul><p><strong>Why this fails:</strong></p><ul><li><p>It can blur the difference between focus, hover, active, current page, expanded, collapsed, selected, and disabled.</p></li><li><p>It can make implementation teams think the component needs additional semantic states.</p></li><li><p>It can make accessibility state management more complicated than it needs to be.</p></li></ul><p><strong>&#10004;&#65039; Correction:</strong></p><ul><li><p>Document combined states as combinations of existing states.</p></li><li><p>Preserve the semantic meaning of each state.</p></li><li><p>Use <code>aria-current=&#8221;page&#8221; </code>for current page state.</p></li><li><p>Use <code>aria-expanded</code> for disclosure state.</p></li><li><p>Do not use <code>aria-selected</code> for standard primary navigation links.</p></li><li><p>Do not treat focus combinations as hybrid interaction patterns.</p></li></ul><h2>15. Validation Checklist</h2><h3>15.1 Information architecture</h3><ul><li><p>Parent-child relationships are clear.</p></li><li><p>Child items belong logically under their parent items.</p></li><li><p>Terminal nodes are easy to identify.</p></li><li><p>The hierarchy is as flat as practical.</p></li><li><p>Child items are grouped by user expectations.</p></li><li><p>Duplicate destinations are avoided.</p></li><li><p>Parent landing pages are represented as overview child items.</p></li></ul><h3>15.2 Desktop behavior</h3><ul><li><p>Menus open by activation only.</p></li><li><p>Hover does not open menus in this pattern.</p></li><li><p>Hover does not close menus in this pattern.</p></li><li><p>Hover does not reveal child items in this pattern.</p></li><li><p>Hover does not dismiss child items in this pattern.</p></li><li><p>Hover state is visual feedback only.</p></li><li><p>Menu items include dropdown indicators.</p></li><li><p>Destination items do not include dropdown indicators.</p></li><li><p>Menus can be dismissed by <code>Esc</code>, activate outside, moving focus out of the open navigation region when defined, trigger toggle, or activating another item.</p></li><li><p>Animations are brief and do not delay access to child items.</p></li><li><p>Non-essential animation respects reduced-motion preferences.</p></li><li><p><code>Esc </code>returns focus to the item that opened the menu.</p></li></ul><h3>15.3 Mobile behavior</h3><ul><li><p>Mobile menu control has a visible Menu label.</p></li><li><p>Icon-only primary navigation controls are not used.</p></li><li><p>Mobile navigation opens by activation only.</p></li><li><p>Mobile navigation closes by activation or defined dismissal behavior.</p></li><li><p>Split-button behavior is not used.</p></li><li><p>Each row has one interaction target.</p></li><li><p>Parent landing pages are included as overview child items.</p></li><li><p>Accordion sections expand and collapse by activation only.</p></li><li><p>Accordion state is visually and programmatically exposed.</p></li><li><p>Current page indication is preserved in the mobile menu.</p></li><li><p>Menu and close controls meet target-size requirements and are larger than the minimum whenever layout allows.</p></li><li><p>Accordion rows provide a target area large enough for touch input and are larger than the minimum whenever layout allows.</p></li><li><p>Panel and accordion animation respects reduced-motion preferences.</p></li><li><p>If a mobile navigation panel blocks background interaction, it is treated as a modal-style experience with intentional focus management, <code>Esc </code>support, background-interaction prevention, and focus restoration.</p></li></ul><h3>15.4 Keyboard behavior</h3><ul><li><p>Tab order follows the visual and logical structure.</p></li><li><p>Every interactive item has a visible focused state.</p></li><li><p>Enter activates links and buttons.</p></li><li><p>Space activates buttons.</p></li><li><p><code>Esc </code>dismisses open menus.</p></li><li><p>Focus returns to the triggering item after dismissal.</p></li><li><p>Focus is not trapped inside standard dropdown menus or mega menus.</p></li><li><p>Focused state alone does not open a menu.</p></li></ul><h3>15.5 Cursor behavior</h3><ul><li><p>Hover / over state is visual feedback only.</p></li><li><p>Cursor movement does not open menus.</p></li><li><p>Cursor movement does not close menus.</p></li><li><p>Cursor movement does not reveal child items.</p></li><li><p>Cursor movement does not dismiss child items.</p></li><li><p>Hover out removes only the hover state.</p></li><li><p>Activate outside dismisses open menus when appropriate.</p></li><li><p>Interactive targets are at least 24 by 24 CSS pixels unless a valid exception applies, with larger mobile targets used whenever layout allows. The 24 by 24 size is the minimum threshold, not the preferred target size.</p></li><li><p>Adjacent targets include enough spacing to reduce accidental activation.</p></li></ul><h3>15.6 Interaction states</h3><ul><li><p>Default state is defined as the base visual treatment for an available item.</p></li><li><p>Hover / over state is defined as visual feedback only.</p></li><li><p>Focused state is defined.</p></li><li><p>Active / pressed state is defined.</p></li><li><p>Current page state is defined.</p></li><li><p>Selected state is defined only where selection semantics apply.</p></li><li><p>Expanded state is defined.</p></li><li><p>Collapsed state is defined.</p></li><li><p>Disabled state is defined only where needed.</p></li><li><p>Common combined states are documented visually.</p></li><li><p>Combined states preserve focus visibility.</p></li><li><p>Combined states preserve the current page indicator.</p></li><li><p>Combined states do not create new semantic roles.</p></li><li><p>Combined states do not imply hybrid interaction behavior.</p></li><li><p>Current page state is visually distinct from hover, focused, selected, expanded, and active / pressed states.</p></li><li><p>The currently displayed page, section, or route has a visible current page indicator.</p></li><li><p>The current page indicator is persistent and does not depend on hover or focus.</p></li><li><p>Parent items may receive visual parent-active treatment when the current page belongs to their child menu.</p></li><li><p>Expanded and collapsed states change only through activation or defined dismissal behavior.</p></li></ul><h3>15.7 Accessibility</h3><ul><li><p>Primary navigation uses semantic HTML by default.</p></li><li><p>Destination items use native <code>&lt;a&gt; </code>elements.</p></li><li><p>Menu items use native <code>&lt;button type=&#8221;button&#8221;&gt;</code> elements.</p></li><li><p>Visible labels are used wherever possible.</p></li><li><p><code>aria-labelledby</code> is preferred when a visible or visually hidden label needs to be referenced.</p></li><li><p><code>aria-label</code> is used only when no visible or referenceable text is available.</p></li><li><p><code>aria-label=&#8221;Primary&#8221;</code> is preferred over <code>aria-label=&#8221;Primary navigation&#8221;</code> when labeling the primary navigation landmark directly.</p></li><li><p>Current page state uses <code>aria-current=&#8221;page&#8221;</code>.</p></li><li><p>Menu items use<code> aria-expanded</code>.</p></li><li><p><code>aria-controls</code> is optional and used only when an explicit control-to-menu relationship is needed.</p></li><li><p><code>aria-expanded</code> changes only when the visual menu state changes.</p></li><li><p>Hover does not change ARIA state in this pattern.</p></li><li><p><code>aria-selected</code> is not used for standard primary navigation links.</p></li><li><p>ARIA does not replace semantic HTML.</p></li><li><p>Visual state and programmatic state stay synchronized.</p></li><li><p>When menus open or close, hidden, keyboard focusability, and <code>aria-expanded</code> stay synchronized.</p></li><li><p>Animated menu transitions do not leave focusable content hidden from sighted users or visible content hidden from assistive technologies.</p></li><li><p>Disabled links are not implemented with a native disabled attribute. Unavailable destinations are removed, explained, or intentionally implemented with clear disabled behavior.</p></li><li><p>Interactive navigation controls meet target-size requirements, with larger mobile controls used whenever layout allows.</p></li><li><p>Non-essential navigation animation respects reduced-motion preferences.</p></li><li><p>Navigation remains understandable when animation is reduced or removed.</p></li></ul><h2>16. Final Acceptance Criteria List</h2><p><strong>The primary navigation bar meets these specifications when:</strong></p><ol><li><p>Users can distinguish destination items from Menu items.</p></li><li><p>Dropdown menus and mega menus open only by intentional activation.</p></li><li><p>Hover does not open, close, reveal, or dismiss dropdown menus, mega menus, or child navigation items in this pattern.</p></li><li><p>Hover / over state is visual feedback only.</p></li><li><p>Menu items include dropdown indicators.</p></li><li><p>Destination items do not include dropdown indicators.</p></li><li><p>The dropdown indicator is not a separate interaction target.</p></li><li><p>Open menus can be dismissed through <code>Esc</code>, activate outside, trigger toggle, moving focus out of the open navigation region when defined, or activating another item.</p></li><li><p>Pressing <code>Esc </code>closes the menu and returns focus to the item that opened it.</p></li><li><p>The currently displayed page, section, or route has a persistent visible current page indicator.</p></li><li><p>The current page indicator is visually distinct from hover, focused, selected, expanded, and active / pressed states.</p></li><li><p>The current destination item uses <code>aria-current=&#8221;page&#8221;</code>.</p></li><li><p>Parent Menu items may receive visual parent-active treatment when the current page belongs to their child menu.</p></li><li><p>Parent Menu items do not use<code> aria-current=&#8221;page&#8221; </code>unless the parent item itself is the current page.</p></li><li><p>The mobile menu control includes a visible Menu label.</p></li><li><p>Mobile navigation opens by activation only.</p></li><li><p>Mobile navigation does not use split-button behavior.</p></li><li><p>If a mobile navigation panel blocks background interaction, it is treated as a modal-style experience with intentional focus management and focus restoration.</p></li><li><p>Parent landing pages are available as overview child items.</p></li><li><p>Accordion sections expand and collapse by activation only.</p></li><li><p>All interactive items are keyboard operable.</p></li><li><p>All interactive items have visible focused states.</p></li><li><p>All interactive navigation targets provide at least 24 by 24 CSS pixels of target area unless a valid exception applies, with larger mobile targets used whenever layout allows. The 24 by 24 size is treated as the minimum threshold, not the preferred target size.</p></li><li><p>Adjacent interactive targets include enough spacing to reduce accidental activation.</p></li><li><p>Focused state alone does not open a menu.</p></li><li><p>Disclosure state is exposed with <code>aria-expanded</code>.</p></li><li><p><code>aria-controls</code> is optional and used only when an explicit control-to-menu relationship is needed.</p></li><li><p><code>aria-expanded</code> stays synchronized with the visual open or closed state.</p></li><li><p>When menus open or close, hidden, keyboard focusability, and<code> aria-expanded</code> stay synchronized.</p></li><li><p>Animated menu transitions do not leave focusable content hidden from sighted users or visible content hidden from assistive technologies.</p></li><li><p>Hover does not change <code>aria-expanded</code> in this pattern.</p></li><li><p>Item labels are clear, consistent, and user-recognizable.</p></li><li><p>The navigation hierarchy avoids unnecessary nesting.</p></li><li><p>Terminal nodes are clearly exposed within child menus.</p></li><li><p>Primary navigation uses semantic HTML by default.</p></li><li><p>aria-label is used only when no visible or referenceable label is available.</p></li><li><p><code>aria-label=&#8221;Primary&#8221;</code> is preferred over <code>aria-label=&#8221;Primary navigation&#8221; </code>when directly labeling the primary navigation landmark.</p></li><li><p>ARIA is only used to communicate missing names, states, or relationships that semantic HTML does not provide on its own.</p></li><li><p>Non-essential navigation animation respects prefers-reduced-motion.</p></li><li><p>Navigation state remains clear when animation is reduced or removed.</p></li><li><p>Selected state is not used as a substitute for current page state.</p></li><li><p><code>aria-selected </code>is not used for standard primary navigation links.</p></li><li><p>Combined visual states are documented as combinations of existing states, not as new semantic states.</p></li><li><p>Focus combinations do not imply a hybrid interaction pattern.</p></li><li><p>Disabled navigation items are used sparingly and only when they help users understand status, permissions, or workflow constraints.</p></li><li><p>Disabled links are not implemented with a native disabled attribute. Unavailable destinations are removed, explained, or intentionally implemented with clear disabled behavior.</p><div><hr></div></li></ol><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://trevorcalabro.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">UX Research in the Wild is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[A/B Test Strategies That Work]]></title><description><![CDATA[Why Winning Isn&#8217;t the Same as Learning]]></description><link>https://trevorcalabro.substack.com/p/ab-test-strategies-that-work</link><guid isPermaLink="false">https://trevorcalabro.substack.com/p/ab-test-strategies-that-work</guid><dc:creator><![CDATA[Trevor Calabro]]></dc:creator><pubDate>Sat, 09 May 2026 17:08:23 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/1396df01-9001-4f80-99f6-7e959f7c26a3_694x619.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Summary: </strong>A/B testing can be useful, but only when the variations being tested are grounded in a clear user problem, a strong hypothesis, and a realistic understanding of what the test can prove. UX researchers should help teams shape better A/B testing strategy by clarifying the problem, improving the variation, adding guardrail metrics, and making sure &#8220;winning&#8221; does not get confused with meaningful learning.</p><div><hr></div><div class="callout-block" data-callout="true"><p>&#9888;&#65039; <strong>Disclaimer: </strong>This article is for situations where you <em><strong>absolutely must</strong></em> run an A/B test. I typically prefer other, more robust methods for learning about design variations. If you are interested in alternatives to A/B testing, start with these articles:</p><ul><li><p><a href="https://trevorcalabro.substack.com/p/how-to-conduct-a-multivariate-test">How to Conduct a Multivariate Test Using Excel or Google Sheets</a></p></li><li><p><a href="https://trevorcalabro.substack.com/p/more-meaningful-comparisons-with">More Meaningful Comparisons With Chi-squared Testing</a></p></li><li><p><a href="https://trevorcalabro.substack.com/p/another-way-ab-tests-mislead">Another Way A/B Tests Mislead</a></p></li></ul></div><p>Have you ever been in a meeting where everyone on the team starts debating a call to action, a dashboard card, an onboarding step, standard form field behavior, or some other part of a design, and everyone seems to have a strong opinion? One person thinks the button label should be more direct. Someone else thinks the page needs more explanatory text. Someone else wants to move the action higher on the screen because they are worried users will miss it. Then someone says that dreaded question, &#8220;Why don&#8217;t we just A/B test it?&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!etxT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bcca5dd-c027-44b9-ae9f-4eda9b42e4d5_3000x1158.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!etxT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bcca5dd-c027-44b9-ae9f-4eda9b42e4d5_3000x1158.jpeg 424w, https://substackcdn.com/image/fetch/$s_!etxT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bcca5dd-c027-44b9-ae9f-4eda9b42e4d5_3000x1158.jpeg 848w, https://substackcdn.com/image/fetch/$s_!etxT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bcca5dd-c027-44b9-ae9f-4eda9b42e4d5_3000x1158.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!etxT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bcca5dd-c027-44b9-ae9f-4eda9b42e4d5_3000x1158.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!etxT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bcca5dd-c027-44b9-ae9f-4eda9b42e4d5_3000x1158.jpeg" width="1456" height="562" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2bcca5dd-c027-44b9-ae9f-4eda9b42e4d5_3000x1158.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:562,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:643135,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/197026193?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bcca5dd-c027-44b9-ae9f-4eda9b42e4d5_3000x1158.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!etxT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bcca5dd-c027-44b9-ae9f-4eda9b42e4d5_3000x1158.jpeg 424w, https://substackcdn.com/image/fetch/$s_!etxT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bcca5dd-c027-44b9-ae9f-4eda9b42e4d5_3000x1158.jpeg 848w, https://substackcdn.com/image/fetch/$s_!etxT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bcca5dd-c027-44b9-ae9f-4eda9b42e4d5_3000x1158.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!etxT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bcca5dd-c027-44b9-ae9f-4eda9b42e4d5_3000x1158.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>To all the non-UX researchers in the room, that sounds like a valid question. It feels objective and data-driven. I get the appeal. Instead of arguing, the team can let users decide through behavior. Easy peasy. Done and done.</p><p>We all know that in the right context, that can be a good instinct. A/B testing can be useful because it gives teams a way to compare real behavior in a live product. It can reduce opinion-driven decision-making, help teams avoid endless internal debates, and sometimes reveal that the version everyone loved in a meeting is not the version users actually respond to in practice.</p><p>The problem starts when the team treats the test itself as the thing that creates rigor.</p><div class="pullquote"><p>The A/B mechanics can produce clean results while the thing being tested is still weak as hell. I see teams often randomly assign users, define a success metric, run the test long enough, and still end up with a result that does not teach them much.</p></div><p>A/B testing only compares the variations the team puts into the test. It does not make those variations are any good. If the variation is shallow, the learning will probably be shallow too. If the variation is based on a misunderstanding of the user problem, the result may only tell the team which version of the misunderstanding performed better.</p><p>In this article, I want to help reframe the way UX professionals respond to the question, &#8220;Why don&#8217;t we just A/B test it?&#8221; Instead of shutting the idea down outright, a better response is to slow the team down just enough to ask what the variation is actually testing. That is where UX research can add a lot of value before the test ever goes live.</p><h1>What A/B Data Leaves Out</h1><p>To run good A/B tests, you need to focus on the work that happens before the traffic split. The team has to clearly define what problem they believe exists, what user behavior they are trying to learn about, and what design variation would best test that belief. You guessed it: this is called strategy and study design. If your strategy sucks, the test can still produce clean-looking data, but it can also be super misleading.</p><p>The example I like to use is what I call the &#8220;make it more obvious&#8221; variation. You know the type of test. Let&#8217;s say Version A has a standard button at the bottom of a screen. Version B has a larger, higher-contrast button with more urgent language. The team runs the test, and Version B gets more clicks, so the result gets interpreted as proof that the new design is better. That may be true in one narrow sense. Version B produced more clicks on the metric the team selected.</p><p><strong>Here are several different explanations packed into that result:</strong></p><ul><li><p>The button may have been easier to find.</p></li><li><p>The copy may have been clearer.</p></li><li><p>The visual treatment may have pulled attention away from other information.</p></li><li><p>The urgent language may have pushed users to act before they fully understood the decision.</p></li></ul><p>Those are not small differences. They point to different design problems and different next steps. If the real issue was discoverability, the team might need a better layout hierarchy. If the real issue was unclear copy, the team might need a better label. If the improvement came from pressure, the team may have increased short-term clicks at the expense of trust or downstream success.</p><div class="pullquote"><p>The A/B test by itself does not sort all of that out. It tells the team what happened between two variations under the conditions of the test. That&#8217;s it. Full stop.</p></div><p>In UX research, we are usually trying to understand how people make sense of a system, where they struggle, what they need to know before acting, and whether the design helps them complete the task with confidence. A/B testing can support that work, but it does not replace the thinking needed to create a meaningful variation. This is where I see the method misused the most. In the overuse and overinterpretation of the data.</p><h1>Strong Variations</h1><p>I see too many of these misleading and weak A/B test strategies in the real world. A weak A/B test often starts with a super vague hypothesis. &#8220;We think this version will perform better&#8221; is technically a prediction, but it does not give the team much to go off of. It does not explain what user problem the team thinks it is solving, what part of the design is expected to change behavior, or what the team will learn if the variation wins or loses.</p><p>A stronger UX hypothesis is much more specific. For example, &#8220;We believe users are missing the primary action because the current button label is vague and visually disconnected from the task. If we make the label more specific while keeping the button placement, size, and color the same, more users will continue to the next step.&#8221; The value in this reframing is that it forces the team to be clear about the link between the user problem, the design change, and the expected behavior change.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pGhG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf5975dc-1c75-4b83-8a2e-9d3269234f2a_1854x848.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pGhG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf5975dc-1c75-4b83-8a2e-9d3269234f2a_1854x848.png 424w, https://substackcdn.com/image/fetch/$s_!pGhG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf5975dc-1c75-4b83-8a2e-9d3269234f2a_1854x848.png 848w, https://substackcdn.com/image/fetch/$s_!pGhG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf5975dc-1c75-4b83-8a2e-9d3269234f2a_1854x848.png 1272w, https://substackcdn.com/image/fetch/$s_!pGhG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf5975dc-1c75-4b83-8a2e-9d3269234f2a_1854x848.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pGhG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf5975dc-1c75-4b83-8a2e-9d3269234f2a_1854x848.png" width="485" height="221.84752747252747" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/af5975dc-1c75-4b83-8a2e-9d3269234f2a_1854x848.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:666,&quot;width&quot;:1456,&quot;resizeWidth&quot;:485,&quot;bytes&quot;:1143078,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/197026193?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf5975dc-1c75-4b83-8a2e-9d3269234f2a_1854x848.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pGhG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf5975dc-1c75-4b83-8a2e-9d3269234f2a_1854x848.png 424w, https://substackcdn.com/image/fetch/$s_!pGhG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf5975dc-1c75-4b83-8a2e-9d3269234f2a_1854x848.png 848w, https://substackcdn.com/image/fetch/$s_!pGhG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf5975dc-1c75-4b83-8a2e-9d3269234f2a_1854x848.png 1272w, https://substackcdn.com/image/fetch/$s_!pGhG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf5975dc-1c75-4b83-8a2e-9d3269234f2a_1854x848.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>This is where we can make our A/B testing strategies much stronger. Before the team creates a variation, research can help explain what is actually happening in the current experience:</p><ul><li><p><strong>Usability testing</strong> can show where users hesitate, misread the interface, or misunderstand the next step.</p></li><li><p><strong>Interviews</strong> can reveal concerns users have before committing to an action.</p></li><li><p><strong>Behavioral analytics</strong> can show repeated backtracking, abandonment, or drop-off patterns.</p></li><li><p><strong>Session replay</strong> can reveal behaviors like misclicks or repeated attempts to use unavailable or hidden controls.</p></li></ul><p>Those findings lead to better variations because they ground the design change in observed behavior. The team is no longer guessing if the button needs to be a brighter color because someone in the room thinks bright colors buttons perform better. Instead, they are responding to a specific problem within the experience, in the real world.</p><p>This is an overly simplistic example, but I hope you can see how this changes the quality of the test. Instead of comparing two versions of a screen because the team has two opinions, the team is testing a specific explanation for user behavior. The A/B test becomes a way to measure whether a research-informed design change improves the outcome the team cares about.</p><p>To be clear, that does not guarantee the variation will win. In some cases, the research-informed version will underperform. That data is still useful if the original hypothesis was clear. Losing variations can teach us as much as winning ones, and in many cases, they are more insightful because they unearth institutionalized bias.</p><h1>How to Think About Claims</h1><p>The phrase &#8220;A/B test&#8221; is powerful in many orgs, especially product-led ones that have taken a page out of the debunked Silicon Valley &#8220;move fast and break things&#8221; playbook. The power comes for the misunderstanding I&#8217;ve been talking about.</p><div class="pullquote"><p>A/B tests commonly make almost any comparison sound more precise and definitive than it really is.</p></div><p>In the real world, teams often use A/B testing to compare two designs that differ in several ways at once. That can be useful, but the team needs to be honest about what kind of claim the test can support, and we, as UX researchers, should be there to help them with that.</p><p>Imagine Version A has a button labeled &#8220;Continue&#8221; at the bottom of the page. Help text is hidden behind an icon. The page has three sections, and users have to scroll to review everything before moving forward.</p><p>Version B changes the button label to &#8220;Review and Submit,&#8221; makes the button sticky, adds visible help text, reduces the page to two sections, and introduces a progress indicator.</p><p>If Version B performs better, the team has learned something. The new version, as a full design package, performed better than the old version. That may be enough if the team&#8217;s goal is simply to decide whether to ship the redesigned flow.</p><p>The problem comes when the team tries to make a narrower claim than the test design supports. If five things changed, the result does not prove that the button label caused the improvement. Any of those changes may have helped. Several may have worked together. One may have helped while another made the experience worse.</p><p><strong>Here are some examples:</strong></p><ul><li><p><strong>One button label changes, while placement, size, color, and flow stay the same</strong> - Reasonable claim: evidence about the effect of the label change.</p></li><li><p><strong>A full-page redesign changes layout, copy, hierarchy, and interaction patterns - </strong>Reasonable claim: comparison between two design packages, not proof that one specific element caused the result.</p></li><li><p><strong>Several elements change at once without a clear hypothesis - </strong>Reasonable claim: the team may know which version won, but interpretation will be weak.</p></li><li><p><strong>Multiple variables need to be studied separately - </strong>Better fit: <a href="https://trevorcalabro.substack.com/p/how-to-conduct-a-multivariate-test">a multivariate test</a> or staged testing plan that can isolate the contribution of each variable.</p></li></ul><p>This is why the learning goal has to match the variation. If the team wants to know whether clearer button copy reduces hesitation, the variation should isolate the button copy as much as possible. Keep the placement, visual treatment, surrounding content, and flow stable. That gives the result a cleaner interpretation.</p><p>If the team wants to compare two broader design directions, a bundled variation may be fine. A larger redesign often changes layout, information hierarchy, interaction patterns, content, and visual emphasis together because those pieces are connected. In that case, the test is answering whether this complete version performs better than that complete version.</p><p>Both types of tests can be useful. They just answer different questions. A focused variation supports a focused claim. A bundled variation supports a broader comparison. Trouble starts when a team runs the second kind of test and talks about the result as if it came from the first.</p><p>For UX researchers, this is one of the most important places to push for clarity. The goal is to help the team understand what they will actually be able to learn. Sometimes that means isolating one variable. Other times it means testing a larger design direction. Either way, the variation should match the decision the team needs to make.</p><h1>These Metrics in Context</h1><p>A/B testing gets especially tricky when the success metric is too narrow. A variation can win on the primary metric and still make the overall experience worse. That is one of the easiest ways teams accidentally turn A/B testing into a machine for optimizing local behavior instead of improving the actual user experience.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Gf3t!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39396d6-1159-4a3b-af5f-b483f277d7a0_803x419.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Gf3t!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39396d6-1159-4a3b-af5f-b483f277d7a0_803x419.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Gf3t!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39396d6-1159-4a3b-af5f-b483f277d7a0_803x419.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Gf3t!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39396d6-1159-4a3b-af5f-b483f277d7a0_803x419.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Gf3t!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39396d6-1159-4a3b-af5f-b483f277d7a0_803x419.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Gf3t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39396d6-1159-4a3b-af5f-b483f277d7a0_803x419.jpeg" width="432" height="225.41469489414695" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f39396d6-1159-4a3b-af5f-b483f277d7a0_803x419.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:419,&quot;width&quot;:803,&quot;resizeWidth&quot;:432,&quot;bytes&quot;:101481,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/197026193?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39396d6-1159-4a3b-af5f-b483f277d7a0_803x419.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Gf3t!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39396d6-1159-4a3b-af5f-b483f277d7a0_803x419.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Gf3t!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39396d6-1159-4a3b-af5f-b483f277d7a0_803x419.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Gf3t!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39396d6-1159-4a3b-af5f-b483f277d7a0_803x419.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Gf3t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff39396d6-1159-4a3b-af5f-b483f277d7a0_803x419.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>This happens a lot with clicks. Clicks are easy to measure, so they often become the thing the team optimizes for. If Version B gets more clicks than Version A, the dashboard looks good. The test has a winner. The team can point to a number and say the variation worked.</p><p>But more clicks are not always better. A user can click because the next step is clearer. A user can also click because the design pressured them, distracted them, interrupted them, or made one action more visually dominant than everything else on the screen. Those are very different outcomes, even if they produce the same short-term metric.</p><p>This is where guardrail metrics matter. A team should know what the variation is supposed to improve, but they should also know what they do not want to make worse. Otherwise, the team may optimize one behavior while quietly damaging another part of the experience.</p><p><strong>Some common examples:</strong></p><ul><li><p>More clicks, but lower downstream completion</p></li><li><p>More signups, but more support contacts</p></li><li><p>More feature activation, but more abandonment later</p></li><li><p>More engagement, but lower trust</p></li><li><p>More interaction, but worse accessibility</p></li></ul><p>The point is not that every A/B test needs a giant measurement framework. That would be overkill for many product decisions. The point is that the team should think beyond the one number that declares the winner.</p><p>A modal that increases feature activation might also increase dismissals, frustration, and support questions. A more aggressive confirmation message might push more users through a flow while making them less confident in what they just agreed to. A redesigned call to action might improve one user segment while creating problems for another segment with different goals, permissions, or prior knowledge.</p><p>In complicated software, this gets even messier because the thing being tested is often part of a larger workflow. A design change can make one screen perform better while creating confusion two steps later. The test result may look positive if the team stops measuring at the first click, but the user experience may not actually be better.</p><p>This is another place where UX researchers can add useful context. The question is not only, &#8220;Did the number go up?&#8221; The better question is, &#8220;What else might this variation affect?&#8221; That one question can change the quality of the test. It can push the team to look at completion, error rates, backtracking, support clicks, time on task, accessibility concerns, or downstream abandonment. It can also prevent the team from declaring victory too early, just because the easiest metric moved in the right direction.</p><div class="pullquote"><p>A/B testing is useful because it measures behavior. But behavior still needs interpretation. A winning variation should be judged by whether it improves the experience in a way the org can responsibly defend, not just by whether it wins one metric in one part of the flow.</p></div><h1>Don&#8217;t Skip Step 1</h1><p>UX researchers do not need to own the experimentation platform to improve the quality of A/B testing. In many orgs, the platform, instrumentation, traffic allocation, and statistical setup will sit with product analytics, engineering, data science, or growth teams. That does not mean UX research has nothing to contribute.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!y6f7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda19c9fd-08ad-4596-863d-7b628eb4d407_448x500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!y6f7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda19c9fd-08ad-4596-863d-7b628eb4d407_448x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!y6f7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda19c9fd-08ad-4596-863d-7b628eb4d407_448x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!y6f7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda19c9fd-08ad-4596-863d-7b628eb4d407_448x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!y6f7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda19c9fd-08ad-4596-863d-7b628eb4d407_448x500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!y6f7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda19c9fd-08ad-4596-863d-7b628eb4d407_448x500.jpeg" width="212" height="236.60714285714286" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/da19c9fd-08ad-4596-863d-7b628eb4d407_448x500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:448,&quot;resizeWidth&quot;:212,&quot;bytes&quot;:119027,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/197026193?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda19c9fd-08ad-4596-863d-7b628eb4d407_448x500.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!y6f7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda19c9fd-08ad-4596-863d-7b628eb4d407_448x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!y6f7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda19c9fd-08ad-4596-863d-7b628eb4d407_448x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!y6f7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda19c9fd-08ad-4596-863d-7b628eb4d407_448x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!y6f7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda19c9fd-08ad-4596-863d-7b628eb4d407_448x500.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>The most valuable UX contribution often happens before the test launches. That is when the team is still deciding what problem they are solving, what variation should be created, and what the result will actually mean. Once the test is live, a lot of the important decisions have already been made.</p><p>A researcher can help the team slow down just enough to make the test more meaningful. That does not have to mean a long research project. It might mean a quick usability check, a review of prior findings, a look at session behavior, or a conversation about whether the proposed variation actually matches the problem the team says they are trying to solve.</p><p><strong>The practical UXR role often looks like this:</strong></p><ul><li><p>Clarify the user problem before the variation is designed.</p></li><li><p>Turn a vague idea into a testable hypothesis.</p></li><li><p>Identify whether the proposed change matches the observed problem.</p></li><li><p>Flag when too many things are changing at once.</p></li><li><p>Recommend guardrail metrics.</p></li><li><p>Run a quick prototype or usability check before the test goes live.</p></li><li><p>Help the team interpret the result without overstating what it proves.</p></li></ul><p>This is a playbook for how UX research can help keep the interpretation grounded. The team can say, &#8220;In this flow, for this user population, under these conditions, this variation improved this metric.&#8221; That may sound less exciting, but it is usually more accurate. It also makes the finding more useful because future teams can understand when the result might apply and when it probably does not.</p><p>Also, in a perfect world, A/B testing should not be the first time users encounter a variation, especially in complicated enterprise software. If the design has obvious usability issues, the live experiment will measure those issues along with everything else. A quick round of UX evaluation before launch can remove problems that would otherwise muddy the test. Literally, try anything to help put context around a problem before running an A/B test. That additional evaluation does not need to be elaborate. For some changes, a short prototype review with a few users may be enough. The goal is to make sure the variation is coherent before it gets measured at scale.</p><h1>Better Variation Design Examples</h1><p>Let&#8217;s say your team started with the old &#8220;let&#8217;s test a more prominent button&#8221; hypothesis. A better version of the conversation starts with questions that you, as the researcher, should be asking.</p><p><strong>Questions like:</strong></p><ul><li><p>Why does the button need to be more prominent?</p></li><li><p>Are users missing it altogether?</p></li><li><p>Are they unsure what it does?</p></li><li><p>Are they afraid of committing to the next step?</p></li><li><p>Are they distracted by competing actions on the page?</p></li></ul><p>The answers to these questions lead to a different variation. That is why the design change should come after the problem is understood, not before. Otherwise, the team is just picking a visual change and hoping the test makes it meaningful.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FVSF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b96108f-46b2-4fb4-a1e7-96a2ed4f5e29_687x602.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FVSF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b96108f-46b2-4fb4-a1e7-96a2ed4f5e29_687x602.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FVSF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b96108f-46b2-4fb4-a1e7-96a2ed4f5e29_687x602.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FVSF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b96108f-46b2-4fb4-a1e7-96a2ed4f5e29_687x602.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FVSF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b96108f-46b2-4fb4-a1e7-96a2ed4f5e29_687x602.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FVSF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b96108f-46b2-4fb4-a1e7-96a2ed4f5e29_687x602.jpeg" width="269" height="235.71761280931585" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1b96108f-46b2-4fb4-a1e7-96a2ed4f5e29_687x602.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:602,&quot;width&quot;:687,&quot;resizeWidth&quot;:269,&quot;bytes&quot;:97944,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/197026193?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b96108f-46b2-4fb4-a1e7-96a2ed4f5e29_687x602.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FVSF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b96108f-46b2-4fb4-a1e7-96a2ed4f5e29_687x602.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FVSF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b96108f-46b2-4fb4-a1e7-96a2ed4f5e29_687x602.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FVSF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b96108f-46b2-4fb4-a1e7-96a2ed4f5e29_687x602.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FVSF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b96108f-46b2-4fb4-a1e7-96a2ed4f5e29_687x602.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><strong>Example questions worth asking before the test:</strong></p><ul><li><p><strong>What user behavior are we trying to change? - </strong>Keeps the test focused on a real behavior, not just a design preference.</p></li><li><p><strong>What do we think is causing the current behavior? - </strong>Forces the team to name the assumption behind the variation.</p></li><li><p><strong>What exactly are we changing? - </strong>Makes the variation easier to interpret later.</p></li><li><p><strong>What are we keeping the same? - </strong>Helps isolate the design variable when possible.</p></li><li><p><strong>What is the primary metric? - </strong>Defines how the team will judge the result.</p></li><li><p><strong>What are the guardrail metrics? - </strong>Helps catch harm outside the primary metric.</p></li><li><p><strong>What will we know after the test? - </strong>Keeps the test connected to a learning goal.</p></li></ul><p>That structure does not need to become a formal template every team fills out before every test. It is more useful as a thinking tool. If the team cannot answer those questions in plain language, the variation probably is not ready.</p><p><strong>Weak variation vs. stronger variation examples:</strong></p><ul><li><p>&#10060; <strong>Weak:</strong> &#8220;Make the button more noticeable.&#8221;</p></li><li><p>&#10004;&#65039; <strong>Stronger:</strong> &#8220;Increase visual prominence while keeping the label, placement, and flow unchanged to test whether discoverability is the issue.&#8221;</p></li></ul><ul><li><p>&#10060; <strong>Weak:</strong> &#8220;Try different copy.&#8221;</p></li><li><p>&#10004;&#65039; <strong>Stronger:</strong> &#8220;Change the label to clarify what happens next because users are hesitating before a commitment-heavy action.&#8221;</p></li></ul><ul><li><p>&#10060; <strong>Weak:</strong> &#8220;Test the new design against the old one.&#8221;</p></li><li><p>&#10004;&#65039; <strong>Stronger:</strong> &#8220;Test whether exposing required information earlier reduces abandonment before the confirmation step.&#8221;</p></li></ul><ul><li><p>&#10060; <strong>Weak:</strong> &#8220;Add help text.&#8221;</p></li><li><p>&#10004;&#65039; <strong>Stronger:</strong> &#8220;Add one line of contextual help under the field users misinterpret most often.&#8221;</p></li></ul><p>Note that the stronger versions are not necessarily more complicated, but they are more specific. They connect the design change to a user problem and a learning goal. That makes the result easier to interpret, even when the result is not what the team expected.</p><p>This also helps with stakeholder conversations. When the variation is specific, the result is easier to explain. The team can say what changed, why it changed, what metric moved, and what the result suggests. That is much more useful than saying, &#8220;The new version won,&#8221; especially when the new version changed several things at once.</p><p>Better variation design does not mean every test has to be small. Some tests should compare broader design directions. The important thing is to be honest about the level of learning. A focused variation can tell the team something focused. A broader variation can help the team choose between broader directions. The test design should match the decision the team needs to make.</p><h1>Conclusion</h1><p>So, when a product team says, &#8220;Let&#8217;s just A/B test it,&#8221; the instinct to shut them down is reasonable, but we need to do better. As UX researchers, part of our job is to help shape how our orgs use user data, and A/B testing is a perfect example of where that responsibility shows up in practice. We need to lead A/B testing conversations as sense makers, not blockers. We have the opportunity to show how real users respond to real changes in the real world, and we should take those opportunities when they come.</p><p>But A/B tests are only as good as the thing being tested. If the variation is shallow, messy, or disconnected from the actual user problem, the result will inherit those weaknesses. It may still produce a winner, but winning is not the same thing as learning. That is the part I wish more teams took seriously. Better A/B testing does not start in the experimentation platform. It starts when the team asks a better question about the variation.</p><p>How do you help with A/B testing strategy in your org? Any tactics I missed? If so, comment here or DM me with the details. I&#8217;m always happy to add more things to my toolkit, especially when it comes to this misused and misunderstood method. Thanks for reading!</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://trevorcalabro.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">UX Research in the Wild is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Stop Throwing Away Time-on-Task Data]]></title><description><![CDATA[The Truth About Small Sample Task Time]]></description><link>https://trevorcalabro.substack.com/p/stop-throwing-away-time-on-task-data</link><guid isPermaLink="false">https://trevorcalabro.substack.com/p/stop-throwing-away-time-on-task-data</guid><dc:creator><![CDATA[Trevor Calabro]]></dc:creator><pubDate>Sat, 02 May 2026 16:56:11 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/8c02242b-f8c9-440a-9518-f693bba43292_694x619.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Summary:</strong> Time-on-task with small samples is often misunderstood as not useful, but it can still produce meaningful behavioral evidence. This article explains why the median should usually be the default, how to report outliers honestly, and how to avoid overstating what small samples can tell us.</p><div><hr></div><p>A while back, an earlier-career UX researcher came to me with a common time-on-task question. They had just run a moderated usability study with 8 participants. The task was fairly straightforward, and all participants completed the task successfully. Most participants moved through the flow in about 45 to 70 seconds, which lined up with what the researcher saw in the usability study sessions. The task took a little effort, but most folks experienced very little friction. Except for one participant. (Cue the ominous music. &#127925;<strong> Dun Dun Dun </strong>&#127925;) You know the one. The participant who flat-out got stuck had to reread the content, misclicked a lot, ended up backtracking, and eventually recovered to complete the task, but barely. In this case, they completed the task, but it took them 4 minutes.</p><p>After the study, the researcher did what a lot of people are taught to do. They put the task times into a spreadsheet and calculated the average. The spreadsheet gave them a number. The number looked official enough to go into a report. But this earlier-career UX researcher knew that the final calculation didn&#8217;t represent what they had seen with their own eyes. At the same time, she knew the long task time from that one participant who got stuck clearly mattered. It was not random noise. It was one of the most useful moments in the study because it showed a real failure path in the design.</p><div class="pullquote"><p>As UX professionals, we need to understand that when usability issues are found during small-sample research studies, they should be documented, explained, and seriously considered for fixing, even when they only show up once or twice. I see <em>wayyyyyy </em>too many UX professionals misunderstand this in the real world, and that makes me sad.</p></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kwFe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f0012d1-c6a1-438b-b8ec-ac0772e4b47e_2048x2048.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kwFe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f0012d1-c6a1-438b-b8ec-ac0772e4b47e_2048x2048.png 424w, https://substackcdn.com/image/fetch/$s_!kwFe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f0012d1-c6a1-438b-b8ec-ac0772e4b47e_2048x2048.png 848w, https://substackcdn.com/image/fetch/$s_!kwFe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f0012d1-c6a1-438b-b8ec-ac0772e4b47e_2048x2048.png 1272w, https://substackcdn.com/image/fetch/$s_!kwFe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f0012d1-c6a1-438b-b8ec-ac0772e4b47e_2048x2048.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kwFe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f0012d1-c6a1-438b-b8ec-ac0772e4b47e_2048x2048.png" width="173" height="173" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0f0012d1-c6a1-438b-b8ec-ac0772e4b47e_2048x2048.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1456,&quot;width&quot;:1456,&quot;resizeWidth&quot;:173,&quot;bytes&quot;:137145,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/196216539?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f0012d1-c6a1-438b-b8ec-ac0772e4b47e_2048x2048.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kwFe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f0012d1-c6a1-438b-b8ec-ac0772e4b47e_2048x2048.png 424w, https://substackcdn.com/image/fetch/$s_!kwFe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f0012d1-c6a1-438b-b8ec-ac0772e4b47e_2048x2048.png 848w, https://substackcdn.com/image/fetch/$s_!kwFe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f0012d1-c6a1-438b-b8ec-ac0772e4b47e_2048x2048.png 1272w, https://substackcdn.com/image/fetch/$s_!kwFe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f0012d1-c6a1-438b-b8ec-ac0772e4b47e_2048x2048.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>These misguided UX pros believe that if an issue only shows up once or twice, it holds less weight. Even worse, I have seen instances where an outlier like this would be removed from the dataset to make the report look more &#8220;clean.&#8221; This is a huge problem. It is risky and flat-out unethical.</p><p>Back to the story. <strong>So the earlier-career UX researcher came to me with a question that was basically:</strong></p><blockquote><p>I know this average is technically right, but I don&#8217;t think it represents what happened in the study.</p></blockquote><p>That question is why I chose to write about this topic today, specifically, time-on-task calculations with small sample sizes. In this case, the average was pulled upward by that one participant who experienced a serious usability issue. That is the problem with using the mean as the default calculation method here.</p><p>For this kind of study, I would usually start with the median. The median gives a clearer read on the typical observed experience. Then I would report the slower case separately and explain what happened, because that struggle is still meaningful evidence.</p><p>But I know what you are thinking. All that leads us to an even more foundational question. Why would we want to measure time-on-task with a small sample size anyway? Let&#8217;s talk about that a little bit first.</p><h1>Time-on-Task with Small Samples</h1><p>Some UX professionals hear &#8220;small sample size&#8221; and immediately assume time-on-task is not worth calculating. I 100% understand where that comes from.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BQWj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf889582-6d55-4cbf-907d-da179bec09b4_687x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BQWj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf889582-6d55-4cbf-907d-da179bec09b4_687x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!BQWj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf889582-6d55-4cbf-907d-da179bec09b4_687x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!BQWj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf889582-6d55-4cbf-907d-da179bec09b4_687x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!BQWj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf889582-6d55-4cbf-907d-da179bec09b4_687x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BQWj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf889582-6d55-4cbf-907d-da179bec09b4_687x512.jpeg" width="375" height="279.4759825327511" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/df889582-6d55-4cbf-907d-da179bec09b4_687x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:687,&quot;resizeWidth&quot;:375,&quot;bytes&quot;:105224,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/196216539?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf889582-6d55-4cbf-907d-da179bec09b4_687x512.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BQWj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf889582-6d55-4cbf-907d-da179bec09b4_687x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!BQWj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf889582-6d55-4cbf-907d-da179bec09b4_687x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!BQWj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf889582-6d55-4cbf-907d-da179bec09b4_687x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!BQWj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf889582-6d55-4cbf-907d-da179bec09b4_687x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If we are trying to estimate the exact average task time for an entire user population, 8 participants is a very small number. That kind of claim needs a larger sample, cleaner instrumentation, and a much stronger quantitative design. So yes, there is a real limitation here. The mistake is treating that limitation as a reason to throw out the task time data entirely.</p><p>In a small moderated usability study, time-on-task can still tell us something very very useful. It can show whether most participants moved through the task in roughly the same amount of time. It can reveal whether one or two participants had a very different experience. It can help us separate a generally slow task from a mostly smooth task with one serious failure path. The problem happens when people are confused about the kind of claim we are making.</p><p><strong>For example, with a small sample, I would not say:</strong></p><blockquote><p>The average task time for this workflow is 78 seconds.</p></blockquote><p><strong>I would say something more like:</strong></p><blockquote><p>In this study, the median task time was 56 seconds. Most participants completed the task in about a minute. One participant took 4 minutes after misinterpreting the account-selection step, which points to a real usability issue we should address.</p></blockquote><p>That second version is much more honest and will be less likely to be misinterpreted by stakeholders. What it doesn&#8217;t do is pretend 8 people can give us a precise population estimate. It also does not ignore useful behavioral evidence just because the sample is small. Win/win. I hope you are starting to see my argument here.</p><div class="pullquote"><p>That is the middle ground, I think, that UX researchers need to get better at. Small samples do not give us permission to make inflated claims. They also do not require us to ignore measurable behavior. They require better wording, better summaries, and more care about uncertainty.</p></div><p>That is the basic argument of this article. When UX researchers calculate time-on-task with small sample sizes, which we should be doing, the median should usually be the default starting point, and the reason starts with the shape of the data.</p><h1>Skewed Time-on-Task Data</h1><p>Time-on-task data almost never behaves like the tidy examples we learned in statistics classes.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gvEL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2130d471-830a-4a47-97f8-6ba05ae64bed_1782x1398.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gvEL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2130d471-830a-4a47-97f8-6ba05ae64bed_1782x1398.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gvEL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2130d471-830a-4a47-97f8-6ba05ae64bed_1782x1398.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gvEL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2130d471-830a-4a47-97f8-6ba05ae64bed_1782x1398.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gvEL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2130d471-830a-4a47-97f8-6ba05ae64bed_1782x1398.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gvEL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2130d471-830a-4a47-97f8-6ba05ae64bed_1782x1398.jpeg" width="367" height="287.85302197802196" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2130d471-830a-4a47-97f8-6ba05ae64bed_1782x1398.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1142,&quot;width&quot;:1456,&quot;resizeWidth&quot;:367,&quot;bytes&quot;:280372,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/196216539?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2130d471-830a-4a47-97f8-6ba05ae64bed_1782x1398.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gvEL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2130d471-830a-4a47-97f8-6ba05ae64bed_1782x1398.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gvEL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2130d471-830a-4a47-97f8-6ba05ae64bed_1782x1398.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gvEL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2130d471-830a-4a47-97f8-6ba05ae64bed_1782x1398.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gvEL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2130d471-830a-4a47-97f8-6ba05ae64bed_1782x1398.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Lower Limits - </strong>A user task has a practical lower limit. The user has to read, scan, decide, click, wait for the interface, and move through the flow. Even in a beautifully designed experience, there is some minimum amount of time the task is going to take.</p><p><strong>Upper Limits -</strong>The upper limit is much messier. A user can take a long time because they misunderstand the task. They can miss a label. They can hesitate because two options sound too similar. They can reread the instructions three times. They can get interrupted. They can hit a slow-loading page. They can accidentally go down the wrong path and recover. They can also run into a real usability problem that nobody on the team realized was there.</p><p>That creates a pattern we see all the time in UX research, where most people cluster somewhere near the lower end, while a few slower cases stretch the distribution upward.</p><p><strong>Here is a simple example from an 8 participant usability test:</strong></p><div id="datawrapper-iframe" class="datawrapper-wrap outer" data-attrs="{&quot;url&quot;:&quot;https://datawrapper.dwcdn.net/6D9hE/2/&quot;,&quot;thumbnail_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/56451369-b277-4b4c-b9a0-262ea0dfe117_1220x1248.png&quot;,&quot;thumbnail_url_full&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/738bc94b-737a-4bf9-babc-a66d39665f82_1220x1248.png&quot;,&quot;height&quot;:631,&quot;title&quot;:&quot;Created with Datawrapper&quot;,&quot;description&quot;:&quot;&quot;}" data-component-name="DatawrapperToDOM"><iframe id="iframe-datawrapper" class="datawrapper-iframe" src="https://datawrapper.dwcdn.net/6D9hE/2/" width="730" height="631" frameborder="0" scrolling="no"></iframe><script type="text/javascript">!function(){"use strict";window.addEventListener("message",(function(e){if(void 0!==e.data["datawrapper-height"]){var t=document.querySelectorAll("iframe");for(var a in e.data["datawrapper-height"])for(var r=0;r<t.length;r++){if(t[r].contentWindow===e.source)t[r].style.height=e.data["datawrapper-height"][a]+"px"}}}))}();</script></div><p>But what if we only show the task times? Then the table looks like a small dataset. Once we add what happened, it starts looking like UX research again.</p><p><strong>Now compare the basic summary statistics:</strong></p><div id="datawrapper-iframe" class="datawrapper-wrap outer" data-attrs="{&quot;url&quot;:&quot;https://datawrapper.dwcdn.net/jsVCR/3/&quot;,&quot;thumbnail_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bb540458-f64e-42ce-a46f-9fc9cc478b0a_1220x1088.png&quot;,&quot;thumbnail_url_full&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/24799dad-7fb9-4cda-8056-a212dda86452_1220x1088.png&quot;,&quot;height&quot;:306,&quot;title&quot;:&quot;Created with Datawrapper&quot;,&quot;description&quot;:&quot;&quot;}" data-component-name="DatawrapperToDOM"><iframe id="iframe-datawrapper" class="datawrapper-iframe" src="https://datawrapper.dwcdn.net/jsVCR/3/" width="730" height="306" frameborder="0" scrolling="no"></iframe><script type="text/javascript">!function(){"use strict";window.addEventListener("message",(function(e){if(void 0!==e.data["datawrapper-height"]){var t=document.querySelectorAll("iframe");for(var a in e.data["datawrapper-height"])for(var r=0;r<t.length;r++){if(t[r].contentWindow===e.source)t[r].style.height=e.data["datawrapper-height"][a]+"px"}}}))}();</script></div><p>Both the median and the mean are mathematically correct. The issue is that they answer different questions.</p><p><strong>Median - </strong>Tells us that the typical participant, in this study, completed the task in about a minute. That lines up with the behavior we saw across most usability test sessions. <em>(Note the words &#8220;in this study.&#8221;)</em></p><p><strong>Mean - </strong>Tells us that the average task time was 78 seconds in this study. That number is higher because one participant had a much slower experience.</p><p>That slower experience might be the most important finding in the whole study. We should not ignore it, hide it, or treat it like an inconvenience just because it makes the numbers messy. At the same time, it should not quietly redefine the typical experience for the other seven participants.</p><p>This is the core reason the median is usually a better default for time-on-task. It answers the question UX researchers usually care about in a moderated study; what was the middle experience?</p><p>The mean makes all observed task times and spreads them evenly across everyone. That can be useful in some contexts, especially when you are working with large-scale behavioral analytics or trying to estimate total time burden across a large population. In a small moderated study, though, it is usually not the best starting point.</p><p><strong>Most of the time, we are trying to answer questions like:</strong></p><ul><li><p>Did most users move through the task smoothly?</p></li><li><p>Was the task generally fast but still fragile?</p></li><li><p>Did one severe confusion point create a long delay?</p></li><li><p>Was the experience workable for most people?</p></li><li><p>Was there a risky failure path for users who misunderstood one key label?</p></li></ul><p>But the <strong>median </strong>gives us a better first read on that typical observed experience. It does not explain everything. It does not replace watching the sessions. It does not tell us why someone struggled. It gives us a less fragile summary of what happened, a nd in small-sample UX research, less fragile is usually a very good thing.</p><h1>Report Median</h1><p>The median should usually be the starting point for time-on-task, and it should travel with the surrounding evidence. But a median by itself can still hide too much.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!b8Yh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6ec4dcd-989b-40ca-a229-35608addee1d_6033x4525.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!b8Yh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6ec4dcd-989b-40ca-a229-35608addee1d_6033x4525.jpeg 424w, https://substackcdn.com/image/fetch/$s_!b8Yh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6ec4dcd-989b-40ca-a229-35608addee1d_6033x4525.jpeg 848w, https://substackcdn.com/image/fetch/$s_!b8Yh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6ec4dcd-989b-40ca-a229-35608addee1d_6033x4525.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!b8Yh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6ec4dcd-989b-40ca-a229-35608addee1d_6033x4525.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!b8Yh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6ec4dcd-989b-40ca-a229-35608addee1d_6033x4525.jpeg" width="353" height="264.75" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a6ec4dcd-989b-40ca-a229-35608addee1d_6033x4525.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:353,&quot;bytes&quot;:1127724,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/196216539?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6ec4dcd-989b-40ca-a229-35608addee1d_6033x4525.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!b8Yh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6ec4dcd-989b-40ca-a229-35608addee1d_6033x4525.jpeg 424w, https://substackcdn.com/image/fetch/$s_!b8Yh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6ec4dcd-989b-40ca-a229-35608addee1d_6033x4525.jpeg 848w, https://substackcdn.com/image/fetch/$s_!b8Yh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6ec4dcd-989b-40ca-a229-35608addee1d_6033x4525.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!b8Yh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6ec4dcd-989b-40ca-a229-35608addee1d_6033x4525.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If all we say is &#8220;the median task time was 56 seconds,&#8221; we have improved the statistic, and we still have not explained the experience. We have a better summary number. We still need the behavior that gives the number meaning.</p><p><strong>For small-sample usability studies, I would usually report time-on-task with a few pieces of context:</strong></p><div id="datawrapper-iframe" class="datawrapper-wrap outer" data-attrs="{&quot;url&quot;:&quot;https://datawrapper.dwcdn.net/3qqgf/1/&quot;,&quot;thumbnail_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/63af0079-d610-4bb5-b18e-546bd121cd21_1220x822.png&quot;,&quot;thumbnail_url_full&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e1c5e8ef-b5c8-4b3e-a03c-90e3c2eedb19_1220x822.png&quot;,&quot;height&quot;:408,&quot;title&quot;:&quot;Created with Datawrapper&quot;,&quot;description&quot;:&quot;&quot;}" data-component-name="DatawrapperToDOM"><iframe id="iframe-datawrapper" class="datawrapper-iframe" src="https://datawrapper.dwcdn.net/3qqgf/1/" width="730" height="408" frameborder="0" scrolling="no"></iframe><script type="text/javascript">!function(){"use strict";window.addEventListener("message",(function(e){if(void 0!==e.data["datawrapper-height"]){var t=document.querySelectorAll("iframe");for(var a in e.data["datawrapper-height"])for(var r=0;r<t.length;r++){if(t[r].contentWindow===e.source)t[r].style.height=e.data["datawrapper-height"][a]+"px"}}}))}();</script></div><p>The goal here is pretty simple. We want the number and the observation to support each other.</p><p><strong>A stronger write-up might look like this:</strong></p><blockquote><p>Median task time was 56 seconds. Observed times ranged from 42 seconds to 240 seconds. 6 of 8 participants completed the task in under 70 seconds. The longest task time came from one participant who misunderstood the account-selection label and opened the wrong account panel before recovering. </p></blockquote><p>That gives the reader the summary, the range, and the user behavior. It also helps prevent a common reporting problem. Time-on-task gets treated like a standalone performance score, floating outside the rest of the study. Someone sees the number and assumes the number is the finding. Time-on-task rarely explains itself.</p><p>A slow task time tells us that one participant took longer than the others, and that&#8217;s it. Analyzing the full usability test session tells us everything else that happened. The research synthesis tells us whether that behavior looks like a minor hesitation, a recoverable issue, or a serious failure path.</p><p><strong>This is why I like writing the findings in a way that includes both the statistics and the behavior, like this:</strong></p><blockquote><p>Median task time was 56 seconds. Most participants completed the task in about a minute. One participant took 240 seconds after misinterpreting the account-selection step. This suggests the flow may be efficient for users who understand the account structure, with a clear failure path for users managing multiple accounts.</p></blockquote><p>That version gives stakeholders something they can use in the real world. They can see the typical task time, the slow cases, and the design issue all in one view. This gives you the mechanism needed to ensure your stakeholders understand why the outlier participant matters. Your report should make the shape of the data visible. For very small samples, I often think the simplest option is the best one, show the individual task times.</p><p><strong>Something like this is easy to understand:</strong></p><div id="datawrapper-iframe" class="datawrapper-wrap outer" data-attrs="{&quot;url&quot;:&quot;https://datawrapper.dwcdn.net/RTDpP/1/&quot;,&quot;thumbnail_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/50db4ccd-ec85-437d-91f7-e3e099c8f470_1220x800.png&quot;,&quot;thumbnail_url_full&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8b716a27-1cee-430d-9217-aa6dd425aadf_1220x800.png&quot;,&quot;height&quot;:396,&quot;title&quot;:&quot;Created with Datawrapper&quot;,&quot;description&quot;:&quot;&quot;}" data-component-name="DatawrapperToDOM"><iframe id="iframe-datawrapper" class="datawrapper-iframe" src="https://datawrapper.dwcdn.net/RTDpP/1/" width="730" height="396" frameborder="0" scrolling="no"></iframe><script type="text/javascript">!function(){"use strict";window.addEventListener("message",(function(e){if(void 0!==e.data["datawrapper-height"]){var t=document.querySelectorAll("iframe");for(var a in e.data["datawrapper-height"])for(var r=0;r<t.length;r++){if(t[r].contentWindow===e.source)t[r].style.height=e.data["datawrapper-height"][a]+"px"}}}))}();</script></div><p>I hope you can see how that table does a lot of work. It shows the cluster. It shows the extreme case. It shows why the extreme case happened.</p><div class="pullquote"><p>This is mixed methods thinking at its finest. It lets people understand the data without pretending 8 participants are enough to support a highly precise estimate.</p></div><p>The same idea applies when talking through the readout. Stakeholders often ask for averages because averages are familiar. That is fine. We can answer the real question behind the question.</p><p><strong>A simple explanation might sound like this:</strong></p><blockquote><p>I&#8217;m using the median because time-on-task data is usually skewed, especially with small samples. In this study, most people completed the task in about a minute. One person took much longer because they misunderstood the account-selection step, so I&#8217;m reporting that separately as an important usability issue.</p></blockquote><p>In my experience, that explanation is usually enough. It avoids making the conversation about statistics for the sake of statistics. It brings the conversation back to the user behavior. That is where the research value is.</p><h1>Mean Is Still Useful</h1><p>If you are working with a large analytics dataset, the mean may help answer questions about the total time burden. If a task is completed hundreds of thousands of times per month, long task times may represent real operational cost.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-QPh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9661b086-2848-4299-b9b6-98e0b2c15ad5_3258x1398.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-QPh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9661b086-2848-4299-b9b6-98e0b2c15ad5_3258x1398.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-QPh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9661b086-2848-4299-b9b6-98e0b2c15ad5_3258x1398.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-QPh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9661b086-2848-4299-b9b6-98e0b2c15ad5_3258x1398.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-QPh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9661b086-2848-4299-b9b6-98e0b2c15ad5_3258x1398.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-QPh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9661b086-2848-4299-b9b6-98e0b2c15ad5_3258x1398.jpeg" width="585" height="251.11607142857142" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9661b086-2848-4299-b9b6-98e0b2c15ad5_3258x1398.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:625,&quot;width&quot;:1456,&quot;resizeWidth&quot;:585,&quot;bytes&quot;:560149,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/196216539?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9661b086-2848-4299-b9b6-98e0b2c15ad5_3258x1398.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-QPh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9661b086-2848-4299-b9b6-98e0b2c15ad5_3258x1398.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-QPh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9661b086-2848-4299-b9b6-98e0b2c15ad5_3258x1398.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-QPh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9661b086-2848-4299-b9b6-98e0b2c15ad5_3258x1398.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-QPh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9661b086-2848-4299-b9b6-98e0b2c15ad5_3258x1398.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>For example, imagine a repetitive common workflow that gets completed 500,000 times per month. If one version of the flow adds 20 seconds on average, that could represent a meaningful amount of user time across the whole system. It could also increase abandonment, support contacts, frustration, or downstream errors.</p><p><strong>In that context, the mean might help answer questions like:</strong></p><div id="datawrapper-iframe" class="datawrapper-wrap outer" data-attrs="{&quot;url&quot;:&quot;https://datawrapper.dwcdn.net/7mABX/1/&quot;,&quot;thumbnail_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/792b0a23-5517-4fa0-94d0-8a1fb970d4ce_1220x600.png&quot;,&quot;thumbnail_url_full&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bbda447d-f603-4f6d-a274-64d20ab7d0a8_1220x600.png&quot;,&quot;height&quot;:296,&quot;title&quot;:&quot;Created with Datawrapper&quot;,&quot;description&quot;:&quot;&quot;}" data-component-name="DatawrapperToDOM"><iframe id="iframe-datawrapper" class="datawrapper-iframe" src="https://datawrapper.dwcdn.net/7mABX/1/" width="730" height="296" frameborder="0" scrolling="no"></iframe><script type="text/javascript">!function(){"use strict";window.addEventListener("message",(function(e){if(void 0!==e.data["datawrapper-height"]){var t=document.querySelectorAll("iframe");for(var a in e.data["datawrapper-height"])for(var r=0;r<t.length;r++){if(t[r].contentWindow===e.source)t[r].style.height=e.data["datawrapper-height"][a]+"px"}}}))}();</script></div><p>Those are valid questions. They are also different from the questions we usually ask in a small moderated usability study.</p><p>In a small study, we are usually trying to understand how the experience behaved for the people we observed. We want to know where users moved smoothly, where they hesitated, where the design created confusion, and what moments created delays. For that work, the median is usually the better starting point.</p><p><strong>A helpful sequence is:</strong></p><ol><li><p>Start with the median.</p></li><li><p>Show the range.</p></li><li><p>Explain the slowest cases.</p></li><li><p>Decide whether the mean adds anything useful.</p></li><li><p>Use the mean only when it answers a specific research or business question.</p></li></ol><p>It also helps avoid a common readout problem where one average becomes the center of the conversation. Once that happens, people start debating the number instead of the experience. They ask whether the task was &#8220;fast enough.&#8221; They compare it to some remembered number from another study. They want to know whether 78 seconds is good or bad.</p><p>Trust me on this, the better conversation is much more specific. Most participants completed the task in about a minute. One participant took four minutes because the account-selection label sent them down the wrong path. The risk is not general slowness across the whole task. The risk is a specific failure path for users who interpret that label differently than the team intended.</p><p>That is a much more useful product conversation. The mean may still be worth including in an appendix or supporting detail. I would just avoid making it the headline metric unless it directly supports the decision being made. For small-sample usability studies, the headline should usually be the median <em><strong>plus </strong></em>the observed behavior.</p><h1>Match the Data</h1><p>A lot of UX research gets into trouble when we make the analysis look more precise than the study can actually support. Time-on-task is one of the places I see this error in thinking a lot!</p><div class="pullquote"><p>As a rule of thumb, I always ask myself if the method I&#8217;m using matches the data.</p></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!26uU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0c3efcf-74a5-4716-873e-1e79c1c23b87_1297x1212.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!26uU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0c3efcf-74a5-4716-873e-1e79c1c23b87_1297x1212.png 424w, https://substackcdn.com/image/fetch/$s_!26uU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0c3efcf-74a5-4716-873e-1e79c1c23b87_1297x1212.png 848w, https://substackcdn.com/image/fetch/$s_!26uU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0c3efcf-74a5-4716-873e-1e79c1c23b87_1297x1212.png 1272w, https://substackcdn.com/image/fetch/$s_!26uU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0c3efcf-74a5-4716-873e-1e79c1c23b87_1297x1212.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!26uU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0c3efcf-74a5-4716-873e-1e79c1c23b87_1297x1212.png" width="363" height="339.2104857363146" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f0c3efcf-74a5-4716-873e-1e79c1c23b87_1297x1212.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1212,&quot;width&quot;:1297,&quot;resizeWidth&quot;:363,&quot;bytes&quot;:1040089,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/196216539?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0c3efcf-74a5-4716-873e-1e79c1c23b87_1297x1212.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!26uU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0c3efcf-74a5-4716-873e-1e79c1c23b87_1297x1212.png 424w, https://substackcdn.com/image/fetch/$s_!26uU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0c3efcf-74a5-4716-873e-1e79c1c23b87_1297x1212.png 848w, https://substackcdn.com/image/fetch/$s_!26uU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0c3efcf-74a5-4716-873e-1e79c1c23b87_1297x1212.png 1272w, https://substackcdn.com/image/fetch/$s_!26uU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0c3efcf-74a5-4716-873e-1e79c1c23b87_1297x1212.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>For small-sample time-on-task analysis, the practical approach is pretty simple:</strong></p><ul><li><p>Use the <strong>median</strong> as the primary summary.</p></li><li><p>Show the <strong>range</strong>.</p></li><li><p>Show the <strong>individual task times</strong> when the sample is small.</p></li><li><p>Explain the <strong>slowest cases</strong>.</p></li><li><p>Be careful with <strong>p-values</strong> when the sample is tiny.</p></li><li><p>Use <strong>non-parametric methods</strong> when comparing groups and the data is clearly skewed.</p></li><li><p>Consider <strong>bootstrapping</strong> when you need an uncertainty interval around a statistic like the median.</p></li><li><p>Consider <strong>transformations</strong> for highly skewed timing data when you are doing more formal modeling, and explain the results in plain language.</p></li></ul><p>Most UX researchers do not need to turn every time-on-task report into a methods appendix. The practical standard is much simpler.</p><p>Use a method that fits what you actually collected. If you have eight task times and one of them is 240 seconds, show that shape. Do not hide it inside a clean-looking average. If you have a small sample and a skewed distribution, do not write as though you have a stable estimate of normal behavior across the entire user population.</p><div class="pullquote"><p>There is a difference between being quantitative and being precise beyond what the evidence supports.</p></div><p>That distinction matters because stakeholders often want numbers to carry more certainty than they deserve. A number in a report can feel settled. It can feel objective. It can feel like the debate is over.</p><p>UX researchers have to be careful with that power. A good time-on-task write-up should make the strength of the evidence visible. It should help people understand what happened, how often it happened in the study, and how much confidence we should place in the pattern.</p><p><strong>Here is a practical reporting pattern I would trust:</strong></p><blockquote><p>Median task time was 56 seconds across eight participants. Seven participants completed the task between 42 and 67 seconds. One participant took 240 seconds after misinterpreting the account-selection step and navigating into the wrong account panel. Because the task-time data was skewed, the median is a better summary of the typical observed experience than the mean. The slowest case is reported separately because it reflects a meaningful usability issue. Additional quantitative research should be done if you want to better understand the actual time-on-task for the entire user population. </p></blockquote><p><strong>That paragraph does several useful things:</strong></p><ul><li><p>It gives the primary metric.</p></li><li><p>It shows the spread.</p></li><li><p>It names the sample size.</p></li><li><p>It explains the skew.</p></li><li><p>It preserves the slow case.</p></li><li><p>It connects the slow case to a design issue.</p></li><li><p>It clarifies that this does not represent the whole user base.</p></li><li><p>It points to the need for additional quant research.</p></li></ul><p>That is the kind of reporting that helps teams make better decisions.</p><h1>Conclusion</h1><p>Time-on-task is easy to calculate and easy to misuse. That is probably why this problem shows up so often. Averages feel familiar, fit nicely in slides, and make messy behavior look clean. They give teams a number they can compare, track, and, quite frankly, stakeholders are suckers for them, which is why many PMs weaponize this kind of data for manipulation purposes. We need to be the antidote to this trend. We, as UX researchers, need to be the data experts and truth tellers within our organizations.</p><p>For example, when we collect time-on-task in a small usability study, we are measuring people trying to complete a task inside a real interface. Their time reflects comprehension, hesitation, confidence, confusion, recovery, and sometimes failure.</p><p>The median helps us summarize the typical observed experience without letting one extreme case dominate the headline number.</p><ul><li><p>The <strong>range</strong> helps us show the spread.</p></li><li><p>The <strong>individual task times</strong> help us keep the data honest.</p></li><li><p>The <strong>observed behavior</strong> helps us explain what the numbers mean.</p></li></ul><p>Together, these give teams a better read on the experience than a single average ever could. So the next time someone asks for the average time-on-task, I would still answer the question behind the question. Thanks for reading, and I hope this is helpful!</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://trevorcalabro.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">UX Research in the Wild is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Onboarding & In-App Help Strategy ]]></title><description><![CDATA[A framework for building usable and accessible help systems.]]></description><link>https://trevorcalabro.substack.com/p/onboarding-and-in-app-help-strategy</link><guid isPermaLink="false">https://trevorcalabro.substack.com/p/onboarding-and-in-app-help-strategy</guid><dc:creator><![CDATA[Trevor Calabro]]></dc:creator><pubDate>Sat, 25 Apr 2026 21:42:45 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/08bc0425-7d39-4aff-aaa7-42308d40f484_694x619.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Summary:</strong> Decades of usability and accessibility data have shown that many common onboarding and in-app help design patterns just don&#8217;t work well in the real world. This post details a reusable framework for how best to display help content in complex applications.</p><div><hr></div><p>I recently wrote a document to help define a reusable set of UX best practices for product onboarding and in-application help. This week&#8217;s post is a generalized version of that document that you can use in your own day-to-day work.</p><p>My goal was to make help content decisions more strategic across products, platforms, and teams, so this guidance is intentionally technology- and domain-agnostic. Everything in this week&#8217;s post focuses on widely accepted usability best practices, helping users complete real world tasks, and giving users guidance at the moment they actually need it.</p><p>And I think this matters because a lot of UXers and product teams don&#8217;t seem to know about these best practices anymore. Products like Pendo make it easy to add UI elements into apps, and I worry that many UXers have started favoring these quick-win methods over foundational user-centered principles.</p><p>If you need a starting point for discussion with your team, I encourage you to share this post. My hope is this info is especially useful for UXers trying to create more consistent guidance across teams without turning every onboarding or help experience into a maze of popups, tours, and misunderstood help widgets.</p><div class="callout-block" data-callout="true"><p><strong>&#9888;&#65039; Disclaimer: </strong>This is meant to be used as a reference guide, so you&#8217;ll notice that a few ideas repeat across some sections.</p></div><h1>Core Strategy Principles</h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DBLo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff728130c-13ae-4a09-9bea-79a1d685cb73_1254x1254.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DBLo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff728130c-13ae-4a09-9bea-79a1d685cb73_1254x1254.png 424w, https://substackcdn.com/image/fetch/$s_!DBLo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff728130c-13ae-4a09-9bea-79a1d685cb73_1254x1254.png 848w, https://substackcdn.com/image/fetch/$s_!DBLo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff728130c-13ae-4a09-9bea-79a1d685cb73_1254x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!DBLo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff728130c-13ae-4a09-9bea-79a1d685cb73_1254x1254.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DBLo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff728130c-13ae-4a09-9bea-79a1d685cb73_1254x1254.png" width="273" height="273" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f728130c-13ae-4a09-9bea-79a1d685cb73_1254x1254.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1254,&quot;width&quot;:1254,&quot;resizeWidth&quot;:273,&quot;bytes&quot;:1060281,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/195474622?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff728130c-13ae-4a09-9bea-79a1d685cb73_1254x1254.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DBLo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff728130c-13ae-4a09-9bea-79a1d685cb73_1254x1254.png 424w, https://substackcdn.com/image/fetch/$s_!DBLo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff728130c-13ae-4a09-9bea-79a1d685cb73_1254x1254.png 848w, https://substackcdn.com/image/fetch/$s_!DBLo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff728130c-13ae-4a09-9bea-79a1d685cb73_1254x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!DBLo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff728130c-13ae-4a09-9bea-79a1d685cb73_1254x1254.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol><li><p><strong>Keep guidance contextual and just-in-time. </strong>When possible, information should appear at the moment a user needs it to make the next decision or take the next action. Avoid front-loading instruction that users must remember for later interactions and decisions.</p></li><li><p><strong>Require only what is necessary up front. </strong>Use step-by-step onboarding only for information the system genuinely needs in order to function, or for required security, compliance, or activation steps. Everything else should be deferred until it becomes relevant and displayed just-in-time in the workflow.</p></li><li><p><strong>Make the next action explicit. </strong>Each step should make it obvious what the user is expected to do next. The goal is not the fewest possible words. The goal is the minimum amount of text needed to make the next action or decision clear and explicit.</p></li><li><p><strong>Show only what is relevant to the current user and context. </strong>Where possible, the experience should adapt based on role, permissions, product access, workflow stage, and device context. Users should not be exposed to features, instructions, or decisions that do not apply to them.</p></li><li><p><strong>Prevent errors and make recovery easy. </strong>Onboarding and self-serve setup or data management should reduce the chance of mistakes through clear structure, validation, and review processes. When errors do occur, the system should make correction options straightforward, visible, and explicit.</p></li><li><p><strong>Keep help inside the workflow whenever possible. </strong>The primary support strategy should be built directly into onboarding, self-service configuration, and the product experience itself. It should not depend on separate documentation systems, long text-heavy help panels, or standalone training content.</p></li></ol><h1>Help &amp; Onboarding Specifics</h1><ul><li><p><strong>Use wizards selectively. </strong>A wizard is appropriate when the task needs a clear sequence of required setup steps. It should not be used to force optional configuration, introduce broad product education, or present every available feature at once.</p></li><li><p><strong>Organize around decisions and tasks, not system structure. </strong>Each onboarding step should support one main action, one main decision, or one coherent group of closely related inputs.</p></li><li><p><strong>Keep progress visible. </strong>Required setup should be broken into clearly named steps so users understand where they are, what remains, and what has already been completed.</p></li><li><p><strong>Defer nonessential setup. </strong>Optional details, secondary preferences, and lower-priority configuration should not be added to upfront onboarding steps. These items should be introduced just-in-time, in context, when they become relevant to the user&#8217;s workflow.</p></li><li><p><strong>Use progressive disclosure carefully. </strong>Show the information most users need directly on the screen. Following the 80/20 Rule, the default view should include the guidance most users need to move forward without extra clicks. Secondary details, exception paths, and less common cases can be placed behind a clearly labeled expand option or another explicit interaction. Do not hide essential guidance by default.</p></li><li><p><strong>Design for exceptions without breaking the primary workflow. </strong>Even when the underlying onboarding work is not literally linear, the experience should still impose a clear sequence whenever that creates a more understandable path through setup. That sequence should accommodate all valid scenarios without blocking users whose path differs from the common case. (This could be implemented using progressive disclosure in the frontend, supported by conditional logic in the backend.) The default flow should be optimized for the 80/20 path, while less common cases can be handled through branching, progressive disclosure, or guided exceptions inside the overall sequence.</p></li><li><p><strong>Support save and return at all cost. </strong>Users should be able to pause and resume onboarding without losing work or losing their place when the process is likely to span multiple decisions or sessions.</p></li><li><p><strong>Validate in place. </strong>Errors and warnings should appear close to the relevant UI control or user action, using plain, user-centered language with explicit guidance on how to correct the issue. However, first look for all possible methods to avoid system errors in the first place. (Allow the system itself to do the bulk of the work.)</p></li><li><p><strong>Provide a review point before commitment. </strong>Users should have a chance to confirm important choices before activation, submission, or any downstream consequence that is difficult to undo.</p></li><li><p><strong>Confirm irreversible actions. </strong>Any choice that is irreversible, or that would require manual support intervention to correct, should trigger an explicit confirmation modal that clearly states the consequence.</p></li></ul><h1>End-User Onboarding Best Practices</h1><p>In general, end-user experiences should focus on fast, confident entry into core product use. The product should not assume that new users want a tour, a lesson, or a lengthy profile setup process before they can begin.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TPj_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb0ff875-b724-4348-a746-cded83db8bf0_1254x1254.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TPj_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb0ff875-b724-4348-a746-cded83db8bf0_1254x1254.png 424w, https://substackcdn.com/image/fetch/$s_!TPj_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb0ff875-b724-4348-a746-cded83db8bf0_1254x1254.png 848w, https://substackcdn.com/image/fetch/$s_!TPj_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb0ff875-b724-4348-a746-cded83db8bf0_1254x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!TPj_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb0ff875-b724-4348-a746-cded83db8bf0_1254x1254.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TPj_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb0ff875-b724-4348-a746-cded83db8bf0_1254x1254.png" width="337" height="337" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cb0ff875-b724-4348-a746-cded83db8bf0_1254x1254.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1254,&quot;width&quot;:1254,&quot;resizeWidth&quot;:337,&quot;bytes&quot;:1364569,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/195474622?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb0ff875-b724-4348-a746-cded83db8bf0_1254x1254.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TPj_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb0ff875-b724-4348-a746-cded83db8bf0_1254x1254.png 424w, https://substackcdn.com/image/fetch/$s_!TPj_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb0ff875-b724-4348-a746-cded83db8bf0_1254x1254.png 848w, https://substackcdn.com/image/fetch/$s_!TPj_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb0ff875-b724-4348-a746-cded83db8bf0_1254x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!TPj_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb0ff875-b724-4348-a746-cded83db8bf0_1254x1254.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ul><li><p><strong>Minimize first-run friction. </strong>Only the steps required for access, security, compliance, or immediate product use should appear up front.</p></li><li><p><strong>Avoid forcing completion of nonessential profile or preference fields. </strong>If information can be added later, it should be deferred and requested just in time, and only when it becomes useful to the user.</p></li><li><p><strong>Introduce features at first meaningful use. </strong>If a user is about to encounter a task or feature for the first time, contextual instruction may be appropriate when delivered just-in-time.</p></li><li><p><strong>Tie guidance directly to the relevant interface components. </strong>When a prompt or instructional message appears, it should point to the exact UI control or choice the user is working with and explicitly explain what to do now in context.</p></li><li><p><strong>Use the same standards on mobile. </strong>A mobile experience should follow the same just-in-time and contextual model. For accessibility and usability reasons, do not rely on hover behavior, hidden affordances, or dense text patterns that are difficult to use on smaller screens.</p></li></ul><h1>System Admin Onboarding Best Practices</h1><p>System admin onboarding should be treated as a guided setup experience, not a general product introduction. These users are usually configuring important parts of the system, making decisions that affect other users, and managing settings that may have downstream consequences. The experience should help them move through required setup tasks with enough structure, context, validation, and review to feel confident before anything is activated or applied.</p><ul><li><p><strong>Prioritize structured setup over broad education. </strong>The setup experience should lead admin users with setup responsibilities through required decisions and setup activities in a deliberate sequence instead of expecting them to learn the system through large amounts of introductory content. Even when the underlying work is not fully linear, the experience should create a clear sequence if one can support all necessary scenarios. That sequence should be designed to work for all such users, while being optimized for the most common (80/20) paths wherever possible.</p></li><li><p><strong>Keep the experience focused on the task at hand. </strong>Do not expose unrelated features, settings, or reference material during setup or configuration tasks if possible.</p></li><li><p><strong>Make system state clear. </strong>Admin users should always be able to tell where they are in the setup process, what has been completed, what is in progress, what still needs review, and where action is required. Also consider including additional push notifications to encourage progress where possible.</p></li><li><p><strong>Design for confidence before activation. </strong>The experience should favor review, preview, validation, and confirmation over workflow speed, especially where configuration choices have impactful downstream effects.</p></li><li><p><strong>Support error prevention and correction as part of the workflow. </strong>The experience should assume that some information will need to be revised during setup. Editing, revisiting earlier decisions, correcting errors, and continuing forward should feel like part of the intended process and be explicit. </p></li><li><p><strong>Use just-in-time embedded help at decision points. </strong>Admin users should receive concise guidance where choices are made, especially during setup moments that require interpretation, review, or error correction. This is especially important for bulk setup actions. Guidance should use language framed from the user&#8217;s task perspective. The system should not send them away to search through general documentation to understand a required setup decision if possible.</p></li><li><p><strong>Respect role and permission context. </strong>Different admin user segments should only see the configuration choices, instructions, and follow-up guidance that apply to their responsibilities where possible.</p></li></ul><h1>Help &amp; In-App Guidance Best Practices</h1><p>Help should be treated as part of the product experience, not as a separate system. The goal is to give people enough information to move forward from the screen they are already on, without requiring them to stop, search, and interpret a large external help system.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gqrA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b0a252f-3e27-48be-addc-963092b4a589_1254x1071.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gqrA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b0a252f-3e27-48be-addc-963092b4a589_1254x1071.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gqrA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b0a252f-3e27-48be-addc-963092b4a589_1254x1071.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gqrA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b0a252f-3e27-48be-addc-963092b4a589_1254x1071.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gqrA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b0a252f-3e27-48be-addc-963092b4a589_1254x1071.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gqrA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b0a252f-3e27-48be-addc-963092b4a589_1254x1071.jpeg" width="333" height="284.4043062200957" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2b0a252f-3e27-48be-addc-963092b4a589_1254x1071.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1071,&quot;width&quot;:1254,&quot;resizeWidth&quot;:333,&quot;bytes&quot;:531127,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/195474622?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b0a252f-3e27-48be-addc-963092b4a589_1254x1071.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gqrA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b0a252f-3e27-48be-addc-963092b4a589_1254x1071.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gqrA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b0a252f-3e27-48be-addc-963092b4a589_1254x1071.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gqrA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b0a252f-3e27-48be-addc-963092b4a589_1254x1071.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gqrA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b0a252f-3e27-48be-addc-963092b4a589_1254x1071.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Remember me?</figcaption></figure></div><ul><li><p><strong>Make embedded guidance the default. </strong>The first choice should be inline instructions, targeted helper text, well-written empty states, clear labels, and task-level prompts placed within the workflow.</p></li><li><p><strong>Write from the user&#8217;s point of view. </strong>Help text should be framed around what the user is trying to do, what action to take, and what happens next. It should not be written from the system&#8217;s perspective.</p></li><li><p><strong>Keep required help visible. </strong>If most users need a piece of guidance in order to proceed correctly, that guidance should appear on the face of the interface. It should not be hidden behind a click, tooltip, or icon-only control.</p></li><li><p><strong>Use progressive disclosure only for secondary help. </strong>Expandable content is appropriate for extra explanation, edge cases, definitions, or deeper detail that only a smaller portion of users will need. All uses of progressive disclosure should be accessed via an explicitly labeled UI component.</p></li><li><p><strong>Avoid icon-only help patterns. </strong>All help-triggering controls should be explicitly labeled. For accessibility and usability reasons, do not rely on question-mark icons or other symbols alone to communicate that useful information is available.</p></li><li><p><strong>Do not put essential help in tooltips alone. </strong>Tooltips and similar patterns may support supplemental explanation, but they are not strong enough to carry required instructions or critical decision support. Also, keep in mind that hover-only controls are deeply inaccessible in all UI context and inherently unusable on mobile.</p></li><li><p><strong>Use empty states as guidance moments. </strong>When a screen or area has no content yet, the empty state should explain what belongs there and what the user can do next.</p></li><li><p><strong>Use error states as guidance moments. </strong>Messages should explain what went wrong, what the user can do now, and whether the issue can be resolved in the product or requires support.</p></li><li><p><strong>Treat external help systems as secondary. </strong>A separate documentation system may still exist, but it should act as backup reference material. It should not be the primary method for explaining how to complete onboarding or common in-product tasks.</p></li><li><p><strong>Design content for reuse across contexts. </strong>Help content should be modular enough to be placed near relevant tasks across the product rather than stored only as long, standalone pages.</p></li></ul><h1>Example Patterns to Avoid </h1><ul><li><p><strong>Avoid showing the full complexity of the system too early.</strong> Sometimes complex products still need sequencing. The right response to complexity is guided structure and contextual disclosure, not exposure of every option at once. See <a href="https://www.nngroup.com/articles/wizards/">Wizards: Definition and Design Recommendations</a>, <a href="https://baymard.com/blog/trigger-indicators">UI: Proper Indicators for Hidden Elements</a>, and <a href="https://www.interaction-design.org/literature/article/design-for-optimal-experience">Design for Optimal Experience</a>.</p></li><li><p><strong>Avoid onboarding carousels or introductory tours.</strong> Do not present users with a sequence of pop-up slides or feature-overview screens at first login as the primary onboarding method. These patterns usually ask users to remember abstract guidance before they have a real task or decision in front of them. See<em> </em><a href="https://erikrunyon.com/2013/07/carousel-interaction-stats/">Carousel Interaction Stats</a><em>, </em><a href="https://www.nngroup.com/articles/onboarding-tutorials/">Onboarding Tutorials vs. Contextual Help</a> and <a href="https://www.nngroup.com/articles/mobile-tutorials/">Mobile Tutorials: Wasted Effort or Efficiency Boost?</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wXSA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3e5f503-873a-4ef3-808e-faa9815f0072_1672x941.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wXSA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3e5f503-873a-4ef3-808e-faa9815f0072_1672x941.jpeg 424w, https://substackcdn.com/image/fetch/$s_!wXSA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3e5f503-873a-4ef3-808e-faa9815f0072_1672x941.jpeg 848w, https://substackcdn.com/image/fetch/$s_!wXSA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3e5f503-873a-4ef3-808e-faa9815f0072_1672x941.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!wXSA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3e5f503-873a-4ef3-808e-faa9815f0072_1672x941.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wXSA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3e5f503-873a-4ef3-808e-faa9815f0072_1672x941.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b3e5f503-873a-4ef3-808e-faa9815f0072_1672x941.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:486708,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/195474622?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3e5f503-873a-4ef3-808e-faa9815f0072_1672x941.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wXSA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3e5f503-873a-4ef3-808e-faa9815f0072_1672x941.jpeg 424w, https://substackcdn.com/image/fetch/$s_!wXSA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3e5f503-873a-4ef3-808e-faa9815f0072_1672x941.jpeg 848w, https://substackcdn.com/image/fetch/$s_!wXSA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3e5f503-873a-4ef3-808e-faa9815f0072_1672x941.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!wXSA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3e5f503-873a-4ef3-808e-faa9815f0072_1672x941.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></li><li><p><strong>Avoid broad first-run walkthroughs that explain the whole interface.</strong> Even when step-by-step guidance points at specific UI elements, this pattern is often difficult for users. It can interrupt task flow, appear out of context, and force users to memorize instructions they can&#8217;t easily recall or apply when needed. See <a href="https://www.nngroup.com/articles/onboarding-tutorials/">Onboarding Tutorials vs. Contextual Help</a>, <a href="https://www.nngroup.com/articles/mobile-instructional-overlay/">Instructional Overlays and Coach Marks for Mobile Apps</a>, and <a href="https://www.nngroup.com/articles/help-and-documentation/">Help and Documentation (Usability Heuristic #10)</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!S3MX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff52058e8-887a-47e3-972c-42e0d50f4632_1672x941.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!S3MX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff52058e8-887a-47e3-972c-42e0d50f4632_1672x941.jpeg 424w, https://substackcdn.com/image/fetch/$s_!S3MX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff52058e8-887a-47e3-972c-42e0d50f4632_1672x941.jpeg 848w, https://substackcdn.com/image/fetch/$s_!S3MX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff52058e8-887a-47e3-972c-42e0d50f4632_1672x941.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!S3MX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff52058e8-887a-47e3-972c-42e0d50f4632_1672x941.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!S3MX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff52058e8-887a-47e3-972c-42e0d50f4632_1672x941.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f52058e8-887a-47e3-972c-42e0d50f4632_1672x941.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:527549,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/195474622?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff52058e8-887a-47e3-972c-42e0d50f4632_1672x941.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!S3MX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff52058e8-887a-47e3-972c-42e0d50f4632_1672x941.jpeg 424w, https://substackcdn.com/image/fetch/$s_!S3MX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff52058e8-887a-47e3-972c-42e0d50f4632_1672x941.jpeg 848w, https://substackcdn.com/image/fetch/$s_!S3MX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff52058e8-887a-47e3-972c-42e0d50f4632_1672x941.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!S3MX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff52058e8-887a-47e3-972c-42e0d50f4632_1672x941.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></li><li><p><strong>Avoid global &#8220;help&#8221; entry points as the main solution.</strong> A global help button, floating chatbot, generic right-side help pane, or detached knowledge base should not carry the primary burden of teaching the workflow. These patterns can be useful as secondary support, but they often force users to leave the task, search for the right answer, interpret generic content, and then apply it back to the screen they were already using. See <a href="https://www.nngroup.com/articles/help-and-documentation/">Help and Documentation (Usability Heuristic #10)</a> and <a href="https://www.nngroup.com/articles/onboarding-tutorials/">Onboarding Tutorials vs. Contextual Help</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nhUP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc921566e-24b6-4bfa-af4f-0edfbf543b71_1672x941.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nhUP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc921566e-24b6-4bfa-af4f-0edfbf543b71_1672x941.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nhUP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc921566e-24b6-4bfa-af4f-0edfbf543b71_1672x941.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nhUP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc921566e-24b6-4bfa-af4f-0edfbf543b71_1672x941.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nhUP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc921566e-24b6-4bfa-af4f-0edfbf543b71_1672x941.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nhUP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc921566e-24b6-4bfa-af4f-0edfbf543b71_1672x941.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c921566e-24b6-4bfa-af4f-0edfbf543b71_1672x941.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:508617,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/195474622?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc921566e-24b6-4bfa-af4f-0edfbf543b71_1672x941.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nhUP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc921566e-24b6-4bfa-af4f-0edfbf543b71_1672x941.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nhUP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc921566e-24b6-4bfa-af4f-0edfbf543b71_1672x941.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nhUP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc921566e-24b6-4bfa-af4f-0edfbf543b71_1672x941.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nhUP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc921566e-24b6-4bfa-af4f-0edfbf543b71_1672x941.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></li><li><p><strong>Avoid non-contextual help panes.</strong> A right-side help panel can be useful when it is tied directly to the current screen, task, role, or decision. It becomes much less useful when it acts like a generic documentation drawer that displays broad reference content without knowing what the user is trying to do. Help should reduce interpretation work, not add another layer of searching inside the product. See <a href="https://www.nngroup.com/articles/help-and-documentation/">Help and Documentation (Usability Heuristic #10)</a> and <a href="https://www.nngroup.com/articles/onboarding-tutorials/">Onboarding Tutorials vs. Contextual Help</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oc1q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd473f8d7-dd05-406a-b454-275a815b4034_1672x941.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oc1q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd473f8d7-dd05-406a-b454-275a815b4034_1672x941.jpeg 424w, https://substackcdn.com/image/fetch/$s_!oc1q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd473f8d7-dd05-406a-b454-275a815b4034_1672x941.jpeg 848w, https://substackcdn.com/image/fetch/$s_!oc1q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd473f8d7-dd05-406a-b454-275a815b4034_1672x941.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!oc1q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd473f8d7-dd05-406a-b454-275a815b4034_1672x941.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oc1q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd473f8d7-dd05-406a-b454-275a815b4034_1672x941.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d473f8d7-dd05-406a-b454-275a815b4034_1672x941.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:584244,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/195474622?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd473f8d7-dd05-406a-b454-275a815b4034_1672x941.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oc1q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd473f8d7-dd05-406a-b454-275a815b4034_1672x941.jpeg 424w, https://substackcdn.com/image/fetch/$s_!oc1q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd473f8d7-dd05-406a-b454-275a815b4034_1672x941.jpeg 848w, https://substackcdn.com/image/fetch/$s_!oc1q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd473f8d7-dd05-406a-b454-275a815b4034_1672x941.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!oc1q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd473f8d7-dd05-406a-b454-275a815b4034_1672x941.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></li><li><p><strong>Avoid unlabeled icons and ambiguous controls.</strong> If a control is important enough to influence comprehension or decision-making, it should be labeled clearly. Do not hide required guidance behind a &#8220;?&#8221; icon, icon-only button, hover-only tooltip, or any other symbol that users have to discover, interpret, and activate before they know useful help exists. See <a href="https://www.nngroup.com/articles/icon-usability/">Icon Usability</a> and <a href="https://www.nngroup.com/articles/tooltip-guidelines/">Tooltip Guidelines</a>.</p></li><li><p><strong>Avoid putting essential help in tooltips alone.</strong> Tooltips and similar patterns may support supplemental explanation, but they are not strong enough to carry required instructions or critical decision support. They are easy to miss, often depend on hover behavior, and can create serious usability and accessibility problems on mobile, touch devices, and keyboard-only workflows. See <a href="https://www.nngroup.com/articles/tooltip-guidelines/">Tooltip Guidelines</a>, <a href="https://baymard.com/blog/trigger-indicators">UI: Proper Indicators for Hidden Elements</a>, and <a href="https://www.interaction-design.org/literature/article/design-for-optimal-experience">Design for Optimal Experience</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tQuS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47a0c7c0-1909-44e4-9fbf-26cc015d7f97_1672x941.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tQuS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47a0c7c0-1909-44e4-9fbf-26cc015d7f97_1672x941.jpeg 424w, https://substackcdn.com/image/fetch/$s_!tQuS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47a0c7c0-1909-44e4-9fbf-26cc015d7f97_1672x941.jpeg 848w, https://substackcdn.com/image/fetch/$s_!tQuS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47a0c7c0-1909-44e4-9fbf-26cc015d7f97_1672x941.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!tQuS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47a0c7c0-1909-44e4-9fbf-26cc015d7f97_1672x941.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tQuS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47a0c7c0-1909-44e4-9fbf-26cc015d7f97_1672x941.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/47a0c7c0-1909-44e4-9fbf-26cc015d7f97_1672x941.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:527409,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/195474622?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47a0c7c0-1909-44e4-9fbf-26cc015d7f97_1672x941.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tQuS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47a0c7c0-1909-44e4-9fbf-26cc015d7f97_1672x941.jpeg 424w, https://substackcdn.com/image/fetch/$s_!tQuS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47a0c7c0-1909-44e4-9fbf-26cc015d7f97_1672x941.jpeg 848w, https://substackcdn.com/image/fetch/$s_!tQuS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47a0c7c0-1909-44e4-9fbf-26cc015d7f97_1672x941.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!tQuS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47a0c7c0-1909-44e4-9fbf-26cc015d7f97_1672x941.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></li><li><p><strong>Avoid walls of text.</strong> Large blocks of explanatory copy are difficult to scan and are usually a sign that the content is not tightly aligned to the decision the user must make. See <a href="https://www.nngroup.com/articles/plain-language-experts/">Plain Language Is for Everyone, Even Experts</a> and <a href="https://www.nngroup.com/articles/f-shaped-pattern-reading-web-content/">F-Shaped Pattern of Reading on the Web: Misunderstood, But Still Relevant (Even on Mobile)</a>.</p></li></ul><h1>A Pattern That Works</h1><p>At a high-level, onboarding and help should make the next step clear at the moment it matters. Required setup should be structured and guided. Optional setup should be deferred. Help should be embedded, explicit, role-aware, and written from the user&#8217;s point of view.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GxZn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe13ff78f-57ed-4523-b0dd-c4e1865f12a8_1672x941.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GxZn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe13ff78f-57ed-4523-b0dd-c4e1865f12a8_1672x941.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GxZn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe13ff78f-57ed-4523-b0dd-c4e1865f12a8_1672x941.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GxZn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe13ff78f-57ed-4523-b0dd-c4e1865f12a8_1672x941.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GxZn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe13ff78f-57ed-4523-b0dd-c4e1865f12a8_1672x941.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GxZn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe13ff78f-57ed-4523-b0dd-c4e1865f12a8_1672x941.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e13ff78f-57ed-4523-b0dd-c4e1865f12a8_1672x941.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:461938,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/195474622?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe13ff78f-57ed-4523-b0dd-c4e1865f12a8_1672x941.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GxZn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe13ff78f-57ed-4523-b0dd-c4e1865f12a8_1672x941.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GxZn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe13ff78f-57ed-4523-b0dd-c4e1865f12a8_1672x941.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GxZn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe13ff78f-57ed-4523-b0dd-c4e1865f12a8_1672x941.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GxZn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe13ff78f-57ed-4523-b0dd-c4e1865f12a8_1672x941.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This approach is especially important for complex, role-based products. The more the product can tailor onboarding and guidance to the user&#8217;s role, permissions, and current task, the more intuitive and self-sufficient the digital experience becomes.</p><h1>UX Strategy for Key Workflows</h1><p>This section translates the onboarding and in-application help principles into concrete experience direction for high-value workflows across products and platforms. The consistent approach across workflows is to keep the primary screens task-focused, introduce complexity only when it becomes relevant, make the next action explicit, validate in place, provide review before commitment, and keep required help visible within the flow.</p><h2>Reusable Building Blocks</h2><ol><li><p><strong>Guided task flows (wizard only when required): </strong>Use step-by-step guidance when there is a strict sequence (e.g., review &#8594; confirm &#8594; submit). Otherwise, keep users on a single primary screen with clear sectioning and strategic use of conditional logic and progressive disclosure.</p></li><li><p><strong>Workflow checklists + system state: </strong>A persistent checklist showing what&#8217;s complete, what&#8217;s blocked, what&#8217;s next, and what requires attention (especially for multi-session work).</p></li><li><p><strong>Strong empty states: </strong>When there&#8217;s nothing to display yet, explain what belongs here and provide one clear call to action (CTA) to get started.</p></li><li><p><strong>Inline validation and guardrails: </strong>Validate as users type or select, keep errors near controls, and explain how to fix issues in plain language. Reserve blocking errors for truly blocking constraints.</p></li><li><p><strong>Review/confirm screens for consequential actions: </strong>Provide a preview of impacts (what changes, effective timing, downstream consequences) before final submission or activation.</p></li><li><p><strong>Contextual help at decision points: </strong>Short helper text, definitions, examples, and &#8220;what happens next&#8221; messaging embedded in the flow. Use progressive disclosure for edge cases; avoid icon-only help.</p></li><li><p><strong>Save-and-return + drafts: </strong>Support long or multi-stakeholder tasks with drafts, autosave, and clear &#8220;resume where you left off&#8221; entry points.</p></li><li><p><strong>User role- and permission-aware tailoring: </strong>Show only actions and guidance relevant to the user&#8217;s role, access level, and workflow stage.</p></li><li><p><strong>Notifications: </strong>Use in-app and (where applicable) email notifications to drive completion for time-bound or multi-session workflows (missing items, pending approvals, approaching deadlines).</p></li></ol><h1><strong>Conclusion</strong></h1><p>In practice, a lot of teams do not follow these guidelines. Sometimes it is because the product is complex. Sometimes it is because onboarding gets treated like a communication problem, a training problem, or a feature-adoption problem. And sometimes it is because patterns like tours, popups, floating chatbots, generic help panes, and &#8220;?&#8221; icons feel like easy solutions when a complex workflow is hard to design for across multiple teams.</p><p>But the usability and accessibility data gives us a pretty clear reason to reconsider. Required guidance works better when it is visible, contextual, and tied to the task a real user is trying to complete in the real world. Users should not have to remember instructions from five screens ago, hunt through generic help content, or discover hidden guidance before they can move forward.</p><p>So if your team is using this post as a starting point, I hope it helps you push for onboarding and help decisions that are more grounded in evidence, more consistent across products, and more respectful of how people actually use software in the real world. Thanks for reading!</p><div><hr></div><h1>Citations</h1><ul><li><p>Baymard Institute, <em><a href="https://baymard.com/blog/trigger-indicators">UI: Proper Indicators for Hidden Elements</a></em></p></li><li><p>Interaction Design Foundation, <em><a href="https://www.interaction-design.org/literature/article/design-for-optimal-experience">Design for Optimal Experience</a></em></p></li><li><p>University of Notre Dame, <em><a href="https://erikrunyon.com/2013/07/carousel-interaction-stats/">Carousel Interaction Stats</a></em></p></li><li><p>Nielsen Norman Group, <em><a href="https://www.nngroup.com/articles/onboarding-tutorials/">Onboarding tutorials vs. contextual help</a></em></p></li><li><p>Nielsen Norman Group, <em><a href="https://www.nngroup.com/articles/wizards/">Wizards: Definition and design recommendations</a></em></p></li><li><p>Nielsen Norman Group, <em><a href="https://www.nngroup.com/articles/mobile-instructional-overlay/">Instructional overlays and coach marks for mobile apps</a></em></p></li><li><p>Nielsen Norman Group, <em><a href="https://www.nngroup.com/articles/help-and-documentation/">Help and documentation (Usability Heuristic #10)</a></em></p></li><li><p>Nielsen Norman Group, <em><a href="https://www.nngroup.com/articles/mobile-tutorials/">Mobile tutorials: Wasted effort or efficiency boost?</a></em></p></li><li><p>Nielsen Norman Group, <em><a href="https://www.nngroup.com/articles/plain-language-experts/">Plain language is for everyone, even experts</a></em></p></li><li><p>Nielsen Norman Group, <em><a href="https://www.nngroup.com/articles/tooltip-guidelines/">Tooltip guidelines</a></em></p></li><li><p>Nielsen Norman Group, <em><a href="https://www.nngroup.com/articles/icon-usability/">Icon usability</a></em></p></li><li><p>Nielsen Norman Group, <em><a href="https://www.nngroup.com/articles/f-shaped-pattern-reading-web-content/">F-Shaped Pattern of Reading on the Web: Misunderstood, But Still Relevant (Even on Mobile)</a></em></p></li></ul><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://trevorcalabro.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">UX Research in the Wild is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Top 8 Interaction Design Articles]]></title><description><![CDATA[Content Good UX Researchers Should Know]]></description><link>https://trevorcalabro.substack.com/p/top-8-interaction-design-articles</link><guid isPermaLink="false">https://trevorcalabro.substack.com/p/top-8-interaction-design-articles</guid><dc:creator><![CDATA[Trevor Calabro]]></dc:creator><pubDate>Sun, 19 Apr 2026 02:00:31 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/6e7fb934-acf4-4845-8d86-f8e93ce27c57_694x619.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Summary:</strong> Here are 8 of my recent articles that all have to deal with interaction designed best practices. These are the most common things I have UX researchers asking me about when it comes to this kind of stuff.</p><div><hr></div><p>I've noticed a lot of UX research writing here on Substack focuses on methods, quant specific statistics, and researchops process. I write about all that stuff too. But today I wanted to provide a list of recent articles that focus on old-school interaction design foundation.</p><p>So if you are newer to this blog and want a practical place to begin, start here. This list gives you a pretty good sense of how I think about interaction design principles in the real world.</p><h1><strong>Top 8 UI-Focused Reader Picks</strong></h1><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hRkF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b91556a-2a29-4fc2-b532-2b5e8067b7eb_1344x204.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hRkF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b91556a-2a29-4fc2-b532-2b5e8067b7eb_1344x204.png 424w, https://substackcdn.com/image/fetch/$s_!hRkF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b91556a-2a29-4fc2-b532-2b5e8067b7eb_1344x204.png 848w, https://substackcdn.com/image/fetch/$s_!hRkF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b91556a-2a29-4fc2-b532-2b5e8067b7eb_1344x204.png 1272w, https://substackcdn.com/image/fetch/$s_!hRkF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b91556a-2a29-4fc2-b532-2b5e8067b7eb_1344x204.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hRkF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b91556a-2a29-4fc2-b532-2b5e8067b7eb_1344x204.png" width="1344" height="204" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8b91556a-2a29-4fc2-b532-2b5e8067b7eb_1344x204.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:204,&quot;width&quot;:1344,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:0,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hRkF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b91556a-2a29-4fc2-b532-2b5e8067b7eb_1344x204.png 424w, https://substackcdn.com/image/fetch/$s_!hRkF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b91556a-2a29-4fc2-b532-2b5e8067b7eb_1344x204.png 848w, https://substackcdn.com/image/fetch/$s_!hRkF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b91556a-2a29-4fc2-b532-2b5e8067b7eb_1344x204.png 1272w, https://substackcdn.com/image/fetch/$s_!hRkF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b91556a-2a29-4fc2-b532-2b5e8067b7eb_1344x204.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><h2><strong>1. <a href="https://trevorcalabro.substack.com/p/reframing-accessibility?utm_source=chatgpt.com">Reframing Accessibility</a></strong></h2><p><strong>Summary:</strong> This post argues that accessibility should not be treated like a separate compliance bucket sitting off to the side of usability. In practice, accessibility is often just usability under less forgiving conditions. That framing makes it easier for teams to see why these issues matter before they ship them.</p><blockquote><p>&#9999;&#65039; <strong>Note:</strong> I keep coming back to this one because it gives people a cleaner way to talk about accessibility with product teams that still treat it like an optional add-on.</p></blockquote><p></p><h2><strong>2. <a href="https://trevorcalabro.substack.com/p/make-it-look-like-what-it-does?utm_source=chatgpt.com">Make It Look Like What It Does</a></strong></h2><p><strong>Summary:</strong> This is my plain-language breakdown of affordances and signifiers, and why so many modern interfaces still get them wrong. If a thing is clickable, it should look clickable. If a control does something important, users should not have to guess what will happen next.</p><blockquote><p>&#9999;&#65039; <strong>Note:</strong> This is one of those posts that tends to make people re-look at their own UI work immediately, which is usually a good sign.</p></blockquote><p></p><h2><strong>3. <a href="https://trevorcalabro.substack.com/p/every-icon-needs-a-label?utm_source=chatgpt.com">Every Icon Needs a Label</a></strong></h2><p><strong>Summary:</strong> This post gets into one of the easiest UI shortcuts to defend and one of the easiest to misuse. Icons on their own often assume too much, especially in complex software. Labels reduce ambiguity, improve scanning, and make interfaces easier to learn without forcing users to decode symbols first.</p><blockquote><p>&#9999;&#65039; <strong>Note:</strong> If you&#8217;ve ever had to sit through someone defending an unlabeled icon-only interface with complete confidence, this one may feel familiar.</p></blockquote><p></p><h2><strong>4. <a href="https://trevorcalabro.substack.com/p/the-anatomy-of-an-input-field?utm_source=chatgpt.com">The Anatomy of an Input Field (Part 1)</a></strong></h2><p><strong>Summary:</strong> This post breaks down the input field as an actual interface component instead of a blank box teams barely think about. Labels, helper text, required indicators, defaults, placeholder misuse, field states, all of that stuff matters more than people think.</p><blockquote><p>&#9999;&#65039; <strong>Note:</strong> A lot of form problems start here. This is one of the more practical posts I&#8217;ve written, and probably one of the more reusable ones too.</p></blockquote><p></p><h2><strong>5. <a href="https://trevorcalabro.substack.com/p/the-anatomy-of-an-input-field-part?utm_source=chatgpt.com">The Anatomy of an Input Field (Part 2)</a></strong></h2><p><strong>Summary:</strong> Part 2 keeps going and gets deeper into the decisions teams usually make too casually. Error handling, validation timing, edge cases, and all the little ways forms create unnecessary friction tend to show up once you stop treating field design like decoration.</p><blockquote><p>&#9999;&#65039; <strong>Note:</strong> If Part 1 is the foundation, this is the part where the cracks start to show.</p></blockquote><p></p><h2><strong>6. <a href="https://trevorcalabro.substack.com/p/the-problem-with-split-buttons?utm_source=chatgpt.com">The Problem With Split Buttons</a></strong></h2><p><strong>Summary:</strong> Split buttons look efficient on the surface, but in practice they often create hesitation, accidental actions, or plain old confusion. This post breaks down why that happens and why combining multiple action models inside one control is usually not as elegant as teams think it is.</p><blockquote><p>&#9999;&#65039; <strong>Note:</strong> I like this one because it focuses on a very specific pattern, but the logic behind it applies to a lot of interface design decisions.</p></blockquote><p></p><h2><strong>7. <a href="https://trevorcalabro.substack.com/p/stop-weaponizing-jakobs-law?utm_source=chatgpt.com">Stop Weaponizing Jakob&#8217;s Law</a></strong></h2><p><strong>Summary:</strong> Jakob&#8217;s Law gets cited constantly in UX, but a lot of people use it as a conversation-ending slogan instead of a principle that still requires judgment. This post is about what the law actually helps with, where people misuse it, and why blindly copying familiar patterns is not the same as good design.</p><blockquote><p>&#9999;&#65039; <strong>Note:</strong> This one tends to resonate with anyone who has watched a decent design critique get flattened by someone saying, &#8220;users expect it this way,&#8221; without much real thought behind it.</p></blockquote><p></p><h2><strong>8. <a href="https://trevorcalabro.substack.com/p/how-to-run-a-cognitive-walkthrough?utm_source=chatgpt.com">How To Run A Cognitive Walkthrough</a></strong></h2><p><strong>Summary:</strong> This is a practical guide to using a cognitive walkthrough as an actual evaluation method, not just as a vague UX theater exercise. It helps teams inspect flows step by step and catch points where users are likely to get stuck, hesitate, misread the interface, or lose confidence.</p><blockquote><p>&#9999;&#65039; <strong>Note:</strong> This is probably the most directly useful post on the list if you want something you can apply to design reviews right away.</p></blockquote><p></p><h1><strong>Conclusion</strong></h1><p>A lot of my writing ends up circling the same basic truth from different angles: small interface decisions are rarely small once real users have to deal with them. A missing label, a vague icon, a bad default, a poorly timed validation rule, or a control that tries to do too much can quietly turn a simple task into something slower, riskier, and more frustrating than it needed to be.</p><p>That&#8217;s part of why I wanted to make this list narrower than some of the broader roundup posts I&#8217;ve done before. This version is really for the people who care about the craft side of interface design. The folks who still think details matter because they do.</p><p>If any of these posts helped you think through a design problem, feel free to share them, quote them, I encourage you to share these links. Thank you for reading.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!noV2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c63befc-b824-451e-b44b-3e18e460f6df_1713x1316.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!noV2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c63befc-b824-451e-b44b-3e18e460f6df_1713x1316.jpeg 424w, https://substackcdn.com/image/fetch/$s_!noV2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c63befc-b824-451e-b44b-3e18e460f6df_1713x1316.jpeg 848w, https://substackcdn.com/image/fetch/$s_!noV2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c63befc-b824-451e-b44b-3e18e460f6df_1713x1316.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!noV2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c63befc-b824-451e-b44b-3e18e460f6df_1713x1316.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!noV2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c63befc-b824-451e-b44b-3e18e460f6df_1713x1316.jpeg" width="380" height="291.9322825452423" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7c63befc-b824-451e-b44b-3e18e460f6df_1713x1316.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:1316,&quot;width&quot;:1713,&quot;resizeWidth&quot;:380,&quot;bytes&quot;:0,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!noV2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c63befc-b824-451e-b44b-3e18e460f6df_1713x1316.jpeg 424w, https://substackcdn.com/image/fetch/$s_!noV2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c63befc-b824-451e-b44b-3e18e460f6df_1713x1316.jpeg 848w, https://substackcdn.com/image/fetch/$s_!noV2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c63befc-b824-451e-b44b-3e18e460f6df_1713x1316.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!noV2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c63befc-b824-451e-b44b-3e18e460f6df_1713x1316.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://trevorcalabro.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">UX Research in the Wild is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Fixing Bad Status Design]]></title><description><![CDATA[Reducing Confusion in Complex Workflows]]></description><link>https://trevorcalabro.substack.com/p/fixing-bad-status-design</link><guid isPermaLink="false">https://trevorcalabro.substack.com/p/fixing-bad-status-design</guid><dc:creator><![CDATA[Trevor Calabro]]></dc:creator><pubDate>Sat, 11 Apr 2026 17:08:55 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/585916ed-8f57-4994-bee3-e3af96bf58f2_694x619.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Summary: </strong>This week's article argues that enterprise UX teams spend too much time designing a specific interaction point and not enough time designing what happens after that interaction. I show how vague status labels, spinners, toasts, and dashboards create extra work for users, and what UX teams can do instead to make system feedback clearer and easier to trust.</p><div><hr></div><p>In my 20+ year career in UX, I&#8217;ve noticed that a lot of enterprise/complex software does a decent job designing the moments when users take action, but it seems like far less work goes into designing everything that happens after that. Over time, I&#8217;ve seen a lot of the real usability burden shift into that post user action space. Users are trying to understand what the system is doing, what happens next, and whether they can trust what they are seeing in that moment.</p><p>That&#8217;s the topic I want to rant about this week. I believe that in complex software, a lot of the most important UX work starts after the click, because that is the point where users need clear system feedback to stay oriented, make good decisions, and keep the work moving. Let&#8217;s dive in a little.</p><h1>After the Action</h1><p>A lot of the worst user experiences I have seen were not caused by a button being hard to find, a form being impossible to complete, or a navigation model that made no sense. They happened after all of that stuff. You fill out the form, upload the file, submit the request, assign the ticket, or approve the change, and for one brief second, it feels like the hard part is over. Then the system gives you some tiny piece of feedback like &#8220;Submitted&#8221; or &#8220;In Progress,&#8221; and now you are left trying to figure out whether it actually worked or not.</p><p>That is the part I think UX teams underestimate. The action itself may have taken three seconds, but the full experience now stretches across time and whatever mental model the user has constructed. And that guessing becomes the majority of the experience, because the user is no longer thinking about the task at hand. Instead, they are too busy trying to stay oriented inside a process that has suddenly become completely opaque. Not good.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XaM6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d126ef-a9f3-4bc5-ade6-1ba00ecfc125_919x588.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XaM6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d126ef-a9f3-4bc5-ade6-1ba00ecfc125_919x588.jpeg 424w, https://substackcdn.com/image/fetch/$s_!XaM6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d126ef-a9f3-4bc5-ade6-1ba00ecfc125_919x588.jpeg 848w, https://substackcdn.com/image/fetch/$s_!XaM6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d126ef-a9f3-4bc5-ade6-1ba00ecfc125_919x588.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!XaM6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d126ef-a9f3-4bc5-ade6-1ba00ecfc125_919x588.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XaM6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d126ef-a9f3-4bc5-ade6-1ba00ecfc125_919x588.jpeg" width="352" height="225.21871599564744" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/20d126ef-a9f3-4bc5-ade6-1ba00ecfc125_919x588.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:588,&quot;width&quot;:919,&quot;resizeWidth&quot;:352,&quot;bytes&quot;:125230,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/193900717?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d126ef-a9f3-4bc5-ade6-1ba00ecfc125_919x588.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XaM6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d126ef-a9f3-4bc5-ade6-1ba00ecfc125_919x588.jpeg 424w, https://substackcdn.com/image/fetch/$s_!XaM6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d126ef-a9f3-4bc5-ade6-1ba00ecfc125_919x588.jpeg 848w, https://substackcdn.com/image/fetch/$s_!XaM6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d126ef-a9f3-4bc5-ade6-1ba00ecfc125_919x588.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!XaM6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d126ef-a9f3-4bc5-ade6-1ba00ecfc125_919x588.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><figcaption class="image-caption">I&#8217;m confused. </figcaption></figure></div><p>Think about all the extra interaction costs we as UXers have caused users of complex systems over time, forcing them to hover over a nondescript UI element, refresh a table, check their email for some kind of update, ping a coworker, and open a second application just to understand whether the first one actually worked. My point is, it does not really matter that the submit button was clear, accessible, and placed exactly where best practices say it should be. The interaction did not end when they clicked it. It just became <em>wayyyyy </em>less visible.</p><h1>Worse in Enterprise Software</h1><p>My main argument is that this is more painful in enterprise environments because enterprise workflows usually unfold over multiple touchpoints over time.</p><p><strong>I think of these touchpoints dealing with these 4 areas:</strong></p><ol><li><p>People</p></li><li><p>Approvals</p></li><li><p>Dependencies</p></li><li><p>Backend Processes</p></li></ol><p>That kind of workflow creates a lot more room for uncertainty if the system does a poor job communicating state.</p><p>That is why I do not think this is really a complexity problem, at least not in the way UXers usually talk about it. In my experience, most enterprise users can handle a fair amount of complexity. They can learn terminology, navigate layered workflows, and deal with not-so-standard processes. But what I see wearing users down the most is system status ambiguity. They can work inside a complicated system if that system is explicit about what just happened, what is happening now, and what comes next. What really drains users is a system that looks simple on the surface but keeps forcing them to infer its actual state from vague labels, partial updates, and a lot of silence.</p><p>This is also why the good old <a href="https://www.nngroup.com/articles/visibility-system-status/">visibility of system status heuristic</a> still matters. The principle sounds basic until you apply it to a real enterprise workflow, where the &#8220;system&#8221; is no longer just one screen responding to one click. It is a chain of events that may involve timing, queueing, routing, review, exception handling, and another person picking up the work later. Once you look at it that way, it becomes obvious that a spinner or a tiny success message is often nowhere near enough.</p><div class="pullquote"><p>The way I see enterprise UX teams talk about this stuff is still very page-level, but we are really dealing with a time-based problem. That mismatch is where a lot of this friction starts.</p></div><h1>Showing Don&#8217;t Tell Status</h1><p>A lot of interfaces technically show status, and that is exactly why this problem gets missed so often. Anyone can point to a badge, banner, icon, or label and claim the state is visible, therefore it&#8217;s communicated to the user. In the narrowest possible sense, that may be technically true, but the leap from &#8220;it&#8217;s visible&#8221; to &#8220;it&#8217;s communicated well&#8221; is a wild one. (It&#8217;s also counter to any basic logic.)</p><p>For example, a status like &#8220;Pending&#8221; might be accurate from the system&#8217;s point of view and still nearly useless from the user&#8217;s point of view, because that single label can hide several completely different realities. It might mean waiting on review, waiting on a sync, waiting on another team, waiting on a nightly process, or sitting in a broken state that nobody has noticed yet. Do any of these hidden ambiguities sound familiar to you?</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9UvZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d822a17-4a27-43ff-ba02-9db26d64eba3_1191x561.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9UvZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d822a17-4a27-43ff-ba02-9db26d64eba3_1191x561.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9UvZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d822a17-4a27-43ff-ba02-9db26d64eba3_1191x561.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9UvZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d822a17-4a27-43ff-ba02-9db26d64eba3_1191x561.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9UvZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d822a17-4a27-43ff-ba02-9db26d64eba3_1191x561.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9UvZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d822a17-4a27-43ff-ba02-9db26d64eba3_1191x561.jpeg" width="359" height="169.1007556675063" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0d822a17-4a27-43ff-ba02-9db26d64eba3_1191x561.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:561,&quot;width&quot;:1191,&quot;resizeWidth&quot;:359,&quot;bytes&quot;:144417,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/193900717?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d822a17-4a27-43ff-ba02-9db26d64eba3_1191x561.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9UvZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d822a17-4a27-43ff-ba02-9db26d64eba3_1191x561.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9UvZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d822a17-4a27-43ff-ba02-9db26d64eba3_1191x561.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9UvZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d822a17-4a27-43ff-ba02-9db26d64eba3_1191x561.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9UvZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d822a17-4a27-43ff-ba02-9db26d64eba3_1191x561.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>That is where this starts to become a language problem as much as a status problem.</p><div class="pullquote"><p>One of the oldest usability ideas in the field is that systems should speak the user&#8217;s language rather than their own internal shorthand, and enterprise software violates that rule constantly.</p></div><p>Enterprise systems often expose backend categories, workflow abstractions, and generic state labels, then act as if the user has been meaningfully informed. I&#8217;m looking at you, <a href="https://www.workday.com/">Workday</a>, hahaha! In reality, the user has often just been handed a term that still requires interpretation, and interpretation is work.</p><p><strong>The real question is whether the state it displays helps the user answer what they actually need to know in that moment:</strong></p><ul><li><p>Did my action work?</p></li><li><p>What is happening right now?</p></li><li><p>Do I need to do anything else?</p></li><li><p>Can I safely leave this screen?</p></li><li><p>Is another person responsible now?</p></li><li><p>Should I expect this to update in ten seconds, an hour, or tomorrow morning?</p></li></ul><p>Those are the questions users are carrying around, and a lot of enterprise interfaces answer them very poorly, even when they appear to be full of status signals.</p><p>A status indicator can satisfy the design team because something is present on the screen, while still failing the user because it does not reduce uncertainty in any meaningful way. In my experience, that is where a lot of enterprise friction actually lives. The interface has not gone fully silent. It has done something even worse. It has spoken just enough to sound informative while still leaving the user with the actual cognitive burden of figuring out what the information means.</p><h1>The Hidden Cost</h1><p>When a system does a bad job of communicating system status, the most obvious cost is user confusion. But the bigger cost is the amount of extra user effort that gets layered on top of the workflow just to make the workflow usable. You&#8217;ve seen this before, users start refreshing screens, checking neighboring tabs, reopening records, scanning their email for confirmation messages, and asking coworkers whether something is normal. None of that work is the real job. It is orientation work that only exists because the interface failed to make the process legible.</p><p>Think about how this plays out in the real world. If a user is unsure whether a request actually went through, they are likely to submit it again. If someone can&#8217;t tell whether another team has the next step, they might start following up too early or too often. If a user can&#8217;t make sense of an item&#8217;s status, they might just create their own spreadsheet to track it manually in parallel. (You get the idea.) Over time, those behaviors stop being exceptions and start becoming the actual workflow.</p><div class="pullquote"><p>This is when the official system becomes the place where tasks are technically entered, but the real tracking happens somewhere else outside the system, and that is a big reason why these problems create so much downstream noise within our orgs.</p></div><p>There is also a trust cost that is harder to measure but very easy to overlook. For example, once users learn that a system&#8217;s status indicators are unreliable, they&#8217;ll likely stop taking them at face value. And in my experience, that kind of thing will totally change how users interact with the product over time. That is a bad place for enterprise software to land, especially when the work inside that software is high stakes.</p><h1>Why UX Teams Miss This</h1><p>Part of the reason this problem survives so often is that it hides in plain sight. UX teams spend a lot of time reviewing entry points into workflows because those are the parts that show up cleanly in mocks, prototypes, and design critiques. Team members can comment on layout, labels, form fields, hierarchy, and button placement with a lot of confidence. But the moment after submission is much messier. It involves time, dependencies, handoffs, conditional logic, and states that may only become visible hours later or in another part of the product. My theory is that this kind of design work is harder to capture in a static review, so it simply gets less consideration and attention.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kLvO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8fdea01-f915-4fbc-a70b-241966bb8f63_1030x588.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kLvO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8fdea01-f915-4fbc-a70b-241966bb8f63_1030x588.gif 424w, https://substackcdn.com/image/fetch/$s_!kLvO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8fdea01-f915-4fbc-a70b-241966bb8f63_1030x588.gif 848w, https://substackcdn.com/image/fetch/$s_!kLvO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8fdea01-f915-4fbc-a70b-241966bb8f63_1030x588.gif 1272w, https://substackcdn.com/image/fetch/$s_!kLvO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8fdea01-f915-4fbc-a70b-241966bb8f63_1030x588.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kLvO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8fdea01-f915-4fbc-a70b-241966bb8f63_1030x588.gif" width="394" height="224.92427184466018" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a8fdea01-f915-4fbc-a70b-241966bb8f63_1030x588.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:588,&quot;width&quot;:1030,&quot;resizeWidth&quot;:394,&quot;bytes&quot;:131899,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/193900717?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8fdea01-f915-4fbc-a70b-241966bb8f63_1030x588.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kLvO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8fdea01-f915-4fbc-a70b-241966bb8f63_1030x588.gif 424w, https://substackcdn.com/image/fetch/$s_!kLvO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8fdea01-f915-4fbc-a70b-241966bb8f63_1030x588.gif 848w, https://substackcdn.com/image/fetch/$s_!kLvO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8fdea01-f915-4fbc-a70b-241966bb8f63_1030x588.gif 1272w, https://substackcdn.com/image/fetch/$s_!kLvO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8fdea01-f915-4fbc-a70b-241966bb8f63_1030x588.gif 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Now I&#8217;m confused <em><strong>and </strong></em>waiting indefinitely&#8230; cool, cool. </figcaption></figure></div><p>I also think product teams regularly underestimate how much of their own understanding comes from being too deep in the weeds. The people building the system usually know what happens after the click because they know the architecture and business rules that drove the original workflow. These folks know that a request enters a queue, gets validated overnight, routes to a specific team, or changes state only after another process runs. Because they already know the story behind the workflow, they can look at a status label like &#8220;Pending&#8221; and mentally fill in the missing detail without noticing that the interface never actually communicated it. And of course, as user advocates, we all know that the user does not have that advantage.</p><p>There is a more structural issue underneath this too. I see a lot of orgs treat post-action states like an afterthought, then try to solve the problem later by blindly throwing a handful of UI components at it and calling it done.</p><p><strong>The most common culprits I see in the real world are:</strong></p><ul><li><p>a badge</p></li><li><p>a toast</p></li><li><p>a status column in a table</p></li><li><p>a filter that lets users sort by state</p></li><li><p>a tooltip</p></li><li><p>a color-coded icon or dot</p></li></ul><p>All of these can be useful, but are often added after the core workflow has already been defined. By that point, the team is not really designing state communication. The result is usually a collection of indicators that reflect technical states or fragments of the process, but do not add up to a coherent explanation of how the work is actually moving. (noise vs. signal.)</p><h1>The 3 Problem Children</h1><p>Here are 3 of the most common UI patterns I see in the real world. All are often used as stand-ins for better status design, even though they usually leave users doing far too much interpretation on their own.</p><h2>1. Progress Indicator Spinners</h2><p>The spinner is probably the most familiar example of this whole issue because it gives the appearance of feedback without always providing much explanation. For very short waits, that is usually fine. People do not need a full narrative when something takes two seconds. The problem starts when teams use the same pattern for situations that are no longer short, simple, or predictable. At that point, the spinner stops functioning like useful feedback and starts functioning more like a placeholder for missing design. Motion is still happening on the screen, but the user has learned very little about what the system is doing, how long it might take, or what they should do if the wait continues.</p><h2>2. Toasts</h2><p>The toast creates a slightly different problem. It is often meant to reassure the user that their action was successful, but in practice, it tends to confirm only the thinnest possible version of success. A message like &#8220;Saved&#8221; or &#8220;Submitted&#8221; can be technically true while still leaving the most important questions unanswered. Saved where? Submitted to who? Finished for now or sent into a longer process. Then, of course, the message disappears, the user is left staring at the same screen or a slightly updated one, and the real burden of interpretation begins. That pattern is especially weak in enterprise systems because the action that just occurred is often not the end of the story. It is the beginning of a larger sequence, and a fleeting little confirmation message is nowhere near enough to orient someone inside that sequence. And of course, we have decades of usage data showing that temporary UI elements like toasts are often completely missed by users, so that&#8217;s still a thing too.</p><h2>3. Dashboards</h2><p>Then there is the dreaded dashboard, the junk drawer for the info your org thinks users need. The logic seems reasonable on the surface. If users need to understand status across time, give them a centralized place to monitor status. Sometimes that does help.</p><div class="pullquote"><p>An enterprise-level dashboard only improves the experience if it turns raw status into something interpretable and actionable.</p></div><p>A table full of badges, timestamps, and vague labels does not automatically do that. In a lot of cases, it just relocates the confusion. The user can now see ten things marked &#8220;Pending&#8221; instead of one, but still has very little help understanding which of those items are healthy, which are stuck, which need intervention, and which are simply waiting their turn.</p><div class="callout-block" data-callout="true"><p><strong>&#128221; NOTE: </strong>What ties all 3 of these patterns together is that they can make a system look responsive while still leaving the user underinformed. That is why teams often feel like they have handled status communication when they really have not. There is motion, there is confirmation, there is a place to view records later, and from a distance that can look like solid coverage. But if the person using the system still has to translate the interface for themselves, then the design has only surfaced state in a shallow sense. </p></div><h1>Better Status Design</h1><p>Despite what many UXers seem to think, better status design does not require turning every workflow into a verbose tutorial. (And it also does not mean adding a Pendo-style pop-up walkthrough, you lazy bums. hahaha.)</p><div class="pullquote"><p>Most users do not need the system to narrate every little event in exhausting detail. What they need is enough explicit context to stay oriented without having to do detective work.</p></div><p>That usually means the interface needs to communicate more than a bare state label. It needs to communicate where the work is, what that state means in practical terms, whether anything is expected from the user right now, and what kind of change they should be watching for next.</p><p>This all sounds obvious when stated plainly, but a lot of enterprise products still stop at the thinnest possible layer of feedback. They tell the user that something exists in a state, but not what that state actually means for the work. A better system closes that gap. If something is under review, say that. If another team has the next step, say that. If processing typically takes until the next business day, say that. If the user is done for now and can safely leave, that should be explicit too. The goal is not to stuff the interface with more words. The goal is to reduce interpretation work.</p><p>This is also where good status design starts to feel more usable. When the system is clear about all of this, users stop floundering. You know the status design is working when users can move on and come back later because the interface has given them a usable explanation of the current situation. That is <em>wayyyyyy </em>more valuable than any generic success message.</p><p>A lot of the strongest examples I have seen do this by clearly separating the current state from the next-step meaning. That distinction matters because it is what turns status from a technical label into something a user can actually work with.</p><p><strong>&#10060; Bad: </strong>&#8220;Submitted&#8221;<br>&#10004;&#65039; <strong>Better: </strong>&#8220;Submitted for manager review&#8221;</p><p><strong>&#10060; Bad: </strong>&#8220;Processing&#8221;<br>&#10004;&#65039; <strong>Better: </strong>&#8220;Processing. No action needed. Expected completion by tomorrow morning.&#8221;</p><p><strong>&#10060; Bad: </strong>&#8220;Pending&#8221;<br>&#10004;&#65039; <strong>Better: </strong>&#8220;Pending legal approval&#8221;</p><p>The better versions do more than report a state. They help the user understand what is happening, who or what owns the next step, and whether they need to do anything right now.</p><p>The other thing better systems do well is make status legible across time instead of only in the moment.</p><p><strong>&#10060; Bad: </strong>&#8220;Saved&#8221; shown only in a disappearing toast<br>&#10004;&#65039; <strong>Better: </strong>&#8220;Changes saved at 2:14 PM&#8221; shown in a stable, visible location</p><p><strong>&#10060; Bad: </strong>a vague status badge with no history<br>&#10004;&#65039; <strong>Better: </strong>a clear status label paired with a timestamp or status history</p><p><strong>&#10060; Bad: </strong>a table update that gives no clue what changed or when<br>&#10004;&#65039; <strong>Better: </strong>a visible update that shows what changed, when it changed, and what happens next</p><p>A user should not get one brief chance to understand what happened and then lose the thread as soon as the screen refreshes, the toast disappears, or the table updates. If the work continues later, the interface should help them come back and quickly figure out where things stand.</p><h1>The Bigger HCI Point</h1><p>What makes this topic interesting to me is that it looks like a small interface issue until you sit with it for a while. On the surface, it can seem like a complaint about wording, spinners, or whether a status badge should be blue or green. But the deeper issue is that enterprise software often fails to help users build an accurate mental model of work that is unfolding across time. That is a much bigger design problem than most teams acknowledge.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ih7R!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd54f4e0-04a9-417a-91f4-4ca9a55c291e_525x451.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ih7R!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd54f4e0-04a9-417a-91f4-4ca9a55c291e_525x451.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ih7R!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd54f4e0-04a9-417a-91f4-4ca9a55c291e_525x451.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ih7R!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd54f4e0-04a9-417a-91f4-4ca9a55c291e_525x451.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ih7R!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd54f4e0-04a9-417a-91f4-4ca9a55c291e_525x451.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ih7R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd54f4e0-04a9-417a-91f4-4ca9a55c291e_525x451.jpeg" width="349" height="299.807619047619" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bd54f4e0-04a9-417a-91f4-4ca9a55c291e_525x451.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:451,&quot;width&quot;:525,&quot;resizeWidth&quot;:349,&quot;bytes&quot;:68055,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/193900717?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd54f4e0-04a9-417a-91f4-4ca9a55c291e_525x451.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ih7R!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd54f4e0-04a9-417a-91f4-4ca9a55c291e_525x451.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ih7R!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd54f4e0-04a9-417a-91f4-4ca9a55c291e_525x451.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ih7R!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd54f4e0-04a9-417a-91f4-4ca9a55c291e_525x451.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ih7R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd54f4e0-04a9-417a-91f4-4ca9a55c291e_525x451.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A lot of UX conversations still treat interaction as something that happens in a neat little burst between the user and the screen. The person clicks, the interface responds, and the experience is more or less contained inside that exchange. That model breaks down pretty quickly in enterprise environments because the work is often distributed. A request can move through systems, rules, queues, reviewers, exception states, and downstream teams long after the user has stopped actively touching the interface. If the design only accounts for the visible moment of interaction, then it leaves the user in the dark during the part of the workflow where understanding matters most.</p><p>That is why I think poor status communication creates so much unnecessary cognitive load. It forces users to simulate the system in their own heads. They have to infer what happened from partial clues, remember how similar cases behaved last time, and guess which delays are normal and which ones signal a problem.</p><div class="pullquote"><p>Some users eventually learn those patterns through repetition, but that does not mean the design is good. It just means the users have been trained to compensate for missing information.</p></div><p>In complex environments, that compensation can start to look like expertise. (This is the <a href="https://www.nngroup.com/articles/complex-apps-users/">power-user fallacy</a>.) But in reality, it is often just an adaptation to a system that never explained itself clearly enough in the first place.</p><p>This is also one of those places where usability and organizational clarity run directly into each other. When software communicates status and state poorly, it does not just confuse an individual user. It makes it harder to tell whether work is moving, waiting, stuck, or owned by someone else. In other words, the interface stops being a useful representation of the process. And that is where I have seen a huge amount of waste happen, all while UX teams are still debating small UI details in the hope that they will fix the core problem. (Spoiler, they won&#8217;t, no matter how good the UI is.)</p><h1><strong>Conclusion</strong></h1><p>To wrap things up, I&#8217;ve noticed for a long time that in complex and enterprise software, a lot of the most important UX work starts after the user takes action. That is the point where people need the system to clearly communicate what is happening, what comes next, and whether the work is moving the way it should.</p><p>Here&#8217;s an idea. Instead of leaving users to compensate, UX teams can design system feedback that does more real work. We can use clearer status labels, make ownership and next steps explicit, show when no action is needed, add timestamps or status history that help users reorient later, and explain what the system is actually waiting on. That kind of status design reduces interpretation work, makes workflows easier to follow across time, and gives users something they can actually trust in the real world. (e.g., basic old-school UX principles.)</p><p>Have you seen this kind of system-status confusion play out in the complex tools your team uses or builds? If you have, comment here or send me a DM. I&#8217;d be interested to hear where you&#8217;ve seen ambiguous system feedback create extra work and workaround behavior. Thanks for the continued support and for reading this week&#8217;s article.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://trevorcalabro.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">UX Research in the Wild is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Honest UX Artifacts]]></title><description><![CDATA[Why Service Blueprints Work]]></description><link>https://trevorcalabro.substack.com/p/honest-ux-artifacts</link><guid isPermaLink="false">https://trevorcalabro.substack.com/p/honest-ux-artifacts</guid><dc:creator><![CDATA[Trevor Calabro]]></dc:creator><pubDate>Fri, 03 Apr 2026 16:17:58 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/85ddb795-2005-4888-a2b5-487a508dd094_694x619.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Summary: </strong>Journey maps are one of the easiest UX artifacts to misuse because they often let teams simulate user understanding without doing the real user research work. Service blueprints, on the other hand, are often the more honest place to start because they document how user flows actually work before teams begin interpreting what users think or feel about them.</p><div><hr></div><p>I&#8217;m in the middle of facilitating a service blueprint creation workshop at work, and it has had me thinking about a pattern I have seen in more than one past role. Does this sound familiar to you? A product has grown large enough that people across the org no longer share the same understanding of how the experience is actually delivered to end users because teams are somewhat siloed. One team understands the interface. Another understands the policy constraints. Another knows the manual steps happening behind the scenes. The Support team may know where users get stuck, while engineering knows which systems are patched together just well enough to keep the whole thing moving. At that point, the org does not just need design ideas. It needs a reliable picture of how the service currently works holistically.</p><p>In several past orgs, I watched that exact need get answered with a journey-mapping exercise. Stakeholders wanted the workshop version of user understanding. They wanted a Post-it wall full of stages, pain points, emotional states, and sticky notes that translated internal beliefs into something that looked user-centered. The result often felt productive in the moment. It gave people something visible to react to and something easy to circulate afterward. What it usually did not give them was a more accurate look into the root causes behind a disjointed user experience.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TC11!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F955bf410-9492-43d8-8a4a-9a8c80acae62_1024x990.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TC11!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F955bf410-9492-43d8-8a4a-9a8c80acae62_1024x990.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TC11!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F955bf410-9492-43d8-8a4a-9a8c80acae62_1024x990.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TC11!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F955bf410-9492-43d8-8a4a-9a8c80acae62_1024x990.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TC11!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F955bf410-9492-43d8-8a4a-9a8c80acae62_1024x990.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TC11!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F955bf410-9492-43d8-8a4a-9a8c80acae62_1024x990.jpeg" width="334" height="322.91015625" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/955bf410-9492-43d8-8a4a-9a8c80acae62_1024x990.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:990,&quot;width&quot;:1024,&quot;resizeWidth&quot;:334,&quot;bytes&quot;:356109,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/193084927?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F955bf410-9492-43d8-8a4a-9a8c80acae62_1024x990.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TC11!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F955bf410-9492-43d8-8a4a-9a8c80acae62_1024x990.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TC11!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F955bf410-9492-43d8-8a4a-9a8c80acae62_1024x990.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TC11!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F955bf410-9492-43d8-8a4a-9a8c80acae62_1024x990.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TC11!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F955bf410-9492-43d8-8a4a-9a8c80acae62_1024x990.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Service blueprints and journey maps are completely different tools, yet they are often conflated in UX circles. <a href="https://www.nngroup.com/articles/service-blueprints-definition/">Nielsen Norman Group has a useful way of defining service blueprints</a>. <em>(<strong>NOTE:</strong> I&#8217;ll be using this definition and framework throughout this article.)</em> They describe them as tools for mapping the relationships between service components, including people, processes, and touchpoints, and note that they are especially useful for cross-functional, multi touchpoint experiences. That is often the kind of understanding enterprise teams are missing. They do not need a workshop that helps everyone imagine what the user is thinking. They need something much more simple and straightforward. They need a way to document what the org is currently doing to create the experience users are having.</p><p>Journey maps can give teams the feeling that they have done that work when they have not. That gap between the feeling of learning and the presence of actual learning is a big part of why I have grown more skeptical of them over time.</p><h1>The Problem</h1><p>This is not a general comparison article about journey maps and service blueprints. (Many, many people have already written that article.) It is also not an article about how to run a better journey-mapping session. (That horse has already been beaten enough as well. hahaha.) I am not trying to rescue any methods or explain the ideal version of how they are supposed to work. Instead, I want to tell the real-world truth about journey maps and service blueprints.</p><p>I want to stay focused on how journey maps are often used in real orgs. In practice, they are frequently done incorrectly, and they are easier to mess up than many UX pros seem comfortable admitting. That becomes even more important in larger enterprise environments, where the system itself is already complicated and where polished internal artifacts can carry more authority than they deserve.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IX_F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F697fcd3c-4160-4414-80c7-2bc72b27fcd4_1348x1013.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IX_F!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F697fcd3c-4160-4414-80c7-2bc72b27fcd4_1348x1013.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IX_F!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F697fcd3c-4160-4414-80c7-2bc72b27fcd4_1348x1013.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IX_F!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F697fcd3c-4160-4414-80c7-2bc72b27fcd4_1348x1013.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IX_F!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F697fcd3c-4160-4414-80c7-2bc72b27fcd4_1348x1013.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IX_F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F697fcd3c-4160-4414-80c7-2bc72b27fcd4_1348x1013.jpeg" width="324" height="243.4807121661721" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/697fcd3c-4160-4414-80c7-2bc72b27fcd4_1348x1013.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1013,&quot;width&quot;:1348,&quot;resizeWidth&quot;:324,&quot;bytes&quot;:250406,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/193084927?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F697fcd3c-4160-4414-80c7-2bc72b27fcd4_1348x1013.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IX_F!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F697fcd3c-4160-4414-80c7-2bc72b27fcd4_1348x1013.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IX_F!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F697fcd3c-4160-4414-80c7-2bc72b27fcd4_1348x1013.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IX_F!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F697fcd3c-4160-4414-80c7-2bc72b27fcd4_1348x1013.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IX_F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F697fcd3c-4160-4414-80c7-2bc72b27fcd4_1348x1013.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Service blueprints do answer a different question. <a href="https://www.nngroup.com/articles/service-blueprinting-faq/">Nielsen Norman Group makes that distinction clearly</a>. Journey maps focus on understanding the end user&#8217;s journey, including actions, thoughts, and emotions, while service blueprints document how the org creates that experience through frontstage actions, backstage actions, and support processes. I agree with that distinction. I also think it helps explain why service blueprints are often the more useful strategic move in practice.</p><p>In my experience, orgs are not facing a shortage of made-up user emotions, but they are facing a shortage of shared operational understanding. Most orgs need to know who is doing what, where the process breaks down, which teams influence the experience, and where additional research is actually needed. A service blueprint gives them a more grounded way to start that work.</p><p>That is the argument I want to make in this week&#8217;s post. Journey maps are often easier to misuse. Service blueprints are more objective in nature. In large orgs with complicated products and layered service models, that difference starts to matter very quickly.</p><h1>Stop Weaponizing Journey Maps</h1><p>Journey maps are one of the easiest UX artifacts to turn into &#8220;UX Theater&#8221; because they let teams simulate user-centeredness without doing the real work of learning from actual users. And of course, the design thinking workshop format helps create that problem. A group gets together, starts filling in what they think users think and feel, and before long, the output begins to look like insight, whether or not insight is actually present. This is the standard critique that I&#8217;m sure most of you have heard many times.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Msp5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe779b331-ffb2-4021-9aab-345f3f46494c_1024x920.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Msp5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe779b331-ffb2-4021-9aab-345f3f46494c_1024x920.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Msp5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe779b331-ffb2-4021-9aab-345f3f46494c_1024x920.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Msp5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe779b331-ffb2-4021-9aab-345f3f46494c_1024x920.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Msp5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe779b331-ffb2-4021-9aab-345f3f46494c_1024x920.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Msp5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe779b331-ffb2-4021-9aab-345f3f46494c_1024x920.jpeg" width="345" height="309.9609375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e779b331-ffb2-4021-9aab-345f3f46494c_1024x920.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:920,&quot;width&quot;:1024,&quot;resizeWidth&quot;:345,&quot;bytes&quot;:271201,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/193084927?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe779b331-ffb2-4021-9aab-345f3f46494c_1024x920.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Msp5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe779b331-ffb2-4021-9aab-345f3f46494c_1024x920.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Msp5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe779b331-ffb2-4021-9aab-345f3f46494c_1024x920.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Msp5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe779b331-ffb2-4021-9aab-345f3f46494c_1024x920.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Msp5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe779b331-ffb2-4021-9aab-345f3f46494c_1024x920.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>That visual credibility carries a lot of weight inside orgs. A journey map tends to look substantial. It is detailed, well-structured, and full of language that sounds user-centered. Once it is on the wall or turned into a polished deliverable, people can start treating it like research simply because it resembles the kinds of artifacts research teams produce. The format does a lot of persuasive work on its own.</p><p>The first reason this happens is that journey maps invite workshop participants to make up how they think the typical user behaves without actual user data. Once a workshop starts assigning motivations, frustrations, and expectations to users who were never studied, the group is no longer synthesizing evidence. It turns into a baseless projection exercise filled with bias.</p><div class="pullquote"><p>Even when the workshop participants are knowledgeable, close to the product, and genuinely care about the user, internal familiarity is <strong>still not user evidence</strong>, no matter how hard people try to make it seem that way.</p></div><p>A second problem is that the artifact creates confidence too easily. Stakeholders leave the session feeling aligned. Teams feel like progress was made. Leadership sees something concrete that appears to capture the user experience. Those reactions are understandable, but they are not proof that the artifact is accurate. A workshop can create momentum and still produce a distorted view of reality.</p><p>Journey maps also tend to mix different categories of information together until the boundaries disappear. A real process fact can sit next to a stakeholder&#8217;s guess. A present-state observation can sit next to a future-state aspiration. An imagined user pain point can get written in the same format as a finding that actually came from research. Once all of that is arranged into a single visual system, the weaker claims borrow credibility from the stronger ones.</p><p>This becomes more dangerous in enterprise settings because the experience is shaped by a lot of things that do not fit neatly into a simplified user story. Internal policies shape what can happen. Support workflows affect resolution time. Permissions, exceptions, legacy systems, and manual workarounds all influence what the user experiences. When a team tries to compress that kind of environment into a neat narrative about what the user is thinking or feeling, the result can be very misleading while still sounding strategic.</p><p>That is why I use the word weaponized. I do not mean that every journey map is made in bad faith. I mean that the artifact can be used to create the appearance of user understanding, reassure stakeholders that the team is being user-centered, and move decisions forward without doing the harder work of gathering real evidence. At that point, the journey map is no longer functioning as a research artifact. It is functioning as a persuasion artifact.</p><h1>Service Blueprints Are Honest</h1><p>The distinction between service blueprints and journey maps matters a lot because the organizational side of the experience is usually where the end user confusion is derived from.</p><div class="pullquote"><p>The aesthetics of the interface might look simple enough on the surface, but the actual experience is being shaped by siloed team handoffs.</p></div><p>A service blueprint gives you a way to document those handoff thresholds without pretending to know more than you know about the user.</p><p><a href="https://www.nngroup.com/articles/service-blueprints-definition/">Nielsen Norman Group also points out that service blueprints are especially useful for experiences that are omnichannel</a>, involve multiple touchpoints, or require cross-functional coordination. That description fits a huge amount of enterprise work. It also helps explain why service blueprints tend to hold up better in those environments. They are built to make organizational complexity visible.</p><p>That does not make service blueprints perfect. They can still be incomplete and executed in a sloppy way. But, they often <em><strong>still </strong></em>unearth organizational blind spots even if the wrong people are in the room or the wrong inputs are used. And unlike journey mapping, what they are less likely to do is drift into fake empathy-land. The fundamental structure of service blueprints keeps the team closer to observable reality. They ask what happens, who does it, what supports it, and where things break down. That is a much safer place to start than a workshop built around simulated user feelings.</p><p>This is why I keep coming back to the idea that service blueprints are often the more honest strategic move. They do not claim to give you a deep understanding of the user. They just thoroughly document how the end-to-end service actually works in the real world. In a lot of orgs, that is the thing people need before they are ready to make bigger claims about the user experience.</p><h1>Document Then Interpret</h1><p>A lot of teams skip past the documentation step. They start interpreting the experience before they have documented the service that creates it. That mixed-up order of operation causes problems because user experiences do not emerge out of thin air.</p><p><strong>They are shaped by how the org operates in very specific ways, including things like:</strong></p><ul><li><p>users getting inconsistent information from different teams or channels</p></li><li><p>processes feeling disjointed because work moves from one department to another without a clean transition</p></li><li><p>tasks taking longer than they should because approvals, reviews, or manual steps slow them down</p></li><li><p>duplicated work happening across teams</p></li><li><p>unclear ownership over who is responsible for fixing a problem</p></li><li><p>workarounds people rely on because the official process does not work well</p></li><li><p>approval flows that add friction or delay</p></li><li><p>support processes that never show up in a simplified user story</p></li></ul><p>Service blueprints are useful because they force teams to look at those underlying structures directly. <a href="https://www.nngroup.com/articles/service-blueprinting-faq/">Nielsen Norman Group describes blueprinting</a> as a way to discover weaknesses, eliminate redundancy, and coordinate future changes by helping orgs visualize who is doing what and when. That is often the work that needs to happen first. Before a team starts speculating about emotion, it needs to understand the machinery behind the experience.</p><p>That is also why service blueprints tend to be more productive, especially in enterprise environments. They give teams a shared picture of the service as it currently operates. They show where departments intersect, where internal work supports user-facing work, and where breakdowns are happening across the system.</p><div class="pullquote"><p><a href="https://www.nngroup.com/articles/service-blueprinting-practice/">Nielsen Norman Group&#8217;s service-blueprinting research</a> found that practitioners often use blueprints as a shared source of truth across departments, helping teams build common understanding and better project planning.</p></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4xk7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a08693-58d3-45f2-9cd1-b8b31433b809_735x68.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4xk7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a08693-58d3-45f2-9cd1-b8b31433b809_735x68.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4xk7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a08693-58d3-45f2-9cd1-b8b31433b809_735x68.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4xk7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a08693-58d3-45f2-9cd1-b8b31433b809_735x68.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4xk7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a08693-58d3-45f2-9cd1-b8b31433b809_735x68.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4xk7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a08693-58d3-45f2-9cd1-b8b31433b809_735x68.jpeg" width="440" height="40.70748299319728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/07a08693-58d3-45f2-9cd1-b8b31433b809_735x68.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:68,&quot;width&quot;:735,&quot;resizeWidth&quot;:440,&quot;bytes&quot;:44387,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/193084927?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a08693-58d3-45f2-9cd1-b8b31433b809_735x68.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4xk7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a08693-58d3-45f2-9cd1-b8b31433b809_735x68.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4xk7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a08693-58d3-45f2-9cd1-b8b31433b809_735x68.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4xk7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a08693-58d3-45f2-9cd1-b8b31433b809_735x68.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4xk7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a08693-58d3-45f2-9cd1-b8b31433b809_735x68.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>That kind of clarity is a big deal. A lot of enterprise problems survive because each team understands only its own slice of the work. The blueprint does not magically solve that, but it gives people a more grounded way to talk about it. It puts the service itself on the table instead of letting the conversation drift into assumptions about the user.</p><p>I think that is one reason service blueprints feel less theatrical to me. They are still workshops. They still involve collaboration. They still depend on facilitation. The difference is that the output is tied more directly to what the org is actually doing. That makes the conversation more disciplined. It also makes the next steps more useful.</p><div class="pullquote"><p>Ultimately, service blueprints create a more honest sequence for teams that are trying to improve complex experiences. First, document how the service currently works. Then identify where the breakdowns are, where the org lacks clarity, and where user research should go deeper.</p></div><p>That is a much cleaner process than gathering stakeholders in a room and asking them to fill in what they imagine users are thinking.</p><p>It also respects the limits of the artifact. A service blueprint does not need to overclaim in order to be useful. It can simply show what is happening, where support structures are helping or failing, and where more evidence is needed. That kind of restraint is valuable. In my experience, teams make better decisions when the artifact in front of them is honest about what it knows and honest about what it does not.</p><h1>Alignment Is Not Evidence</h1><p>One of the reasons journey maps keep surviving in this form is that they do produce something people genuinely want. They can create stakeholder alignment, a shared language, and make it easier for a room full of people to discuss the same flow together. I understand the appeal. I understand why teams walk out of those sessions feeling like useful work got done.</p><div class="pullquote"><p>The problem is that alignment and evidence are not the same thing, and many times the artifacts produced after a journey-mapping workshop are treated as user data. Rule of thumb: if there are no users in the room, it ain&#8217;t user-centered.</p></div><p>I think this is where a lot of UX pros get themselves into trouble. They confuse the visible outputs of a workshop with the quality of the knowledge behind it. Don&#8217;t get me wrong, a well-facilitated session, a collaborative artifact, and a room full of engaged stakeholders can be useful. Journey mapping workshops are useful as organizational internal alignment tools, but they are not useful for better understanding real users.</p><p>That distinction is worth holding onto because it protects the discipline from drifting into performance. If the artifact makes claims about users, those claims should be grounded in user evidence. If the artifact is documenting how the org works, it should be grounded in operational evidence.</p><p>This is also why I have less patience now for the softer defenses of these workshops. People will sometimes say that the point is not accuracy. The point is conversation. Or alignment. Or ideation. I understand what they mean, but that defense falls apart pretty quickly once the artifact starts getting circulated as if it says something true about the user experience.</p><p>In real orgs, these things rarely stay contained as innocent workshop exercises. They become reference points that influence priorities. They shape how leaders talk about user problems and become part of the decision-making environment, whether they deserve that role or not. A service blueprint is not immune to misuse, but it is less likely to create that same kind of false legitimacy as a journey map because it is anchored in a narrower and more honest claim.</p><p>It is trying to accurately document how the service works. That is a much more defensible job for a collaborative workshop artifact. It stays closer to what a room of stakeholders can actually know, especially when the right people are involved.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7hsY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777251bc-1296-4c21-b756-5d98e8ba0da5_2414x1201.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7hsY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777251bc-1296-4c21-b756-5d98e8ba0da5_2414x1201.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7hsY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777251bc-1296-4c21-b756-5d98e8ba0da5_2414x1201.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7hsY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777251bc-1296-4c21-b756-5d98e8ba0da5_2414x1201.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7hsY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777251bc-1296-4c21-b756-5d98e8ba0da5_2414x1201.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7hsY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777251bc-1296-4c21-b756-5d98e8ba0da5_2414x1201.jpeg" width="1456" height="724" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/777251bc-1296-4c21-b756-5d98e8ba0da5_2414x1201.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:724,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:186900,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/193084927?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777251bc-1296-4c21-b756-5d98e8ba0da5_2414x1201.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7hsY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777251bc-1296-4c21-b756-5d98e8ba0da5_2414x1201.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7hsY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777251bc-1296-4c21-b756-5d98e8ba0da5_2414x1201.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7hsY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777251bc-1296-4c21-b756-5d98e8ba0da5_2414x1201.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7hsY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F777251bc-1296-4c21-b756-5d98e8ba0da5_2414x1201.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="pullquote"><p>I think the distinction between performative UX artifacts and artifacts that more honestly document reality matters for the future of UX work in general. Our value does not come from making polished artifacts that feel strategic. It comes from improving the quality of understanding inside orgs.</p></div><p>Sometimes that means doing direct user research. Sometimes that means documenting the service well enough to know where direct user research is needed next. Both are legitimate. Pretending to know what users think because a workshop produced a good-looking map is not.</p><h1>Conclusion</h1><p>The confusion between service blueprints and journey maps has been around for a long time, and I do not think it is going away anytime soon. Journey maps look strategic. They look user-centered. They give people something visible to point at. They give teams a fast way to feel aligned. All of that makes them easy to overvalue, especially in environments where the underlying service is complicated and no one fully understands how all the pieces fit together. That is exactly why I trust them less.</p><p>Service blueprints are not doing the same job, and I am not claiming they should replace every other artifact in UX. I am saying something much simpler. In a lot of enterprise settings, they are the more honest place to start. They stay closer to observable reality. They make operational complexity visible. They help teams document what is actually happening before they start making bigger claims about what users think or feel.</p><p>If a team wants to understand user journeys, it should study its own systems first.</p><p>Have you used service blueprints to bring more clarity to a messy product, service, or internal workflow? If so, comment here or DM me. I&#8217;d love to hear where you&#8217;ve seen service blueprints help teams build shared understanding, uncover operational gaps, or make smarter decisions in complex environments. Thanks for reading!</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://trevorcalabro.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">UX Research in the Wild is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Missing Brick]]></title><description><![CDATA[Unintentional User Delight]]></description><link>https://trevorcalabro.substack.com/p/missing-brick</link><guid isPermaLink="false">https://trevorcalabro.substack.com/p/missing-brick</guid><dc:creator><![CDATA[Trevor Calabro]]></dc:creator><pubDate>Sat, 28 Mar 2026 20:47:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!NOSQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd04a294c-f03a-426c-b1e6-0bb0d62bddc0_1947x1211.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><br>This week, we go silly. Thanks for reading the blog each week. I have 2 larger posts coming soon, so stay tuned.</p><p>In the meantime, I found a missing brick in this wall...</p><h1>Boom, UX!</h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NOSQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd04a294c-f03a-426c-b1e6-0bb0d62bddc0_1947x1211.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NOSQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd04a294c-f03a-426c-b1e6-0bb0d62bddc0_1947x1211.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NOSQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd04a294c-f03a-426c-b1e6-0bb0d62bddc0_1947x1211.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NOSQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd04a294c-f03a-426c-b1e6-0bb0d62bddc0_1947x1211.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NOSQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd04a294c-f03a-426c-b1e6-0bb0d62bddc0_1947x1211.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NOSQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd04a294c-f03a-426c-b1e6-0bb0d62bddc0_1947x1211.jpeg" width="1456" height="906" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d04a294c-f03a-426c-b1e6-0bb0d62bddc0_1947x1211.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:906,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2202524,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/192454905?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd04a294c-f03a-426c-b1e6-0bb0d62bddc0_1947x1211.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NOSQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd04a294c-f03a-426c-b1e6-0bb0d62bddc0_1947x1211.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NOSQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd04a294c-f03a-426c-b1e6-0bb0d62bddc0_1947x1211.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NOSQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd04a294c-f03a-426c-b1e6-0bb0d62bddc0_1947x1211.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NOSQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd04a294c-f03a-426c-b1e6-0bb0d62bddc0_1947x1211.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!i4-2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c6620b-f096-44f2-bbf5-8652eb188dc8_1713x1316.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!i4-2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c6620b-f096-44f2-bbf5-8652eb188dc8_1713x1316.jpeg 424w, https://substackcdn.com/image/fetch/$s_!i4-2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c6620b-f096-44f2-bbf5-8652eb188dc8_1713x1316.jpeg 848w, https://substackcdn.com/image/fetch/$s_!i4-2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c6620b-f096-44f2-bbf5-8652eb188dc8_1713x1316.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!i4-2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c6620b-f096-44f2-bbf5-8652eb188dc8_1713x1316.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!i4-2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c6620b-f096-44f2-bbf5-8652eb188dc8_1713x1316.jpeg" width="335" height="257.46222527472526" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/18c6620b-f096-44f2-bbf5-8652eb188dc8_1713x1316.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1119,&quot;width&quot;:1456,&quot;resizeWidth&quot;:335,&quot;bytes&quot;:162395,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/192454905?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c6620b-f096-44f2-bbf5-8652eb188dc8_1713x1316.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!i4-2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c6620b-f096-44f2-bbf5-8652eb188dc8_1713x1316.jpeg 424w, https://substackcdn.com/image/fetch/$s_!i4-2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c6620b-f096-44f2-bbf5-8652eb188dc8_1713x1316.jpeg 848w, https://substackcdn.com/image/fetch/$s_!i4-2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c6620b-f096-44f2-bbf5-8652eb188dc8_1713x1316.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!i4-2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c6620b-f096-44f2-bbf5-8652eb188dc8_1713x1316.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://trevorcalabro.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">UX Research in the Wild is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Most ResearchOps Problems Start with Hand-Offs]]></title><description><![CDATA[A Framework for Strategic Ops Audits]]></description><link>https://trevorcalabro.substack.com/p/most-researchops-problems-start-with</link><guid isPermaLink="false">https://trevorcalabro.substack.com/p/most-researchops-problems-start-with</guid><dc:creator><![CDATA[Trevor Calabro]]></dc:creator><pubDate>Sat, 21 Mar 2026 18:43:31 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/1303755f-47f1-4b24-888e-4f69c8914aec_694x619.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Summary: </strong>UX research rarely falls apart because the team lacks methods or talent. It falls apart in the hand-offs, where participant data, scheduling, evidence, synthesis, and storytelling get separated from one another and turn good research into fragmented busywork instead of a connected study.</p><div><hr></div><p>A while back, I was watching a researcher try to get a pretty normal study out the door. Nothing fancy. A handful of participants, a few stakeholder observers, some straightforward user interviews, and a plan to turn the findings around quickly.</p><p>This researcher pulled participant information from one system, cleaned it in Excel, scheduled sessions through a third-party tool, hosted the calls in a different platform, tracked incentives in a spreadsheet, downloaded recordings manually, used an LLM to create transcripts, and then started trying to stitch everything back together for analysis. By the time this person got to synthesis, the study already felt fragmented. Not because the research was bad, but because the workflow around it introduced a lot of noise. Sound familiar to anyone else?</p><p>That&#8217;s when I started thinking that a lot of research pain is not caused by a lack of methods, talent, or rigor. It comes from broken hand-offs between steps within a process.</p><h1>The Problem</h1><p>When I tell others this story, many peeps start solutionizing in their heads, and it is usually about how to reduce the number of tools used in the process. My hot take is that I <em>don&#8217;t </em>think most UXR teams are suffering because they use too many tools in some abstract sense. In practice, most orgs are always going to have some sort of tech stack. Their email, calendar, and meeting systems have been chosen for them. General customer data probably lives in some CRM that the research team does not control. The problem is not that the workflow spans multiple systems. The problem is that the systems do not behave like a single workflow. It&#8217;s the hand-offs between systems that&#8217;s the real problem.</p><p>Any well-designed user research process needs to work across several tools and still feel coherent in the transitions. But when every transition creates more admin work, more duplication, or more opportunities for something to break, the researcher ends up doing tool-to-tool busywork instead of research.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ylrg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb0e986b-db77-49e0-9f50-072280141ccd_687x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ylrg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb0e986b-db77-49e0-9f50-072280141ccd_687x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ylrg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb0e986b-db77-49e0-9f50-072280141ccd_687x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ylrg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb0e986b-db77-49e0-9f50-072280141ccd_687x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ylrg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb0e986b-db77-49e0-9f50-072280141ccd_687x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ylrg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb0e986b-db77-49e0-9f50-072280141ccd_687x512.jpeg" width="345" height="257.117903930131" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cb0e986b-db77-49e0-9f50-072280141ccd_687x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:687,&quot;resizeWidth&quot;:345,&quot;bytes&quot;:79748,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/191696499?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb0e986b-db77-49e0-9f50-072280141ccd_687x512.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ylrg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb0e986b-db77-49e0-9f50-072280141ccd_687x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ylrg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb0e986b-db77-49e0-9f50-072280141ccd_687x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ylrg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb0e986b-db77-49e0-9f50-072280141ccd_687x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ylrg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb0e986b-db77-49e0-9f50-072280141ccd_687x512.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1>Recruitment &amp; Outreach</h1><p>Recruitment is usually where the cracks in a research process tend to show first. Participant data often lives in CRMs, customer databases, spreadsheets, support systems, or a mix of all of them. That part is normal. What is not normal is how much manual effort researchers are often expected to spend just getting that information into usable shape. Exporting files, cleaning fields, checking for duplicates, verifying preferences, re-uploading lists, and trying not to mishandle sensitive information should not be the hidden cost of running a study.</p><p>This feels more like admin work wrapped around research than valuable research work in and of itself. With a more strategic process, participant data can come from where it already lives, stay reasonably up to date, and be managed without someone rebuilding the pool every time a new study starts.</p><div class="pullquote"><p>A more strategic ResearchOps process saves time, but more importantly, it also reduces the chances of using outdated information or making preventable mistakes with participant records.</p></div><p>And of course, the same thing shows up in outreach. Participants are much more likely to trust and respond to an invitation when it feels legitimate and connected to a real person. We all know that instinctively because we have all ignored emails that looked vague, generic, or slightly off. Yet research teams still end up using awkward workarounds to make outreach happen, especially when the recruitment system and the communication system do not play nicely together. That creates unnecessary friction on both sides. The participant gets less trustworthy communications, and the researcher gets more coordination work. Neither of those helps the study.</p><p>And in a world in which users are less likely to engage than ever, even small signs of friction or illegitimacy in the outreach process can lower response rates before the research even has a chance to start.</p><h1>Scheduling &amp; Incentives</h1><p>Another administrative task that eats away at our time is scheduling research. Real research scheduling is rarely as simple as finding an open hour on a calendar.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!K4gP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b175ad-c4a8-4d9a-93a4-0124fb74c456_687x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!K4gP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b175ad-c4a8-4d9a-93a4-0124fb74c456_687x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!K4gP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b175ad-c4a8-4d9a-93a4-0124fb74c456_687x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!K4gP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b175ad-c4a8-4d9a-93a4-0124fb74c456_687x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!K4gP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b175ad-c4a8-4d9a-93a4-0124fb74c456_687x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!K4gP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b175ad-c4a8-4d9a-93a4-0124fb74c456_687x512.jpeg" width="403" height="300.34352256186315" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/34b175ad-c4a8-4d9a-93a4-0124fb74c456_687x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:687,&quot;resizeWidth&quot;:403,&quot;bytes&quot;:121202,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/191696499?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b175ad-c4a8-4d9a-93a4-0124fb74c456_687x512.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!K4gP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b175ad-c4a8-4d9a-93a4-0124fb74c456_687x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!K4gP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b175ad-c4a8-4d9a-93a4-0124fb74c456_687x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!K4gP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b175ad-c4a8-4d9a-93a4-0124fb74c456_687x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!K4gP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b175ad-c4a8-4d9a-93a4-0124fb74c456_687x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In my experience, you&#8217;ll likely be juggling these types of constraints:</p><ul><li><p>coordinating a participant, a moderator, a note taker, and multiple observers at the same time</p></li><li><p>limiting how many sessions can happen in a single day</p></li><li><p>building in buffers between interviews so moderators can reset</p></li><li><p>setting notice periods so nobody wakes up to a surprise session the next morning</p></li><li><p>protecting stakeholders from booking themselves into parts of the process they should only observe</p></li></ul><p>These things aren&#8217;t rare edge cases. This is what real research operations look like. When teams try to force research scheduling into generic workflows that were not built for those realities, they end up compensating with manual effort. That manual effort may look small in isolation, but across multiple studies it adds up fast.</p><p>This is the same with incentives. Incentives are one of those things that sound simple until you are the person managing them. Then suddenly you are checking attendance, verifying completion, making sure the right person gets the right amount, tracking who has already been sent something, and following up on exceptions. None of it is intellectually difficult, but all of it takes attention, and it creates yet another opportunity for error in a workflow that already has too many of them.</p><p>That matters because research quality is not only about how well you ask questions or how carefully you synthesize patterns. It is also about whether the operational side is stable enough that the researcher can stay focused on the study itself. Every extra tracking step pulls attention away from the work that actually requires judgment.</p><h1>Method Flexibility</h1><p>Most mature research teams use a mix of methods. In my opinion, that&#8217;s how it should be. Interviews, surveys, usability tests, diary studies, card sorts, and other methods all serve different purposes. The issue is not whether a team uses multiple methods. The issue is whether switching methods breaks the continuity of the study, and that is the part I see even experienced UXR&#8217;s miss.</p><p>Can the researcher keep the participant details, invites, reminders, session logistics, observers, recordings, and follow-up connected as they move between approaches? Or does every method change force the team to rebuild the operational side from scratch?</p><p>I&#8217;ve seen a lot of teams quietly accept that rebuilding is normal. In my experience, that is one of the clearest signals that the workflow is not serving the research.</p><h1>Chains of Evidence Have Momentum</h1><p>Recording and transcription are other places where this shows up in very obvious ways. A surprising number of teams still move evidence through a chain of disconnected steps. Record here. Download there. Upload somewhere else. Wait for a transcript. Move it again. Tag it later. Clip the useful moments once enough time has passed that half the context is already fading. Technically, that works, but in practice, it slows synthesis down and creates distance between the researcher and the evidence.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Em2s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eda43bc-da97-4d11-86c0-8ee832b1d1cb_1173x715.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Em2s!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eda43bc-da97-4d11-86c0-8ee832b1d1cb_1173x715.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Em2s!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eda43bc-da97-4d11-86c0-8ee832b1d1cb_1173x715.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Em2s!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eda43bc-da97-4d11-86c0-8ee832b1d1cb_1173x715.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Em2s!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eda43bc-da97-4d11-86c0-8ee832b1d1cb_1173x715.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Em2s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eda43bc-da97-4d11-86c0-8ee832b1d1cb_1173x715.jpeg" width="334" height="203.58908780903667" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6eda43bc-da97-4d11-86c0-8ee832b1d1cb_1173x715.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1173,&quot;resizeWidth&quot;:334,&quot;bytes&quot;:221741,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/191696499?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eda43bc-da97-4d11-86c0-8ee832b1d1cb_1173x715.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Em2s!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eda43bc-da97-4d11-86c0-8ee832b1d1cb_1173x715.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Em2s!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eda43bc-da97-4d11-86c0-8ee832b1d1cb_1173x715.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Em2s!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eda43bc-da97-4d11-86c0-8ee832b1d1cb_1173x715.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Em2s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eda43bc-da97-4d11-86c0-8ee832b1d1cb_1173x715.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>When notes, recordings, transcripts, highlights, and clips stay connected, the study remains alive while it is happening. Researchers can start noticing patterns earlier. They can pull supporting moments while the interviews are still fresh. They can move more naturally from observation to synthesis without having to perform three rounds of file management first.</p><p>That continuity matters because momentum matters. And this is the thing we researchers bring to the table. The ability to hold all of this user-centered context in our heads as we learn is what will be the key differentiator for our discipline moving forward.</p><div class="pullquote"><p>We all know that tech executives are looking to reduce headcount and replace many menial tasks with AI solutions. UX researchers are the human in the loop when it comes to orgs learning about users.</p></div><p>If we concentrate on making these hand-off points a way to carry human context through our development processes, we will have the ultimate level of job security.</p><h1>A Study is not A Single Deliverable</h1><p>This is the part I care about most and the main point of this week&#8217;s article. Too many UXers still act like the final report or readout <em>is</em> the study. Have you ever heard a team, after they get a polished presentation, say, &#8220;Great job, and the work effectively ends there? I know I have, and that has never made much sense to me.</p><p>A single study usually creates several layers of material, and those layers serve different purposes:</p><ul><li><p>the source data</p></li><li><p>the notes and transcripts</p></li><li><p>the tagged moments that start to show patterns</p></li><li><p>the individual clips that make a point visible</p></li><li><p>the highlight reel that helps tell the story quickly</p></li><li><p>the deeper report for people who need the full thinking</p></li><li><p>the presentation deck for stakeholders who need the version that travels well</p></li></ul><p>These are different ways of communicating findings from the same study, because we all know that more than half of our job is telling stories with data.</p><p>Different stakeholders need different kinds of evidence. Sometimes the raw data tells the story best. Other times, it is the synthesis wrapped in context. And some stakeholders do not really understand the issue until they see a short clip of a participant struggling through the workflow in real time. This is where strategic communication matters most. Good research communication is not about forcing every finding into one format. It is about preserving the connection between these layers so the study can do more than one job.</p><p>When those layers get separated from each other, the evidence weakens and the report becomes less reusable. Those powerful clips lose important context, and your readout deck becomes a snapshot in time that feels dated almost immediately after you deliver it. Then the final nail in the coffin is that the raw data disappears into storage, and the team moves on.</p><p>But when those layers stay connected, the opposite happens. Research becomes easier to revisit, easier to share, easier to adapt for different audiences, and much more likely to remain useful after the first presentation is over. This is the big idea. The hand-offs are the critical ops moment for strategic UXR workflows.</p><h1>What Good Looks Like</h1><p>Okay, so that was the bad news. Most research departments are not struggling because they lack methods, smart researchers, or one more feature in a tool. They are struggling because the process keeps breaking between steps.</p><div class="pullquote"><p>I think a lot of UXR teams get distracted by platform feature lists and software sales pages. They start comparing transcription, templates, repositories, incentives, dashboards, and all the other stuff vendors like to compare on a chart on a landing page filled with marketing speak.</p></div><p>Some of those features do matter a lot, but they are not the real standard we should be focusing on. The real standard is much simpler and much more important: does the workflow actually hold together in practice?</p><p>A good ResearchOps system is about connecting the building blocks that make up a cradle-to-grave research study. It keeps recruitment connected to outreach. It keeps outreach connected to scheduling. It keeps scheduling connected to sessions. It keeps sessions connected to evidence. It keeps evidence connected to synthesis. And it keeps synthesis connected to all the different outputs a study may need, instead of letting the work collapse into one static artifact that dies in a folder.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!p3Jy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2257e5b-dae9-4721-927e-508f21f1c616_1056x602.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!p3Jy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2257e5b-dae9-4721-927e-508f21f1c616_1056x602.jpeg 424w, https://substackcdn.com/image/fetch/$s_!p3Jy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2257e5b-dae9-4721-927e-508f21f1c616_1056x602.jpeg 848w, https://substackcdn.com/image/fetch/$s_!p3Jy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2257e5b-dae9-4721-927e-508f21f1c616_1056x602.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!p3Jy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2257e5b-dae9-4721-927e-508f21f1c616_1056x602.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!p3Jy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2257e5b-dae9-4721-927e-508f21f1c616_1056x602.jpeg" width="438" height="249.6931818181818" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e2257e5b-dae9-4721-927e-508f21f1c616_1056x602.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:602,&quot;width&quot;:1056,&quot;resizeWidth&quot;:438,&quot;bytes&quot;:70459,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/191696499?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2257e5b-dae9-4721-927e-508f21f1c616_1056x602.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!p3Jy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2257e5b-dae9-4721-927e-508f21f1c616_1056x602.jpeg 424w, https://substackcdn.com/image/fetch/$s_!p3Jy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2257e5b-dae9-4721-927e-508f21f1c616_1056x602.jpeg 848w, https://substackcdn.com/image/fetch/$s_!p3Jy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2257e5b-dae9-4721-927e-508f21f1c616_1056x602.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!p3Jy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2257e5b-dae9-4721-927e-508f21f1c616_1056x602.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>That is why I do not think researchers need more software; we just need less process fragmentation and a workflow that keeps the study connected from start to finish. This means everything from the raw data to the synthesized insight to the final stakeholder story. If those things stay tied together, you will inevitably reduce the administrative and cognitive drag, compromising your researchers.</p><p>When research turns into a chain of broken hand-offs, teams start losing the things that make the work useful in the first place: clarity, momentum, and time that should have been spent understanding users and helping the org make better decisions. From what I see in the real world, that is often what separates research that gets reused and remembered from research that gets presented once and then fades out over time.</p><h1>Checklist: How to Fix Broken Hand-Offs</h1><p>If you want to improve a research process in the real world, do not start by shopping for a new platform. Start by tracing where the study breaks.</p><p>The easiest way to do that is to follow one recent project from beginning to end and look for the moments where the researcher had to stop doing research and start managing the process instead. That is usually where the hand-off problem lives.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JQt1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18a128b-56d8-430e-9921-be73a6c0844b_687x602.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JQt1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18a128b-56d8-430e-9921-be73a6c0844b_687x602.jpeg 424w, https://substackcdn.com/image/fetch/$s_!JQt1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18a128b-56d8-430e-9921-be73a6c0844b_687x602.jpeg 848w, https://substackcdn.com/image/fetch/$s_!JQt1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18a128b-56d8-430e-9921-be73a6c0844b_687x602.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!JQt1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18a128b-56d8-430e-9921-be73a6c0844b_687x602.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JQt1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18a128b-56d8-430e-9921-be73a6c0844b_687x602.jpeg" width="329" height="288.2940320232897" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c18a128b-56d8-430e-9921-be73a6c0844b_687x602.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:602,&quot;width&quot;:687,&quot;resizeWidth&quot;:329,&quot;bytes&quot;:97944,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/191696499?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18a128b-56d8-430e-9921-be73a6c0844b_687x602.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JQt1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18a128b-56d8-430e-9921-be73a6c0844b_687x602.jpeg 424w, https://substackcdn.com/image/fetch/$s_!JQt1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18a128b-56d8-430e-9921-be73a6c0844b_687x602.jpeg 848w, https://substackcdn.com/image/fetch/$s_!JQt1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18a128b-56d8-430e-9921-be73a6c0844b_687x602.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!JQt1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18a128b-56d8-430e-9921-be73a6c0844b_687x602.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Here is the checklist I would use:</h3><ul><li><p><strong>Map the full study lifecycle</strong></p><ul><li><p>Write out every step from recruitment to final readout.</p></li><li><p>Include where participant data comes from, how outreach happens, how sessions get scheduled, where recordings live, how transcripts get created, how incentives get tracked, and where findings get turned into deliverables.</p></li><li><p>If the team cannot map the process clearly, that is already a sign the workflow is too fragmented.</p></li></ul></li><li><p><strong>Mark every point where information has to move</strong></p><ul><li><p>Highlight every export, upload, copy-paste, spreadsheet update, file rename, manual reminder, and hand-entered status check.</p></li><li><p>These moments may look small, but they are often where time gets wasted and errors get introduced.</p></li></ul></li><li><p><strong>Look for duplicate effort</strong></p><ul><li><p>Ask where the same information gets recreated in multiple places.</p></li><li><p>Common examples are participant status, calendar details, attendance tracking, incentive logs, transcript files, and study metadata.</p></li><li><p>If the same fact has to be updated in two or three places, the process is fragile.</p></li></ul></li><li><p><strong>Notice where the researcher has to rely on memory</strong></p><ul><li><p>If the workflow depends on someone remembering who got paid, which participant rescheduled, where the latest transcript lives, or which clip matches which finding, the process is carrying too much invisible risk.</p></li><li><p>Good systems do not require researchers to hold the workflow together in their heads.</p></li></ul></li><li><p><strong>Find the steps that slow down momentum</strong></p><ul><li><p>Ask where the study loses energy.</p></li><li><p>Does it stall between interview and transcript?</p></li><li><p>Does synthesis get delayed because files need to be cleaned up first?</p></li><li><p>Does reporting take longer because the clips, notes, and evidence are no longer connected?</p></li><li><p>Wherever momentum drops, the hand-off probably needs work.</p></li></ul></li><li><p><strong>Separate high-judgment work from low-value admin</strong></p><ul><li><p>Be honest about which steps actually require research skills and which ones are just operational maintenance.</p></li><li><p>Moderating an interview requires judgment.</p></li><li><p>Deciding what evidence supports a finding requires judgment.</p></li><li><p>Re-entering attendance into a tracking sheet does not.</p></li><li><p>Broken hand-offs usually show up where too much researcher time is being spent on low-value coordination work.</p></li></ul></li><li><p><strong>Check whether each output stays connected to the evidence</strong></p><ul><li><p>Look at the final deliverables and ask whether they still point back to the source material.</p></li><li><p>Can someone move from the deck to the clip, from the clip to the transcript, and from the transcript to the original study context?</p></li><li><p>If not, the study is already starting to decay the moment it gets shared.</p></li></ul></li><li><p><strong>Fix the highest-friction hand-off first</strong></p><ul><li><p>Do not try to redesign the whole process at once.</p></li><li><p>Pick the one transition that causes the most wasted time, confusion, or risk.</p></li><li><p>In some teams, the recruitment will be for outreach.</p></li><li><p>In others, it will be sessions to evidence, or evidence to synthesis.</p></li><li><p>Start where the pain is most visible and most repeated.</p></li></ul></li><li><p><strong>Use process fixes before platform fixes</strong></p><ul><li><p>Sometimes the answer is a tool change, but often the first improvement is simpler than that.</p></li><li><p>Standardize naming conventions.</p></li><li><p>Create one source of truth for participant status.</p></li><li><p>Define who owns incentive tracking.</p></li><li><p>Set rules for where recordings, transcripts, and clips live.</p></li><li><p>Add a clear hand-off owner for each step so the process does not become everyone&#8217;s responsibility and no one&#8217;s responsibility at the same time.</p></li></ul></li><li><p><strong>Measure whether the fix actually worked</strong></p><ul><li><p>After you change a hand-off, look for real signs of improvement.</p></li><li><p>Did scheduling take less time?</p></li><li><p>Did researchers spend less effort tracking logistics?</p></li><li><p>Did synthesis start sooner?</p></li><li><p>Were findings easier to reuse later?</p></li><li><p>If the fix did not reduce friction in practice, it was not really a fix.</p></li></ul></li></ul><p>In my experience, this kind of audit is where a lot of teams uncover the truth about their process.</p><h1>Conclusion</h1><p>My main point is that a lot of UX research pain does not come from weak methods, underqualified researchers, or a lack of enough software solutions. It comes from the spaces between steps, where the study gets handed from one system, one format, or one person to the next and loses continuity along the way. That is why I think hand-offs deserve a lot more attention than they usually get. And a more strategic research process is what will make your team&#8217;s work easier to trust, easier to reuse, and much more likely to influence decisions over time.</p><p>So if your team is feeling buried in admin, struggling to keep momentum, or watching good research disappear after the deck gets presented, I would not start by asking whether you need more tools. I would start by asking where the hand-offs are breaking. From what I have seen, that question usually gets you much closer to the real problem, and a lot closer to a process that actually supports the work.</p><p>Have you seen UXR teams treat hand-offs like an afterthought instead of recognizing how much they shape the quality, speed, and usefulness of the work? If so, comment here or DM me. I&#8217;d love to hear where you&#8217;ve seen broken hand-offs show up in real-world research processes. As always, thanks for reading!</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://trevorcalabro.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">UX Research in the Wild is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Reframing Accessibility]]></title><description><![CDATA[Accessibility Is Usability Under Real-World Conditions]]></description><link>https://trevorcalabro.substack.com/p/reframing-accessibility</link><guid isPermaLink="false">https://trevorcalabro.substack.com/p/reframing-accessibility</guid><dc:creator><![CDATA[Trevor Calabro]]></dc:creator><pubDate>Sat, 14 Mar 2026 14:10:57 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/95dccad2-bc80-4edf-893c-e02efc49cb5b_694x619.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Summary:</strong> This article reframes accessibility as a real-world usability standard. I argue that, in practice, accessibility is not a separate step in the design process, but a proxy for good usability best practices, both upfront and as a second-order effect.</p><div><hr></div><p>One time, while consulting with a large org, I was reviewing a website with a team that was feeling really, really good about how everything on the site looked. And I totally understood why. The UI design was clean, there was the perfect use of white space, and the typography stack was balanced and well thought out. It had that kind of modern visual quality that makes people in design reviews feel like they are looking at something very well-crafted and high-end.</p><p>Then we started walking through the end-user top tasks. We were simply trying to use the thing in the way a real-world user would. That is when the vibe in the room started to change. Important help content was hidden behind hover interactions. Important placeholder text disappeared once we clicked into a field. Some prime nav bar interaction choices behaved differently on desktop than they did on mobile. Information that users clearly needed to compare was tucked inside tabs, which meant they had to rely on memory instead of simply seeing the content side by side. Any of these issues sound familiar?</p><p>None of these interaction friction points seemed too bad in isolation to the aesthetic-minded UXers in the room, but once they experienced them back to back in an actual workflow, the flaws became pretty obvious. The design looked clean, partly because the interface was offloading more effort onto the end user. I have thought about that moment a lot over the years because it connects to something I talk about all the time, how soooooo many teams still confuse polished UI with strong UX. If something looks modern, organized, and intentional, people start giving it credit for being intuitive before it has actually earned that credit.</p><p>That same confusion shows up all the time in accessibility conversations. A lot of teams still think accessibility is a separate concern, something technical, something specialized, or something you evaluate after the main UX decisions have already been made. From what I have seen, that framing is completely wrong and backwards. Accessibility is often the first place where weak UX becomes impossible to ignore.</p><h1>Reframing A<strong>ccessibility and Usability</strong></h1><p>The main idea I want to make in this article is pretty simple, <strong>accessibility is usability under real-world conditions. </strong>I do not mean accessibility replaces usability, or vice versa. I mean accessibility can be used as a lever to reveal whether the usability of an interface was actually strong to begin with.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ba1R!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ab5d8e0-9738-4462-a03b-4dee7d14fc82_384x384.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ba1R!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ab5d8e0-9738-4462-a03b-4dee7d14fc82_384x384.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ba1R!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ab5d8e0-9738-4462-a03b-4dee7d14fc82_384x384.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ba1R!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ab5d8e0-9738-4462-a03b-4dee7d14fc82_384x384.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ba1R!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ab5d8e0-9738-4462-a03b-4dee7d14fc82_384x384.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ba1R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ab5d8e0-9738-4462-a03b-4dee7d14fc82_384x384.jpeg" width="262" height="262" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8ab5d8e0-9738-4462-a03b-4dee7d14fc82_384x384.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:384,&quot;width&quot;:384,&quot;resizeWidth&quot;:262,&quot;bytes&quot;:53697,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/190934707?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ab5d8e0-9738-4462-a03b-4dee7d14fc82_384x384.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ba1R!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ab5d8e0-9738-4462-a03b-4dee7d14fc82_384x384.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ba1R!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ab5d8e0-9738-4462-a03b-4dee7d14fc82_384x384.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ba1R!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ab5d8e0-9738-4462-a03b-4dee7d14fc82_384x384.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ba1R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ab5d8e0-9738-4462-a03b-4dee7d14fc82_384x384.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In my experience, when teams talk about usability in the abstract, they often imagine a pretty forgiving or overly narrow scenario. They picture a focused user in a static environment with their full attention on the product. Everything is in this idealized user&#8217;s full vision, full dexterity, good memory, a stable device, a standard browser, no time pressure, no interruptions, and no physical or cognitive limitations affecting the interaction. That is not the real world, and I think that distinction matters more than a lot of product people realize.</p><p>We all know the real world is much, much messier than that. People are distracted, people are tired, people switch devices, and people forget what they just read. People come back after long gaps, use keyboards instead of mice, rely on screen readers, have low vision, have motor limitations, have temporary injuries, are older, and are trying to complete real tasks in imperfect environments while also dealing with everything else in life.</p><p>Once you evaluate an experience against that reality, a lot of so-called &#8220;good UX&#8221; starts looking like aesthetic-only smoke and mirrors. That is why I think accessibility is better understood as a real-world standard, not a side topic. It gives us a more honest way to judge whether an interface really works.</p><h1>Quick Level-Setting</h1><p>When we talk about usability, we are usually talking about whether people can use something easily and successfully. Can they learn it, move through it efficiently, remember how it works, recover from mistakes, and feel reasonably confident while using it? That is the broad frame most UXers already understand.</p><p>When we talk about accessibility, we are talking about whether people with disabilities can perceive, operate, understand, and reliably use the same interface. Those two things are obviously related, but I think the relationship is stronger than many teams realize.</p><div class="pullquote"><p>So my super basic and obvious theory is that a lot of the practical building blocks of accessible design are also just the building blocks of strong UX.</p></div><p>I have no clue why so many UXers struggle with this concept, but in my experience, they do, which is why I&#8217;m writing this today. It&#8217;s pretty simple: keep important information visible, make interactions predictable, support multiple ways of navigating, reduce memory burden, write clearly, structure content well, avoid unnecessary complexity, make controls understandable, and ensure the experience holds up across contexts. And furthermore, while I&#8217;m on this rant, that should not be perceived as a niche list. That list is the foundation for basic interaction quality.</p><h1>A Simple Framework I Use</h1><p>When I explain this to teams, I usually try to simplify it into something practical. The framework I use is this:</p><h2>4 Signs Your UX Breaks in Real Use</h2><p>If a design depends on any of these 4 things, it is probably weaker than it looks.</p><h3>1. It relies on memory</h3><p>If users need to remember instructions, labels, previous content, hidden options, or what a control used to say, the experience is already asking too much of them. This is one reason I dislike labels inside form fields so much. Once the user starts typing, the label disappears, and now the interface has taken a simple recognition task and turned it into a memory task.</p><p>That is not just an accessibility issue. It is a usability issue that becomes even more fragile for users with cognitive load, divided attention, or screen reader needs. The more a design depends on recall instead of recognition, the less forgiving it becomes in the real world.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5dfm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dda5ddd-2ebb-4c96-9c0d-f90adc3e7697_1190x457.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5dfm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dda5ddd-2ebb-4c96-9c0d-f90adc3e7697_1190x457.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5dfm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dda5ddd-2ebb-4c96-9c0d-f90adc3e7697_1190x457.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5dfm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dda5ddd-2ebb-4c96-9c0d-f90adc3e7697_1190x457.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5dfm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dda5ddd-2ebb-4c96-9c0d-f90adc3e7697_1190x457.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5dfm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dda5ddd-2ebb-4c96-9c0d-f90adc3e7697_1190x457.jpeg" width="1190" height="457" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7dda5ddd-2ebb-4c96-9c0d-f90adc3e7697_1190x457.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:457,&quot;width&quot;:1190,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:129854,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/190934707?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dda5ddd-2ebb-4c96-9c0d-f90adc3e7697_1190x457.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5dfm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dda5ddd-2ebb-4c96-9c0d-f90adc3e7697_1190x457.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5dfm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dda5ddd-2ebb-4c96-9c0d-f90adc3e7697_1190x457.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5dfm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dda5ddd-2ebb-4c96-9c0d-f90adc3e7697_1190x457.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5dfm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dda5ddd-2ebb-4c96-9c0d-f90adc3e7697_1190x457.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><strong>Left:</strong> labels placed inside form fields. <strong>Right:</strong> labels placed outside form fields.</em></figcaption></figure></div><h3>2. It hides important information</h3><p>Users should not have to hunt for content that matters. When key information is hidden behind tabs, accordions, tooltips, carousels, or hover-only interactions, the design may look cleaner, but the user now has to do more work to understand the experience.</p><p>That extra work does not affect all users equally. It gets highly amplified for people using only the keyboard, assistive tech, smaller screens, or less stable attention. But decades of HCI research have proven that even outside of formal accessibility concerns, it still makes the interaction worse for all users. This is one of those areas where accessible design and usable design are almost impossible to separate.</p><h3>3. It changes behavior across contexts</h3><p>The more an experience changes from desktop to mobile, mouse to keyboard, or visual browsing to assistive browsing, the more relearning the user has to do. A lot of people start tasks on one device and finish them on another. They revisit products in different contexts, and they shift between interaction methods depending on the situation.</p><p>So when navigation, menus, or control logic behave very differently across those contexts, the experience becomes less trustworthy. That is not just a consistency problem. It is a real-world usability problem because it adds friction exactly when users need stability.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!a4_-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5518139d-529f-402f-a5e8-e67ab8549f9c_1624x978.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!a4_-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5518139d-529f-402f-a5e8-e67ab8549f9c_1624x978.jpeg 424w, https://substackcdn.com/image/fetch/$s_!a4_-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5518139d-529f-402f-a5e8-e67ab8549f9c_1624x978.jpeg 848w, https://substackcdn.com/image/fetch/$s_!a4_-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5518139d-529f-402f-a5e8-e67ab8549f9c_1624x978.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!a4_-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5518139d-529f-402f-a5e8-e67ab8549f9c_1624x978.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!a4_-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5518139d-529f-402f-a5e8-e67ab8549f9c_1624x978.jpeg" width="523" height="315.0212912087912" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5518139d-529f-402f-a5e8-e67ab8549f9c_1624x978.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:877,&quot;width&quot;:1456,&quot;resizeWidth&quot;:523,&quot;bytes&quot;:99404,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/190934707?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5518139d-529f-402f-a5e8-e67ab8549f9c_1624x978.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!a4_-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5518139d-529f-402f-a5e8-e67ab8549f9c_1624x978.jpeg 424w, https://substackcdn.com/image/fetch/$s_!a4_-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5518139d-529f-402f-a5e8-e67ab8549f9c_1624x978.jpeg 848w, https://substackcdn.com/image/fetch/$s_!a4_-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5518139d-529f-402f-a5e8-e67ab8549f9c_1624x978.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!a4_-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5518139d-529f-402f-a5e8-e67ab8549f9c_1624x978.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>An old Google study found that up to 90% of users move between devices while completing tasks, so inconsistent navigation creates friction fast.</em></figcaption></figure></div><h3>4. It rewards precision instead of clarity</h3><p>If the interface only works well when someone can hover precisely, click tiny targets, interpret subtle cues, or decode visual minimalism correctly, then it is relying too much on precision and not enough on clarity. Strong UX should not require users to be unusually careful just to succeed.</p><p>I see this show up in prime nav bar menu designs all the time. Hover-based navigation, ambiguous click targets, split buttons, overly subtle controls, or menus that ask users to guess what will happen next all create unnecessary fragility. Accessibility simply makes that fragility easier to see, but the weakness was already there.</p><p>Taken together, these 4 signs work as a stress test for UX. They help reveal whether an interface is genuinely clear and resilient, or whether it only feels usable when conditions are perfect. The framework is less about catching isolated accessibility issues and more about exposing the deeper design choices that make an experience fragile in the real world.</p><h1>What This Looks Like in Practice</h1><p>Once you start using this framework, a lot of design decisions become way easier to discuss upfront. Take content hidden inside a tooltip. The question is not just, &#8220;Is this accessible?&#8221; The better question is, &#8220;Why is this information hidden at all if the user needs it to proceed?&#8221;</p><p>Take form labels inside fields. The question is not just, &#8220;Will a screen reader handle this?&#8221; It is also, &#8220;Why are we removing visible guidance in a task that already depends on accuracy?&#8221; Take radically different mobile navigation. The question is not just, &#8220;Can users technically get through it?&#8221; It is also, &#8220;Why are we making them relearn the system when they change devices?&#8221;</p><div class="pullquote"><p>This is why I like the reframe so much. It stops accessibility from feeling like a separate audit category and pulls it back into the core UX conversation where it belongs.</p></div><p>Once that happens, teams can start evaluating design decisions in a way that is more grounded in actual use.</p><h1>Familiar Does Not Mean Boring</h1><p>Another point worth making here is that accessible design is not about making everything plain or lifeless. It is about making things understandable. I think some teams hear &#8220;accessible&#8221; and imagine a stripped-down, rigid, or visually uninteresting product. That has not been my experience at all.</p><p>Don&#8217;t get me wrong, you can still build beautiful interfaces, and you should. You can still build distinctive products that solve real problems in the real world. And you should still make something feel polished and intentional. The difference is that the visual decisions cannot come at the expense of interaction clarity.</p><div class="pullquote"><p>The rule of thumb here is that the UXer&#8217;s burden is to 1st prioritize making designs accessible, and then, and only then, shift to making them look aesthetically polished.</p></div><p>That is where a lot of UXers get in trouble. They are not really choosing between beauty and accessibility. They are choosing between surface elegance and actual ease of use. Those are not the same thing, and once we start talking about it that way, accessibility stops feeling like a limitation and starts feeling like a design discipline that protects what matters. We, as a discipline, need to stop assessing our interfaces like artwork.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4CsI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc07bcd42-232f-489b-aefe-cc765a1f4a1f_1030x678.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4CsI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc07bcd42-232f-489b-aefe-cc765a1f4a1f_1030x678.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4CsI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc07bcd42-232f-489b-aefe-cc765a1f4a1f_1030x678.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4CsI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc07bcd42-232f-489b-aefe-cc765a1f4a1f_1030x678.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4CsI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc07bcd42-232f-489b-aefe-cc765a1f4a1f_1030x678.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4CsI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc07bcd42-232f-489b-aefe-cc765a1f4a1f_1030x678.jpeg" width="421" height="277.1242718446602" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c07bcd42-232f-489b-aefe-cc765a1f4a1f_1030x678.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:678,&quot;width&quot;:1030,&quot;resizeWidth&quot;:421,&quot;bytes&quot;:309947,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/190934707?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc07bcd42-232f-489b-aefe-cc765a1f4a1f_1030x678.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4CsI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc07bcd42-232f-489b-aefe-cc765a1f4a1f_1030x678.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4CsI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc07bcd42-232f-489b-aefe-cc765a1f4a1f_1030x678.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4CsI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc07bcd42-232f-489b-aefe-cc765a1f4a1f_1030x678.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4CsI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc07bcd42-232f-489b-aefe-cc765a1f4a1f_1030x678.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>So my argument is this: does the experience still hold up when the user cannot rely on hover, cannot see subtle cues, is using keyboard-only navigation, cannot remember instructions from prior pages, is trying to get something done quickly, switches devices, is distracted, or needs things to be explicit rather than implied? That is a far more honest framing and test of UX quality.</p><div class="pullquote"><p>I think that is part of why accessibility work is so valuable beyond simple compliance. It gives teams a better lens for evaluating whether the product is actually usable in the first place.</p></div><p>Accounting for accessibility compliance should be step number 1 in your process. This makes accessibility a proxy for good usability best practices, both upfront and as a second-order effect. Instead of asking whether the interface passes a narrow review, ask whether the experience can stand up to use under less-than-ideal conditions.</p><h1>Conclusion</h1><p>Over the years, I have come to think about accessibility less as a separate domain and more as a reality check for usability. It is one of the clearest ways to find out whether an interface was designed for real use or just for a surface-level, smoke-and-mirrors style of design review.</p><p>If the experience only seems usable under perfect conditions, then the UX is not nearly vetted enough to move forward. If it falls apart the second someone needs more explicit structure, more visible guidance, more predictable interaction, or more resilient navigation, then those were not edge cases. They were the stress test, so there was no need to test with end users at that point yet. Instead, follow accessibility best practices first, then incorporate usability best practices, and lastly look at aesthetics within those constraints. This is the best order of operation for UXers.</p><p>That is the shift I hope more folks make. Not seeing accessibility as a final layer, not seeing it as a side checklist, and not seeing it as something separate from UX. Accessibility is usability. I would much rather see teams treat it as one of the most practical ways to tell whether the experience can survive contact with the real world.</p><p>At this point, that is the standard I care about most. I care less about whether the interface looks clean in a static frame and more about whether it still works when real life shows up.</p><p>Have you seen teams treat accessibility like a side checklist instead of a basic test of whether the UX actually works? If so, comment here or DM me. I&#8217;d love to hear the patterns you&#8217;ve seen in the real world. Thanks for the support, everyone!</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://trevorcalabro.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">UX Research in the Wild is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Behavioral Evidence > Self-Reported Evidence ]]></title><description><![CDATA[What People Say and What People Do Are Different]]></description><link>https://trevorcalabro.substack.com/p/behavioral-evidence-self-reported</link><guid isPermaLink="false">https://trevorcalabro.substack.com/p/behavioral-evidence-self-reported</guid><dc:creator><![CDATA[Trevor Calabro]]></dc:creator><pubDate>Sat, 07 Mar 2026 20:48:39 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/4680dec4-a8df-463a-8d83-073a311689af_694x619.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Summary: </strong>Using a real usability test example, this week&#8217;s article shows how teams often give too much weight to what users say after the fact and not enough weight to what actually happened during real-world tasks.</p><div><hr></div><p>Years ago, I ran a moderated usability test on a complex workflow redesign. The test consisted of a handful of top tasks. One of those tasks could have been described as, &#8220;This is the core value of the product.&#8221; For this test, the participant was a perfect match for the user segment we wanted to learn more about. They understood the domain, and they used the tool we were testing in their day-to-day work. In other words, everything was on the up-and-up. hahahaha</p><p>When we reached that one critical task, everything started normally. Then the participant hit the first decision point and hesitated. They clicked into the wrong area, backed out, tried a different path, and started narrating little &#8220;wait, what&#8221; comments that you only hear when someone is quietly losing confidence. A few minutes later, they were deep into a workaround that looked nothing like the intended path. After some more struggling, the participant asked me, half-jokingly, if the system was supposed to do something that it was not doing. The flow never fully recovered, and they ultimately did not successfully complete the task.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mHby!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0859c462-8b90-45a6-9e1f-68ae5e864f9f_1358x824.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mHby!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0859c462-8b90-45a6-9e1f-68ae5e864f9f_1358x824.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mHby!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0859c462-8b90-45a6-9e1f-68ae5e864f9f_1358x824.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mHby!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0859c462-8b90-45a6-9e1f-68ae5e864f9f_1358x824.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mHby!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0859c462-8b90-45a6-9e1f-68ae5e864f9f_1358x824.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mHby!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0859c462-8b90-45a6-9e1f-68ae5e864f9f_1358x824.jpeg" width="585" height="354.96318114874816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0859c462-8b90-45a6-9e1f-68ae5e864f9f_1358x824.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:824,&quot;width&quot;:1358,&quot;resizeWidth&quot;:585,&quot;bytes&quot;:493245,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/190225712?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0859c462-8b90-45a6-9e1f-68ae5e864f9f_1358x824.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mHby!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0859c462-8b90-45a6-9e1f-68ae5e864f9f_1358x824.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mHby!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0859c462-8b90-45a6-9e1f-68ae5e864f9f_1358x824.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mHby!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0859c462-8b90-45a6-9e1f-68ae5e864f9f_1358x824.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mHby!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0859c462-8b90-45a6-9e1f-68ae5e864f9f_1358x824.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Soon, we had gone through all of the remaining tasks, and I moved into the post-task interview style wrap-up questions. I started that wrap-up section with a pretty simple prompt. &#8220;Talk me through how task X went for you.&#8221; The participant shrugged and paused as he thought back for a second, then said something like, &#8220;Honestly, it was real easy. Pretty intuitive.&#8221;</p><p>This is the exact phenomenon I&#8217;d like to discuss in this week&#8217;s article. It is why we must observe what users do and not blindly accept what users say. It is also why eyewitness testimony can be unreliable in court. Most of all, I think this psychological phenomenon is one of the main drivers behind the dilution of user research I see happening in the real world, so I&#8217;m hoping this article helps explain the problem and pushes us to start correcting it.</p><p>After that usability test I remember sitting there thinking, if that task were truly tied to their job in the real world, the experience would have landed much much differently. Someone whose work depends on completing a task does not casually forget the moment they got blocked right before submission. That person ends up frustrated, escalates to a coworker, searches for documentation, opens a support ticket, or does whatever it takes to get the work done before the deadline hits.</p><div class="pullquote"><p>The behavioral record of the session told the full story. Uncertainty, backtracking, and task failure actually happened despite what the participant said at the end. That retrospective perception data sounded nice, but it also contradicted everything we just watched.</p></div><p>And this is where things get uncomfortable. A couple stakeholders latched onto the &#8220;real easy and intuitive&#8221; quote. The quote fit what they already wanted to believe. It aligned with the story they had been telling themselves about the workflow. It validated their expectations, so it became the main takeaway of the study. Meanwhile, the behavioral evidence was treated like a weird anomaly and was largely dismissed. That kind of misunderstanding is the entire point of this article.</p><p>Teams keep giving way too much weight to anecdotal and retrospective feedback, especially when it supports a preconceived conclusion. Confirmation bias does the rest.</p><h1>Quick Level Setting</h1><p>Let&#8217;s level-set around something the HCI field has understood for decades. When the question is usability, the best evidence comes from observing behavior during task execution.</p><div class="pullquote"><p>The closer you get to real tasks, real constraints, and real consequences, the more trustworthy your data becomes. Full stop.</p></div><p>That statement is not a philosophical preference; it&#8217;s a real-world one. Products fail in the real world because people cannot complete tasks, cannot recover from errors, cannot find the right thing, cannot understand what the system is doing, or cannot operate the interface with their access needs. Those are behavioral outcomes.</p><p>Perception data can still be useful, but it does not carry the same evidentiary weight when it conflicts with what happened on screen. This is why I keep pushing back on the research culture that treats &#8220;user feedback&#8221; as one big bucket.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vDhg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F117351b8-2430-4396-9c89-6468a821e425_1469x413.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vDhg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F117351b8-2430-4396-9c89-6468a821e425_1469x413.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vDhg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F117351b8-2430-4396-9c89-6468a821e425_1469x413.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vDhg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F117351b8-2430-4396-9c89-6468a821e425_1469x413.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vDhg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F117351b8-2430-4396-9c89-6468a821e425_1469x413.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vDhg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F117351b8-2430-4396-9c89-6468a821e425_1469x413.jpeg" width="545" height="153.0940934065934" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/117351b8-2430-4396-9c89-6468a821e425_1469x413.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:409,&quot;width&quot;:1456,&quot;resizeWidth&quot;:545,&quot;bytes&quot;:205115,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/190225712?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F117351b8-2430-4396-9c89-6468a821e425_1469x413.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vDhg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F117351b8-2430-4396-9c89-6468a821e425_1469x413.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vDhg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F117351b8-2430-4396-9c89-6468a821e425_1469x413.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vDhg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F117351b8-2430-4396-9c89-6468a821e425_1469x413.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vDhg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F117351b8-2430-4396-9c89-6468a821e425_1469x413.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h1>The &#8220;User Feedback&#8221; Trap</h1><p>A quote from a discovery interview, a post-task sentiment rating, and a screen recording of task failure are all forms of data. Treating them as interchangeable is where teams start making bad decisions. Here is a simple way that I like to think about it.</p><p><strong>Behavioral Evidence answers questions like:</strong></p><ul><li><p>Did the user complete the task</p></li><li><p>Where did they get stuck</p></li><li><p>What did they misunderstand</p></li><li><p>What did they miss entirely</p></li><li><p>What did they do when the interface did not support them</p></li></ul><p><strong>Perception and retrospection answer a different set of questions:</strong></p><ul><li><p>What the user thinks happened</p></li><li><p>What they remember happening</p></li><li><p>What they believe they typically do</p></li><li><p>How they want to describe themselves and their competence</p></li><li><p>How they feel about the experience after the fact</p></li></ul><p>Again, user perception data is not meaningless. It just has a very specific failure mode. It can sound confident while being wrong, especially when the experience was confusing, stressful, or unfamiliar. That is exactly what happened in the usability test scenario I described above.</p><h1>The Misunderstanding</h1><p>In my experience, this confusion happens for mainly 3 <em>extremely </em>predictable reasons:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PacA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55b94ea2-2a18-45ba-9973-ddad03f540a3_919x588.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PacA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55b94ea2-2a18-45ba-9973-ddad03f540a3_919x588.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PacA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55b94ea2-2a18-45ba-9973-ddad03f540a3_919x588.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PacA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55b94ea2-2a18-45ba-9973-ddad03f540a3_919x588.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PacA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55b94ea2-2a18-45ba-9973-ddad03f540a3_919x588.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PacA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55b94ea2-2a18-45ba-9973-ddad03f540a3_919x588.jpeg" width="307" height="196.4265505984766" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55b94ea2-2a18-45ba-9973-ddad03f540a3_919x588.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:588,&quot;width&quot;:919,&quot;resizeWidth&quot;:307,&quot;bytes&quot;:125230,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/190225712?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55b94ea2-2a18-45ba-9973-ddad03f540a3_919x588.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PacA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55b94ea2-2a18-45ba-9973-ddad03f540a3_919x588.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PacA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55b94ea2-2a18-45ba-9973-ddad03f540a3_919x588.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PacA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55b94ea2-2a18-45ba-9973-ddad03f540a3_919x588.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PacA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55b94ea2-2a18-45ba-9973-ddad03f540a3_919x588.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ol><li><p><strong>Perception data is easy to package.<br></strong>A clean quote looks good on a slide and travels well in an organization. It can be repeated in meetings without needing much context. A short clip of failure, or a detailed behavioral breakdown, requires people to sit with discomfort and accept that the interface did not work.</p></li><li><p><strong>Perception data often aligns with what stakeholders already want to be true.</strong><br>That is where confirmation bias turns a single quote into a decision driver. Behavioral evidence is more likely to challenge the story, so it gets treated as noise.</p></li><li><p><strong>A lot of modern &#8220;lean UX&#8221; culture has trained teams to over-index on lightweight discovery.<br></strong>Interview-driven discovery creates a false sense of certainty because it produces coherent narratives quickly. Those narratives often become a substitute for validation, and validation is the part that reveals whether the narrative holds up.</p></li></ol><p>This &#8220;lean UX&#8221; culture reason is the one that drives me the most nuts because the HCI field is not new.</p><div class="pullquote"><p>We have decades of research about how to best evaluate interaction quality. Observed behavior has always been the gold standard that actually works.</p></div><p>Usability testing, accessibility evaluation, and task-based observation exist because they force the interface to prove itself under real conditions. Yet a bunch of lightweight, discovery-only, vibe-forward practices have convinced many teams that they can skip the hard part and still claim they are doing user-centered design.</p><h1>More Practical Standards</h1><p>The rule of thumb I wish everyone would adopt is this:</p><div class="pullquote"><p>If behavioral evidence and perception evidence conflict, behavioral evidence wins. That does not mean you ignore what the person said. It means you interpret what they said through the lens of what happened.</p></div><p>In the example from my usability test session, the useful interpretation is not &#8220;the workflow is easy.&#8221; The useful interpretation is &#8220;the participant is describing how they want the experience to be remembered, while the interface still created a task-ending failure.&#8221;</p><p>That reframing matters because it changes what the team does next. The team either fixes the workflow or it ships a broken workflow that only feels successful in a meeting. This weighting problem becomes even more damaging when the topic is accessibility.</p><div class="pullquote"><p>Accessibility is not primarily a sentiment topic. It is an interaction and capability topic.</p></div><p>The question is not whether the interface <em><strong>feels </strong></em>intuitive. The question is whether someone can operate it with their access needs, complete the task, and recover when something goes wrong. A screen reader does not care about the user&#8217;s post-task optimism. If a keyboard-only user gets stuck in part of the interface, that problem is still real, no matter how nicely they describe the experience later. A missing label does not become usable because the design looks clean. We must all remember the fact that behavioral evaluation reveals these failures early, while they are still fixable.</p><h1>Where UX Went Wrong</h1><p>I think the confusion is partly cultural. Some product environments reward speed more than truth and reward alignment more than accuracy. Others reward clean, confident narratives more than messy evidence that creates follow-up work. Once that becomes the incentive structure, teams start valuing research outputs that help move decisions along, even when those outputs are built on weaker evidence. It can turn into a &#8220;group think&#8221; thing.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SLt7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30c5cac2-9a6b-4f06-8b0a-08d6418aa303_478x295.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SLt7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30c5cac2-9a6b-4f06-8b0a-08d6418aa303_478x295.jpeg 424w, https://substackcdn.com/image/fetch/$s_!SLt7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30c5cac2-9a6b-4f06-8b0a-08d6418aa303_478x295.jpeg 848w, https://substackcdn.com/image/fetch/$s_!SLt7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30c5cac2-9a6b-4f06-8b0a-08d6418aa303_478x295.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!SLt7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30c5cac2-9a6b-4f06-8b0a-08d6418aa303_478x295.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SLt7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30c5cac2-9a6b-4f06-8b0a-08d6418aa303_478x295.jpeg" width="400" height="246.86192468619248" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/30c5cac2-9a6b-4f06-8b0a-08d6418aa303_478x295.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:295,&quot;width&quot;:478,&quot;resizeWidth&quot;:400,&quot;bytes&quot;:88543,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/190225712?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30c5cac2-9a6b-4f06-8b0a-08d6418aa303_478x295.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!SLt7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30c5cac2-9a6b-4f06-8b0a-08d6418aa303_478x295.jpeg 424w, https://substackcdn.com/image/fetch/$s_!SLt7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30c5cac2-9a6b-4f06-8b0a-08d6418aa303_478x295.jpeg 848w, https://substackcdn.com/image/fetch/$s_!SLt7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30c5cac2-9a6b-4f06-8b0a-08d6418aa303_478x295.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!SLt7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30c5cac2-9a6b-4f06-8b0a-08d6418aa303_478x295.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>That is also how stakeholders accidentally train teams to ignore the most important signals. Positive, simple feedback like &#8220;users liked it,&#8221; &#8220;users said it was easy,&#8221; or &#8220;the design tested well&#8221; creates a sense of closure. It makes it feel like the research did its job and the team can move on. Behavioral evidence does the opposite. It surfaces friction, ambiguity, failure points, and uncomfortable obligations.</p><p>So even when nobody is trying to be careless, the org slowly drifts toward the kinds of findings that feel good to present and away from the kinds of findings that force change. Over time, that drift becomes culture. And once it becomes culture, the same mistake repeats itself across teams, products, and years.</p><div class="pullquote"><p>That is how you end up with an org that can run &#8220;discovery&#8221; every quarter and still ship workflows users cannot complete. It is also how PM-centric and aesthetic-centric mindsets quietly reshape the research hierarchy until teams start acting like clean UI and positive quotes are enough to prove good UX.</p></div><h1>A Real-World Framework</h1><p>I have found that stakeholders rarely need or want education about our research methods. They need a simple way to keep evidence categories straight.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xDeL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca9c05a2-3ef6-423e-90b4-354acf4d2055_687x602.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xDeL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca9c05a2-3ef6-423e-90b4-354acf4d2055_687x602.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xDeL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca9c05a2-3ef6-423e-90b4-354acf4d2055_687x602.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xDeL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca9c05a2-3ef6-423e-90b4-354acf4d2055_687x602.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xDeL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca9c05a2-3ef6-423e-90b4-354acf4d2055_687x602.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xDeL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca9c05a2-3ef6-423e-90b4-354acf4d2055_687x602.jpeg" width="295" height="258.50072780203783" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ca9c05a2-3ef6-423e-90b4-354acf4d2055_687x602.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:602,&quot;width&quot;:687,&quot;resizeWidth&quot;:295,&quot;bytes&quot;:97944,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/190225712?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca9c05a2-3ef6-423e-90b4-354acf4d2055_687x602.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xDeL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca9c05a2-3ef6-423e-90b4-354acf4d2055_687x602.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xDeL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca9c05a2-3ef6-423e-90b4-354acf4d2055_687x602.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xDeL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca9c05a2-3ef6-423e-90b4-354acf4d2055_687x602.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xDeL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca9c05a2-3ef6-423e-90b4-354acf4d2055_687x602.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Here is the framework I use that has worked wonders in orgs of all different shapes and sizes:</p><p><strong>Category A: Outcome evidence</strong></p><p>This is the stuff that tells you whether the workflow actually worked.</p><ul><li><p>Task completion or failure</p></li><li><p>Critical errors and where they happen</p></li><li><p>Backtracking, hesitation, and wrong-path selection</p></li><li><p>Time on task when it is meaningful</p></li><li><p>Moments where the user needs help to proceed</p></li><li><p>Accessibility outcomes like keyboard operability and screen reader comprehension</p></li></ul><p><strong>Category B: Interpretation evidence</strong></p><p>This helps explain why the outcome happened.</p><ul><li><p>What the participant believed the system was doing</p></li><li><p>What they thought a control meant</p></li><li><p>What goal they were trying to accomplish in that moment</p></li><li><p>What information they felt was missing</p></li><li><p>What they expected to happen next</p></li></ul><p><strong>Category C: Preference and sentiment</strong></p><p>This helps you understand taste, comfort, confidence, and perceived value.</p><ul><li><p>&#8220;I liked it&#8221;</p></li><li><p>&#8220;It feels modern&#8221;</p></li><li><p>&#8220;I would use this&#8221;</p></li><li><p>&#8220;It was intuitive&#8221;</p></li><li><p>Ratings, NPS-style questions, lightweight satisfaction prompts</p></li></ul><p>The mistake seems to happen in most product-level conversations; teams treat Category C as if it can overrule Category A.</p><p>Category C can help influence direction and priorities, but Category A is backed by high-confidence research we can rely on. Once stakeholders buy into that idea, they will usually agree that Category C data can no longer be used to claim success when Category A proves failure. Once you explain it this way, it becomes much much harder for someone to wave a nice quote around like it is proof.</p><h1>Reframing in the Real World</h1><p>To me, this reframing is the part that matters most in practice. When a stakeholder grabs onto a quote like &#8220;it felt easy&#8221; or &#8220;that was intuitive,&#8221; you need language that calmly redirects the conversation back to the stronger evidence without turning it into a personal disagreement.</p><p>The clearest move is to separate perception from outcome. You can say something like, &#8220;That comment is useful as perception data, but the task still did not complete, so we should treat this as a usability issue,&#8221; or &#8220;The quote is worth noting, but it cannot be our main takeaway because the behavioral record shows the workflow actually broke down while in use.&#8221; Framing it this way keeps the discussion grounded in evidence quality rather than in who is right.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lZPN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ccf0797-1f58-4b53-af0d-3058ec15594b_706x482.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lZPN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ccf0797-1f58-4b53-af0d-3058ec15594b_706x482.jpeg 424w, https://substackcdn.com/image/fetch/$s_!lZPN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ccf0797-1f58-4b53-af0d-3058ec15594b_706x482.jpeg 848w, https://substackcdn.com/image/fetch/$s_!lZPN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ccf0797-1f58-4b53-af0d-3058ec15594b_706x482.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!lZPN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ccf0797-1f58-4b53-af0d-3058ec15594b_706x482.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lZPN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ccf0797-1f58-4b53-af0d-3058ec15594b_706x482.jpeg" width="362" height="247.1444759206799" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8ccf0797-1f58-4b53-af0d-3058ec15594b_706x482.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:482,&quot;width&quot;:706,&quot;resizeWidth&quot;:362,&quot;bytes&quot;:119220,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/190225712?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ccf0797-1f58-4b53-af0d-3058ec15594b_706x482.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lZPN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ccf0797-1f58-4b53-af0d-3058ec15594b_706x482.jpeg 424w, https://substackcdn.com/image/fetch/$s_!lZPN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ccf0797-1f58-4b53-af0d-3058ec15594b_706x482.jpeg 848w, https://substackcdn.com/image/fetch/$s_!lZPN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ccf0797-1f58-4b53-af0d-3058ec15594b_706x482.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!lZPN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ccf0797-1f58-4b53-af0d-3058ec15594b_706x482.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I think this becomes even easier to explain when you connect it to accessibility. Accessibility already forces teams to be more precise about what counts as valid evidence. A keyboard-only user getting stuck in part of the interface is a behavioral outcome that no one can ignore. Nobody would seriously argue that a participant saying &#8220;it felt accessible enough&#8221; is strong proof that the experience is actually accessible.</p><p>Usability should be treated the same way. A participant saying a flow felt easy or intuitive does not override the fact that they got stuck, failed the task, or needed help to continue. The same weighting rule applies in both cases. When perception and behavior conflict, behavior is the evidence that should carry more weight.</p><h1>Conclusion</h1><p>My hope for the future is that teams stop treating behavioral research like an optional upgrade. Behavior is the main evidence type for usability, accessibility, and workflow success, and I&#8217;d love to see perception treated as supporting evidence that helps teams interpret and prioritize. When the two conflict, that conflict is itself a finding, and it usually points to a social dynamic, a memory effect, or a mismatch between conceptual clarity and operational execution.</p><p>If you are a user researcher, I&#8217;m begging you to be more aware of this and to protect this distinction carefully. Do that by making it explicit in your readouts. Label data with the categories I described above, and do not let a quote become the takeaway when the behavioral evidence says something else.</p><p>If you are a stakeholder, please resist the temptation to grab the quote that makes you feel better. The job is not to feel better. It&#8217;s to ship products that work for real users doing real tasks in the real world. At the end of the day, your users will either complete the tasks they need your products for, or they&#8217;ll find a competitor who can do what you cannot.</p><p>Have you ever seen this misinterpretation of perception data in your work? If so, comment here or DM me with your stories. I&#8217;d love to know whether I&#8217;m the only one seeing this. Thanks for reading!</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://trevorcalabro.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">UX Research in the Wild is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Stop Weaponizing Conversational UX ]]></title><description><![CDATA[Including a Contest Testing Template]]></description><link>https://trevorcalabro.substack.com/p/stop-weaponizing-conversational-ux</link><guid isPermaLink="false">https://trevorcalabro.substack.com/p/stop-weaponizing-conversational-ux</guid><dc:creator><![CDATA[Trevor Calabro]]></dc:creator><pubDate>Sat, 28 Feb 2026 22:14:45 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/bea2b48d-1f67-4577-823f-4f254725e9bc_694x619.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Summary: </strong>Conversational UX is an old framework for designing user-centered interactions, but it often gets watered down into &#8220;friendly&#8221; sounding copy that justifies upsells, guilt buttons, and other dark patterns. This post aims to reset the idea back to its original intentions and provides a simple tool for testing your own product&#8217;s content.</p><div><hr></div><p>Somewhere along the way, the principles behind &#8220;Conversational UX&#8221; started to get treated like a license to write sales copy inside interfaces.</p><p>You know what I&#8217;m talking about. The kind of copywriting that shows up in onboarding tours, upsell modals, paywalls, and error messaging. The kind of copy that tries to sound like a casual friend talking to you, except what it&#8217;s saying feels more like the ShamWow guy trying to sell you a drop cloth.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RAFj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0da1b253-0b78-44ce-994f-a22467a819be_1500x1123.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RAFj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0da1b253-0b78-44ce-994f-a22467a819be_1500x1123.jpeg 424w, https://substackcdn.com/image/fetch/$s_!RAFj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0da1b253-0b78-44ce-994f-a22467a819be_1500x1123.jpeg 848w, https://substackcdn.com/image/fetch/$s_!RAFj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0da1b253-0b78-44ce-994f-a22467a819be_1500x1123.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!RAFj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0da1b253-0b78-44ce-994f-a22467a819be_1500x1123.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RAFj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0da1b253-0b78-44ce-994f-a22467a819be_1500x1123.jpeg" width="365" height="273.2486263736264" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0da1b253-0b78-44ce-994f-a22467a819be_1500x1123.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1090,&quot;width&quot;:1456,&quot;resizeWidth&quot;:365,&quot;bytes&quot;:133346,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/189500458?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0da1b253-0b78-44ce-994f-a22467a819be_1500x1123.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RAFj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0da1b253-0b78-44ce-994f-a22467a819be_1500x1123.jpeg 424w, https://substackcdn.com/image/fetch/$s_!RAFj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0da1b253-0b78-44ce-994f-a22467a819be_1500x1123.jpeg 848w, https://substackcdn.com/image/fetch/$s_!RAFj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0da1b253-0b78-44ce-994f-a22467a819be_1500x1123.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!RAFj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0da1b253-0b78-44ce-994f-a22467a819be_1500x1123.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Just looking at this picture, I can almost hear the kind of CTA button copy he would write. &#8220;If you hate savings, then click this button.&#8221; <em>Hahahaha</em></figcaption></figure></div><p>If you want to leverage Conversational UX as a framework, you have to go back to its origins in 2017, when Robert J. Moore and Raphael Arar&#8217;s Natural Conversation Framework (NCF) model was created. <a href="https://dblp.org/pid/67/1811.html">Read more on the Natural Conversation Framework (NCF) here.</a></p><p>This is how I think about their main point. I love it because it&#8217;s simple and real-world applicable.</p><div class="pullquote"><p>People already know how conversation works in the real world, so we can design interactions that follow those mechanics instead of forcing people to adapt to system logic.</p></div><p>In this week&#8217;s post, I want to revisit the original intention of the Conversational UX movement and see if we can right the ship on how it&#8217;s been bastardized over the years.</p><h1>What is Conversational UX?</h1><p>Conversational UX is a user-centered framework for designing interactions that unfold over time.</p><p>Conversational UX consists of:</p><ul><li><p><strong>Turn-taking:</strong> the system responds to what a user just did, instead of dumping everything up front. (just-in-time info)</p></li><li><p><strong>Context:</strong> language and choices reflect where the user is in a workflow and what they are trying to do right now.</p></li><li><p><strong>Repair:</strong> when something breaks, the system helps the user recover and keep moving forward.</p></li><li><p><strong>Shared meaning:</strong> labels and terms align to what users already recognize in their domain, not what the system calls things internally.</p></li></ul><p>Conversational UX principles are also great for understanding how to properly use progressive disclosure when designing user flows. I often see progressive disclosure treated as a UI pattern consideration, but if you frame it as a conversational mechanic, the outcomes are usually much more user-centered.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1GTX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78e8d788-7bdb-49d9-bdee-c625a48746a1_733x452.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1GTX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78e8d788-7bdb-49d9-bdee-c625a48746a1_733x452.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1GTX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78e8d788-7bdb-49d9-bdee-c625a48746a1_733x452.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1GTX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78e8d788-7bdb-49d9-bdee-c625a48746a1_733x452.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1GTX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78e8d788-7bdb-49d9-bdee-c625a48746a1_733x452.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1GTX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78e8d788-7bdb-49d9-bdee-c625a48746a1_733x452.jpeg" width="411" height="253.4406548431105" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/78e8d788-7bdb-49d9-bdee-c625a48746a1_733x452.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:452,&quot;width&quot;:733,&quot;resizeWidth&quot;:411,&quot;bytes&quot;:107263,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/189500458?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78e8d788-7bdb-49d9-bdee-c625a48746a1_733x452.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1GTX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78e8d788-7bdb-49d9-bdee-c625a48746a1_733x452.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1GTX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78e8d788-7bdb-49d9-bdee-c625a48746a1_733x452.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1GTX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78e8d788-7bdb-49d9-bdee-c625a48746a1_733x452.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1GTX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78e8d788-7bdb-49d9-bdee-c625a48746a1_733x452.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Conversations are inherently user-centered.</figcaption></figure></div><p>For example, you wouldn&#8217;t introduce yourself by telling a new acquaintance every single little detail of your life story. You&#8217;d go back and forth and respond to their questions as they come up. Proper use of progressive disclosure is the same idea translated into an interface structure. A good rule of thumb is to show people what they need to succeed just in time, and defer the rest until it&#8217;s requested or clearly needed.</p><p>That&#8217;s how I think of Conversational UX. It&#8217;s information architecture plus timing plus language that matches the user&#8217;s mental model.</p><h1>How It Gets Weaponized</h1><p>The weaponization of conversational UX principles often starts when teams shrink the whole idea down to its surface-level, meaning &#8220;make it sound conversational.&#8221; That oversimplification leads people to treat &#8220;conversation&#8221; as editorial tone, not content structure. From there, it&#8217;s a short leap to assuming Conversational UX supports overly persuasive interface copy. And once you&#8217;ve crossed into persuasionville, the slippery slope to dark patterns is right there.</p><div class="pullquote"><p>In my experience, I&#8217;ve seen more UX practitioners misuse Conversational UX principles to justify dark patterns than any other philosophy.</p></div><p>For example, you&#8217;ll often see this in the real world when a website frames an upsell or conversion push as if it&#8217;s a two-way conversation. It might appear as a friendly question in a modal, a guided step-by-step prompt, or a pair of buttons that force you to &#8220;respond.&#8221; But the interaction isn&#8217;t centered on the person&#8217;s real-world task. It&#8217;s centered on what the business wants, like upgrading, turning on tracking, or accepting an offer.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2eMQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd971e293-a0b8-425c-80a3-2cc8cb039587_1054x910.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2eMQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd971e293-a0b8-425c-80a3-2cc8cb039587_1054x910.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2eMQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd971e293-a0b8-425c-80a3-2cc8cb039587_1054x910.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2eMQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd971e293-a0b8-425c-80a3-2cc8cb039587_1054x910.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2eMQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd971e293-a0b8-425c-80a3-2cc8cb039587_1054x910.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2eMQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd971e293-a0b8-425c-80a3-2cc8cb039587_1054x910.jpeg" width="417" height="360.02846299810244" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d971e293-a0b8-425c-80a3-2cc8cb039587_1054x910.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:910,&quot;width&quot;:1054,&quot;resizeWidth&quot;:417,&quot;bytes&quot;:308545,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/189500458?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd971e293-a0b8-425c-80a3-2cc8cb039587_1054x910.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2eMQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd971e293-a0b8-425c-80a3-2cc8cb039587_1054x910.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2eMQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd971e293-a0b8-425c-80a3-2cc8cb039587_1054x910.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2eMQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd971e293-a0b8-425c-80a3-2cc8cb039587_1054x910.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2eMQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd971e293-a0b8-425c-80a3-2cc8cb039587_1054x910.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Don&#8217;t make a deal with the devil. Be more user-centered.</figcaption></figure></div><p>Let&#8217;s look at an example to clarify my point better.</p><h1>Real World Example</h1><p><strong>The scenario: </strong>Picture a B2B data analytics platform. A user logs in because they want to export last month&#8217;s report.</p><p>But instead of helping with that task, the product does this:</p><ol><li><p>An onboarding tour starts automatically. It introduces &#8220;Workspaces,&#8221; &#8220;Automations,&#8221; &#8220;Integrations,&#8221; and &#8220;Dashboards&#8221; before the user has even seen the main interface.</p></li><li><p>The user immediately skips the onboarding because the content feels irrelevant at that point in their flow. Another modal pops up. It claims to offer a path to an appropriate next step, but it&#8217;s really an upsell. The secondary CTA button says something like &#8220;No thanks, I don&#8217;t care about saving time,&#8221; which makes the user hesitate. (And that&#8217;s the dark pattern right there.) They eventually click it anyway because they don&#8217;t want to pay for the upgrade right now.</p></li><li><p>The user clicks into the reporting area via a primary navigation link, tries exporting the data they need, and hits an error message that says &#8220;Something went wrong.&#8221; No explanation. No recovery. No next step.</p></li><li><p>Completely frustrated, the user goes to settings, thinking they can troubleshoot the problem on their own. The top half of the page is basically a marketing panel for add-ons, and the actual configuration controls needed to fix the data issues are buried.</p></li></ol><p>Do any of those things resonate with you? Have you encountered any of these terrible design patterns? I know I have, and I hate when I encounter them.</p><p>None of that is conversational in the NCF sense. It breaks the mechanics that make conversation work.</p><ul><li><p>It does not start with user-centered intent.</p></li><li><p>It does not respect task-driven sequencing.</p></li><li><p>It does not support error recovery and repair.</p></li><li><p>It does not use language to create shared understanding.</p></li></ul><p>This is a monologue, not a conversation and I see it all too often in the real world. The system keeps interrupting the user, and it was most likely justified by a misreading of the basic principles of Conversational UX.</p><h1>A Quick and Easy Test</h1><p>Here&#8217;s a simple guerrilla-style test I&#8217;ve used to see whether the UI language in a product is user-based or system-based, and whether it&#8217;s sliding into dark patterns.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7QCP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde392364-cda4-454f-be00-ec8df34e8550_687x602.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7QCP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde392364-cda4-454f-be00-ec8df34e8550_687x602.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7QCP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde392364-cda4-454f-be00-ec8df34e8550_687x602.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7QCP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde392364-cda4-454f-be00-ec8df34e8550_687x602.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7QCP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde392364-cda4-454f-be00-ec8df34e8550_687x602.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7QCP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde392364-cda4-454f-be00-ec8df34e8550_687x602.jpeg" width="257" height="225.2023289665211" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/de392364-cda4-454f-be00-ec8df34e8550_687x602.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:602,&quot;width&quot;:687,&quot;resizeWidth&quot;:257,&quot;bytes&quot;:97944,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/189500458?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde392364-cda4-454f-be00-ec8df34e8550_687x602.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7QCP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde392364-cda4-454f-be00-ec8df34e8550_687x602.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7QCP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde392364-cda4-454f-be00-ec8df34e8550_687x602.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7QCP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde392364-cda4-454f-be00-ec8df34e8550_687x602.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7QCP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde392364-cda4-454f-be00-ec8df34e8550_687x602.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ol><li><p>Choose the interface you want to test: onboarding tour, a modal, an upsell/paywall moment, an error state, a settings page, etc. </p></li><li><p>Print the text that is on those screens on paper.</p></li><li><p>Hand the printouts to a colleague. They will be roleplaying &#8220;the system.&#8221;</p></li><li><p>Bring in a representative user, or another colleague if you don&#8217;t have access to a user for this quick test, and have them roleplay &#8220;the user.&#8221;</p></li><li><p>Give the &#8220;user&#8221; a task prompt: For example, &#8220;Find last month&#8217;s report and export it.&#8221;</p></li><li><p>The rule is the &#8220;user&#8221; can only ask questions out loud like a conversation to finish the task.</p></li><li><p>Then the &#8220;system&#8221; can only respond using the words on the paper. No improvising.</p></li></ol><p>You learn everything you need from what happens next. If the system cannot answer basic questions without making up new content or changing the language on the paper, your interface is not carrying its side of the conversation.</p><p>If the system keeps changing the subject to upgrades and tours, your interface is not cooperating. Also, take note if the system&#8217;s words try to shame the person, you are in dark-pattern territory.</p><h1>Conclusion</h1><p>Conversational UX is a design framework for how an interaction unfolds over time, based on how human conversations work in the real world. Turn-taking, context, repair, shared meaning, and progressive disclosure all matter more than a friendly tone.</p><p>When UXers oversimplify it to &#8220;just make it sound conversational,&#8221; they keep the voice but lose the user-centered intent. This is typically how I see persuasion tactics creep into design discussions and how many dark patterns end up in real products.</p><p>I hope this post inspires some of you to revisit the Conversational UX framework in your own designs. Thinking in terms of real conversation is a cheat code for user-centered writing and sequencing information.</p><p>Have any of you used the Conversational UX framework successfully in the past? Have you also seen it misinterpreted and misused in the real world? If so, comment here or DM me. I&#8217;d love to hear about your experiences with this niche topic. Thanks for reading!</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://trevorcalabro.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">UX Research in the Wild is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[5 Analogies for Big UX Concepts]]></title><description><![CDATA[Real-World Ways to Explain Usability & Accessibility]]></description><link>https://trevorcalabro.substack.com/p/5-analogies-for-big-ux-concepts</link><guid isPermaLink="false">https://trevorcalabro.substack.com/p/5-analogies-for-big-ux-concepts</guid><dc:creator><![CDATA[Trevor Calabro]]></dc:creator><pubDate>Thu, 19 Feb 2026 15:14:16 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/1839c055-7f57-4487-aca4-ceeb36552d9b_694x619.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Summary: </strong>Over the years, I&#8217;ve learned that one of the fastest ways to communicate UX concepts is to borrow examples from the real world, straight out of Don Norman&#8217;s <em>The Design of Everyday Things</em> playbook. Here are 5 analogies I use all the time because they help people quickly understand these high-level ideas.</p><div><hr></div><p>I&#8217;ve been accused of overly complicating and intellectualizing UX concepts. So over the years, I&#8217;ve tested different ways of explaining things with a goal of sharing ideas with others with the least amount of explanation required. Of course, this isn&#8217;t a new way of thinking about UX concepts. <a href="https://en.wikipedia.org/wiki/Don_Norman">Don Norman</a> wrote an entire book about this almost 40 years ago.</p><p>In the vein of Don Norman&#8217;s <em><a href="https://www.amazon.com/Design-Everyday-Things-Donald-Norman/dp/0465067107">The Design of Everyday Things</a></em> style communication, I&#8217;ve decided to share the 5 most useful real-world analogies I use to help other UXers understand some foundational concepts that are often overlooked or misunderstood.</p><h1>1. Push or Pull Door Handles</h1><p>For those of you who need a refresher, this one is taken directly from <em>The Design of Everyday Things</em>. This analogy still holds up today. It&#8217;s one of the simplest ways to explain affordances and signifiers without sounding like you&#8217;re giving a lecture.</p><p>Most of us have walked up to a door, grabbed the handle, and pulled, only to realize we were supposed to push. It&#8217;s instantly relatable which is why it makes for the perfect analogy. The classic version is the glass door with a handle on both sides. Many aesthetically-minded people love those doors because they look sleek and clean. (The parallel to UX design is crazy, right?) But functionally, they create complete ambiguity when a real human walks up and tries to open them.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ll2Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79c01e99-1079-457a-b94b-fb27aeaec3e6_1024x1200.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ll2Q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79c01e99-1079-457a-b94b-fb27aeaec3e6_1024x1200.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Ll2Q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79c01e99-1079-457a-b94b-fb27aeaec3e6_1024x1200.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Ll2Q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79c01e99-1079-457a-b94b-fb27aeaec3e6_1024x1200.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Ll2Q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79c01e99-1079-457a-b94b-fb27aeaec3e6_1024x1200.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ll2Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79c01e99-1079-457a-b94b-fb27aeaec3e6_1024x1200.jpeg" width="444" height="520.3125" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/79c01e99-1079-457a-b94b-fb27aeaec3e6_1024x1200.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1200,&quot;width&quot;:1024,&quot;resizeWidth&quot;:444,&quot;bytes&quot;:618478,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/188134245?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79c01e99-1079-457a-b94b-fb27aeaec3e6_1024x1200.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Ll2Q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79c01e99-1079-457a-b94b-fb27aeaec3e6_1024x1200.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Ll2Q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79c01e99-1079-457a-b94b-fb27aeaec3e6_1024x1200.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Ll2Q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79c01e99-1079-457a-b94b-fb27aeaec3e6_1024x1200.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Ll2Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79c01e99-1079-457a-b94b-fb27aeaec3e6_1024x1200.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">If I had a dollar for every time I pulled a push door and looked like an idiot, I&#8217;d be rich.</figcaption></figure></div><p>Once you get someone thinking about these common doors, I then hit them with the UX concept:</p><ul><li><p><strong>Affordance</strong> = what actions are actually possible in the world because of the object&#8217;s properties (a door handle affords pulling, a flat plate affords pushing, a button affords pressing).</p></li><li><p><strong>Signifier</strong> = the perceivable cue that tells you what action to take (a protruding handle is a cue for pulling; a push plate is a cue for pushing; a label like &#8220;PUSH&#8221; is a cue too).</p></li></ul><div class="pullquote"><p>Unfortunately, I&#8217;ve noticed that some more aesthetic-minded UXers have picked up a watered-down, skewed version of this concept secondhand. So &#8220;affordances&#8221; and &#8220;signifiers&#8221; become vague buzzwords, and the practical point gets lost.</p></div><p>That point here is simple. Our interface designs should not make users guess what action is possible or what will happen next. When a UI is overly focused on being clean, modern, or minimalist, it often strips away the very cues people rely on. Icon-only buttons, links that look like plain text, controls that look disabled when they aren&#8217;t, and unlabeled actions all recreate the same push pull door moment. The user hesitates, makes an error, or backtracks, and then we call it &#8220;user error&#8221; when it was really a predictable outcome of bad design. If users have to guess, it&#8217;s not intuitive. </p><h1>2. Curb Ramps</h1><p>Curb ramps on street corners are one of my favorite analogies because they make the case for accessibility without sounding like you&#8217;re making a moral argument. They were built so wheelchair users could actually navigate sidewalks and crosswalks. But once you notice them, you start seeing how many other people benefit from them in day-to-day life. A parent pushing a stroller. A delivery person pushing a dolly stacked with boxes. Someone walking with a cane. Someone pulling a suitcase. The examples go on and on.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xR-w!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1247dbb3-94e7-4047-ac26-a6b4f76b6650_1939x819.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xR-w!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1247dbb3-94e7-4047-ac26-a6b4f76b6650_1939x819.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xR-w!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1247dbb3-94e7-4047-ac26-a6b4f76b6650_1939x819.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xR-w!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1247dbb3-94e7-4047-ac26-a6b4f76b6650_1939x819.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xR-w!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1247dbb3-94e7-4047-ac26-a6b4f76b6650_1939x819.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xR-w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1247dbb3-94e7-4047-ac26-a6b4f76b6650_1939x819.jpeg" width="1456" height="615" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1247dbb3-94e7-4047-ac26-a6b4f76b6650_1939x819.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:615,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1086301,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/188134245?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1247dbb3-94e7-4047-ac26-a6b4f76b6650_1939x819.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xR-w!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1247dbb3-94e7-4047-ac26-a6b4f76b6650_1939x819.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xR-w!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1247dbb3-94e7-4047-ac26-a6b4f76b6650_1939x819.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xR-w!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1247dbb3-94e7-4047-ac26-a6b4f76b6650_1939x819.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xR-w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1247dbb3-94e7-4047-ac26-a6b4f76b6650_1939x819.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The positive unintended consequences of basic accessibility improvements are endless.</figcaption></figure></div><div class="pullquote"><p><a href="https://www.section508.gov/blog/benefits-accessible-design/">Accessibility changes rarely only help one group</a>. They usually remove friction that lots of people run into, just in different ways and at different times.</p></div><p>The transfer to UX is pretty direct. Color contrast is not just for low-vision users. It also helps people using their phone in bright sunlight, people with tired eyes, and people trying to scan content quickly. Larger click targets are not just for motor impairments. They also help everyone on a bumpy train, using one hand or rushing. Clear focus states and keyboard navigation are not just for a small segment of users. They are part of building interfaces that work reliably when people are in less-than-ideal conditions.</p><p>So when someone frames accessibility as a nice-to-have, I bring them back to curb ramps. We did not build those because someone wanted to be nice. We built them because without them, the system does not work for a portion of the population. And once you build them, you realize you made the system better for almost everyone.</p><h1>3. Unlabeled Spice Rack</h1><p>This one is basically the <a href="https://www.nngroup.com/articles/recognition-and-recall/">classic recognition vs recall heuristic</a> in physical form. Imagine a spice rack where every spice has been dumped into identical glass jars for a clean, aesthetic look. I can&#8217;t tell you how many times I&#8217;ve seen this setup on an HGTV show. The interior decorator comes into someone&#8217;s kitchen, remodels it, and arranges the spices by color. Really cool idea in theory, until you know, you need to actually cook in your kitchen. Cumin next to ground mustard. Paprika next to chili powder. Garlic powder next to onion powder. Everything looks &#8220;clean&#8221; and perfectly organized, and yet cooking in that kitchen would be super annoying because now you&#8217;re doing memory tests.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iiks!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29f6a189-abec-41e6-b1da-0dca7422ba0f_762x523.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iiks!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29f6a189-abec-41e6-b1da-0dca7422ba0f_762x523.jpeg 424w, https://substackcdn.com/image/fetch/$s_!iiks!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29f6a189-abec-41e6-b1da-0dca7422ba0f_762x523.jpeg 848w, https://substackcdn.com/image/fetch/$s_!iiks!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29f6a189-abec-41e6-b1da-0dca7422ba0f_762x523.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!iiks!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29f6a189-abec-41e6-b1da-0dca7422ba0f_762x523.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iiks!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29f6a189-abec-41e6-b1da-0dca7422ba0f_762x523.jpeg" width="512" height="351.41207349081367" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/29f6a189-abec-41e6-b1da-0dca7422ba0f_762x523.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:523,&quot;width&quot;:762,&quot;resizeWidth&quot;:512,&quot;bytes&quot;:348476,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/188134245?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29f6a189-abec-41e6-b1da-0dca7422ba0f_762x523.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!iiks!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29f6a189-abec-41e6-b1da-0dca7422ba0f_762x523.jpeg 424w, https://substackcdn.com/image/fetch/$s_!iiks!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29f6a189-abec-41e6-b1da-0dca7422ba0f_762x523.jpeg 848w, https://substackcdn.com/image/fetch/$s_!iiks!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29f6a189-abec-41e6-b1da-0dca7422ba0f_762x523.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!iiks!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29f6a189-abec-41e6-b1da-0dca7422ba0f_762x523.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Good luck making dinner. <em>Hahahaha.</em></figcaption></figure></div><p>That is what happens in software when teams confuse &#8220;minimal&#8221; with &#8220;clear.&#8221; When interactive UI elements are unlabeled, you&#8217;re supposed to learn them through trial and error. Some will argue, just like with the uniform spice rack, that everything looks elegant, therefore it&#8217;s good, even delightful. But in the real world, we all know we&#8217;d hate that because it forces users to recall what things mean instead of letting them recognize them.</p><div class="pullquote"><p>The bottom line is, if you want users to move quickly and confidently through your digital products, make the interface do more of the remembering so the user doesn&#8217;t have to.</p></div><blockquote><p><strong>&#128221;NOTE: </strong>I think about this the same way I think about people who organize their bookshelves by the color of the book spines. Sure, it makes for a great photo. But I have a hard time believing anyone actually reads those books, because good luck finding a specific one when everything is color-coded. It&#8217;s the sameish problem as the Martha Stewart-style unlabeled, uniform container spice rack. In practice, you&#8217;d have to memorize the exact order of everything, then do this weird mental translation from &#8220;the thing I need&#8221; to &#8220;the color it probably is,&#8221; and then back again.</p></blockquote><h1>4. IKEA Missing Screw</h1><p>IKEA instructions assume a world that almost never exists.</p><p>The sheet shows Step 1, a little diagram with four screws, and a clear message that you will need all four to attach the bracket. Then you look down and you only have three screws. Everything was fine until the exact moment it wasn&#8217;t, and now you&#8217;re stuck. You can&#8217;t continue, you can&#8217;t easily backtrack, and the only &#8220;next step&#8221; is to stop building furniture and start troubleshooting the system.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ydaH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F368cf07e-7002-4d21-a928-cd9f7f63ab78_1536x1024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ydaH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F368cf07e-7002-4d21-a928-cd9f7f63ab78_1536x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ydaH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F368cf07e-7002-4d21-a928-cd9f7f63ab78_1536x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ydaH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F368cf07e-7002-4d21-a928-cd9f7f63ab78_1536x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ydaH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F368cf07e-7002-4d21-a928-cd9f7f63ab78_1536x1024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ydaH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F368cf07e-7002-4d21-a928-cd9f7f63ab78_1536x1024.jpeg" width="539" height="359.4567307692308" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/368cf07e-7002-4d21-a928-cd9f7f63ab78_1536x1024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:539,&quot;bytes&quot;:814425,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/188134245?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F368cf07e-7002-4d21-a928-cd9f7f63ab78_1536x1024.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ydaH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F368cf07e-7002-4d21-a928-cd9f7f63ab78_1536x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ydaH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F368cf07e-7002-4d21-a928-cd9f7f63ab78_1536x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ydaH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F368cf07e-7002-4d21-a928-cd9f7f63ab78_1536x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ydaH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F368cf07e-7002-4d21-a928-cd9f7f63ab78_1536x1024.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Missing a critical piece. Now what?</figcaption></figure></div><p>That&#8217;s why this analogy works so well for explaining just-in-time information and point-of-need guidance. A lot of teams try to solve usability problems by dumping instructions on people up front. You seen it before, multi-step onboarding tours, long docs, walls of text, and giant process pages. The intention is good, but it assumes users will read, remember, and correctly apply guidance later when it matters. But in the real world, people don&#8217;t work that way, they learn in context.</p><div class="pullquote"><p>Users need the right information precisely when they hit a decision point, a risk point, or a moment of uncertainty. That&#8217;s when the brain is ready to absorb it, because it&#8217;s immediately useful.</p></div><p>The UX version of &#8220;the missing screw&#8221; is all over the place. It&#8217;s the form that lets you fill out fifteen fields and only tells you after you hit submit that one of them was required. It&#8217;s the workflow that allows an invalid state and only throws an error after you&#8217;ve already invested time.</p><p>Decades of HCI research have proven that the fix is not &#8220;write better instructions.&#8221; The fix is to design the workflow so guidance appears at the moment it prevents friction. It&#8217;s about contextual guardrails that make the right action obvious and easier than the wrong one. The right info at the wrong time is still the wrong info.</p><h1>5. Express Lane</h1><p>I&#8217;m sure you&#8217;ve seen the &#8220;10 items or less&#8221; checkout lines at your local grocery store. And of course, someone rolls into that lane with a cart full of groceries, nobody says anything, and everyone waiting in line learns the actual rule. The real-world rule is not 10 items or less. The real-world rule is whatever gets enforced, which in practice often means, &#8220;Go ahead, all you Karens and Kevins, do whatever you want!&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rnNn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b02994c-c5bf-460a-a2da-248750135228_1024x1422.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rnNn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b02994c-c5bf-460a-a2da-248750135228_1024x1422.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rnNn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b02994c-c5bf-460a-a2da-248750135228_1024x1422.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rnNn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b02994c-c5bf-460a-a2da-248750135228_1024x1422.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rnNn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b02994c-c5bf-460a-a2da-248750135228_1024x1422.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rnNn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b02994c-c5bf-460a-a2da-248750135228_1024x1422.jpeg" width="314" height="436.04296875" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6b02994c-c5bf-460a-a2da-248750135228_1024x1422.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1422,&quot;width&quot;:1024,&quot;resizeWidth&quot;:314,&quot;bytes&quot;:923872,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/188134245?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b02994c-c5bf-460a-a2da-248750135228_1024x1422.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rnNn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b02994c-c5bf-460a-a2da-248750135228_1024x1422.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rnNn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b02994c-c5bf-460a-a2da-248750135228_1024x1422.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rnNn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b02994c-c5bf-460a-a2da-248750135228_1024x1422.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rnNn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b02994c-c5bf-460a-a2da-248750135228_1024x1422.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="pullquote"><p>The grocery store express lane analogy is one of the fastest ways I know to explain why ResearchOps policies don&#8217;t solve UX problems by themselves.</p></div><p>Some UX teams love writing rules like design guidelines, process documents, and governance statements etc. The problem is that a rule without a mechanism is not a solution. It&#8217;s a suggestion. And if the system makes it easy to ignore, people will ignore it, especially under time pressure.</p><p>That&#8217;s why enforcement in product design usually looks like guardrails, not reminders. If a field is required, the system should enforce it. If a workflow has a critical step, the system should prevent you from skipping it. If consistency matters, the design system should be supported by tooling, review gates, and reusable components that make the compliant path the default path.</p><p>Otherwise, you end up with the product equivalent of the express lane, where the sign is big, the intent is clear, but the experience still breaks because the system never actually changes behavior.</p><h1>The Common Thread</h1><p>The reason I keep coming back to these analogies is that they all expose the same underlying problem, the mismatch between what a system claims to support and what it actually makes easy.</p><p>The push/pull door looks elegant but makes people guess. The unlabeled spice rack looks organized but forces memory tests. The IKEA sheet pretends the world is linear and tidy until one missing part collapses the whole flow. The express lane sign claims there&#8217;s a rule, but the system is designed in a way that allows the rule to be ignored. Even the curb ramp example, which is the most optimistic of the five, still makes the same point from the opposite direction. When you design for real constraints, the system works better for more people.</p><p>In other words, these are not cute stories. They&#8217;re small, everyday demonstrations of how humans actually behave. They help people see that &#8220;usability&#8221; is not taste, and accessibility is not a special case, and process is not a PDF. It&#8217;s all just foundational user-centered system design.</p><p>And once someone sees that pattern, you usually do not need to argue about it. The conversation shifts. Now you can talk about the product with the same common sense people already apply to doors, sidewalks, kitchens, and grocery stores.</p><h1>Analogies Playbook</h1><p>Here&#8217;s the simplest way I&#8217;ve found to use analogies without making it awkward.</p><p>First, pick an analogy that almost everyone has personally experienced. If they have to imagine it, it loses the effect.</p><p>Then run a short sequence that makes them do the work of connecting the dots:</p><p><strong>Introduce it quickly: </strong>&#8220;Let me use a quick real-world analogy.&#8221;</p><p><strong>Ask the recognition question:</strong></p><ul><li><p>&#8220;Have you ever pulled a door that was supposed to be pushed?&#8221;</p></li><li><p>&#8220;Have you ever tried to cook in a kitchen where nothing is labeled?&#8221;</p></li><li><p>&#8220;Have you ever hit a step in instructions where you were missing a part?&#8221;</p></li></ul><p><strong>Let them confirm it:</strong></p><ul><li><p>Give them a second to say yes and react. This is the whole point. Now you have shared reality.</p></li></ul><p><strong>Name the mechanism in plain language:</strong></p><ul><li><p>&#8220;That&#8217;s what happens when the design makes people guess.&#8221;</p></li><li><p>&#8220;That&#8217;s what happens when the system relies on memory instead of recognition.&#8221;</p></li><li><p>&#8220;That&#8217;s what happens when guidance shows up too early or too late.&#8221;</p></li></ul><p><strong>Transfer it directly to the product:</strong></p><ul><li><p>&#8220;And that&#8217;s why this button needs a label.&#8221;</p></li><li><p>&#8220;And that&#8217;s why the validation needs to happen here, not at the end.&#8221;</p></li><li><p>&#8220;And that&#8217;s why a policy needs an actual guardrail in the workflow.&#8221;</p></li></ul><p>If you do it right, the analogy is not the argument. It&#8217;s the door you walk through so you can have a normal conversation about behavior, constraints, and predictable failure modes. It gets people out of the mindset of &#8220;prove UX to me&#8221; and into the mindset of &#8220;yeah, obviously we should not make users guess.&#8221;</p><h1>Conclusion</h1><p>If there&#8217;s a theme running through all five of these, it&#8217;s that most UX debates aren&#8217;t really about UX. They&#8217;re about how someone is framing the problem. Analogies are the quickest way I know to reset that framing because they move the conversation out of opinions and into shared, lived experience. Once someone has mentally replayed the push/pull door, or pictured themselves cooking with unlabeled spices, you don&#8217;t have to fight as hard for the point. This takes the conversation out of academic theory land and brings it down to earth. Once you&#8217;ve found that relatable trigger, you can talk about the product with the same common sense people already apply to doors, sidewalks, kitchens, and grocery stores.</p><p>Do you have real-world analogies you use to explain UX ideas to others? If so, drop them in the comments or DM me. I&#8217;m always looking for more. As always, thanks for reading.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://trevorcalabro.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">UX Research in the Wild is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[A Love Letter to UX Research: Part 3]]></title><description><![CDATA[Some Valentine's Day Fun]]></description><link>https://trevorcalabro.substack.com/p/a-love-letter-to-ux-research-part-66d</link><guid isPermaLink="false">https://trevorcalabro.substack.com/p/a-love-letter-to-ux-research-part-66d</guid><dc:creator><![CDATA[Trevor Calabro]]></dc:creator><pubDate>Sat, 14 Feb 2026 20:24:03 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/51ef5845-afb3-48ec-8019-14cd0f0f9301_694x619.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Summary:</strong> Every year, I write a stupid love letter to my true love, UX Research. Enjoy!</p><div><hr></div><p>Most of what I write on this blog is pretty dry and dense, so I try to keep it from reading like an academic paper by doing two things. I use goofy retro illustrations, and every now and then I post something intentionally silly. Writing this blog helps me clarify how I think about UX Research, but I also like having fun with it.</p><p>I&#8217;ve added links to a bunch of past posts throughout this love letter. If the dumb rhymes nudge you to click a couple and poke around, even better. Either way, I hope you enjoy the poem.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Qu-_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067f5ad8-ed69-4405-9f81-2dc421715b5b_2055x765.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Qu-_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067f5ad8-ed69-4405-9f81-2dc421715b5b_2055x765.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Qu-_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067f5ad8-ed69-4405-9f81-2dc421715b5b_2055x765.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Qu-_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067f5ad8-ed69-4405-9f81-2dc421715b5b_2055x765.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Qu-_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067f5ad8-ed69-4405-9f81-2dc421715b5b_2055x765.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Qu-_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067f5ad8-ed69-4405-9f81-2dc421715b5b_2055x765.jpeg" width="1456" height="542" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/067f5ad8-ed69-4405-9f81-2dc421715b5b_2055x765.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:542,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:220045,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/187980753?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067f5ad8-ed69-4405-9f81-2dc421715b5b_2055x765.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Qu-_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067f5ad8-ed69-4405-9f81-2dc421715b5b_2055x765.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Qu-_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067f5ad8-ed69-4405-9f81-2dc421715b5b_2055x765.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Qu-_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067f5ad8-ed69-4405-9f81-2dc421715b5b_2055x765.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Qu-_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067f5ad8-ed69-4405-9f81-2dc421715b5b_2055x765.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Roses are red,<br>UXR methods are strict,<br><a href="https://trevorcalabro.substack.com/p/top-5-ux-concepts-worth-rethinking">If your &#8220;insight&#8221; is vibes</a>,<br>I will call it out quick.</p><p>Some teams want shortcuts,<br><a href="https://trevorcalabro.substack.com/p/the-dangerous-appeal-of-fake-users">A chatbot, a hack,</a><br>But real human behavior<br>Is what most teams lack.</p><p>Icons are silent,<br>They do not explain,<br><a href="https://trevorcalabro.substack.com/p/every-icon-needs-a-label">So label those things</a><br>Or users will experience pain.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!G18D!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e448d39-3f4e-4d58-9cb5-dce2a7b3048c_2344x959.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!G18D!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e448d39-3f4e-4d58-9cb5-dce2a7b3048c_2344x959.jpeg 424w, https://substackcdn.com/image/fetch/$s_!G18D!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e448d39-3f4e-4d58-9cb5-dce2a7b3048c_2344x959.jpeg 848w, https://substackcdn.com/image/fetch/$s_!G18D!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e448d39-3f4e-4d58-9cb5-dce2a7b3048c_2344x959.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!G18D!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e448d39-3f4e-4d58-9cb5-dce2a7b3048c_2344x959.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!G18D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e448d39-3f4e-4d58-9cb5-dce2a7b3048c_2344x959.jpeg" width="1456" height="596" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9e448d39-3f4e-4d58-9cb5-dce2a7b3048c_2344x959.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:596,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:480402,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/187980753?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e448d39-3f4e-4d58-9cb5-dce2a7b3048c_2344x959.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!G18D!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e448d39-3f4e-4d58-9cb5-dce2a7b3048c_2344x959.jpeg 424w, https://substackcdn.com/image/fetch/$s_!G18D!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e448d39-3f4e-4d58-9cb5-dce2a7b3048c_2344x959.jpeg 848w, https://substackcdn.com/image/fetch/$s_!G18D!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e448d39-3f4e-4d58-9cb5-dce2a7b3048c_2344x959.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!G18D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e448d39-3f4e-4d58-9cb5-dce2a7b3048c_2344x959.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://trevorcalabro.substack.com/p/most-ui-animations-shouldnt-exist?utm_source=publication-search">Animations</a> sparkle,<br>They dance, they insist,<br>But most of the time<br>They should not exist.</p><p><a href="https://trevorcalabro.substack.com/p/why-your-navigation-sucks">Your nav is a maze</a>,<br>Your labels are bad,<br>It&#8217;s not &#8220;user error,&#8221;<br>It&#8217;s your design that is sad.</p><p>And <a href="https://trevorcalabro.substack.com/p/calculating-the-roi-of-ux?utm_source=publication-search">ROI is awkward</a>,<br>But still we persist,<br>Because UX work that saves money<br>Will not be dismissed.</p><p>So here&#8217;s my confession,<br>My Valentine truth,<br>I love you, UX Research,<br>Because <a href="https://trevorcalabro.substack.com/p/rethinking-correlation?utm_source=publication-search">you demand proof</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UNhv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fead9f429-cee3-4034-ae90-d0dc1eed049b_1232x704.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UNhv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fead9f429-cee3-4034-ae90-d0dc1eed049b_1232x704.jpeg 424w, https://substackcdn.com/image/fetch/$s_!UNhv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fead9f429-cee3-4034-ae90-d0dc1eed049b_1232x704.jpeg 848w, https://substackcdn.com/image/fetch/$s_!UNhv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fead9f429-cee3-4034-ae90-d0dc1eed049b_1232x704.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!UNhv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fead9f429-cee3-4034-ae90-d0dc1eed049b_1232x704.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UNhv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fead9f429-cee3-4034-ae90-d0dc1eed049b_1232x704.jpeg" width="336" height="192" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ead9f429-cee3-4034-ae90-d0dc1eed049b_1232x704.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:704,&quot;width&quot;:1232,&quot;resizeWidth&quot;:336,&quot;bytes&quot;:196331,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/187980753?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fead9f429-cee3-4034-ae90-d0dc1eed049b_1232x704.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!UNhv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fead9f429-cee3-4034-ae90-d0dc1eed049b_1232x704.jpeg 424w, https://substackcdn.com/image/fetch/$s_!UNhv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fead9f429-cee3-4034-ae90-d0dc1eed049b_1232x704.jpeg 848w, https://substackcdn.com/image/fetch/$s_!UNhv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fead9f429-cee3-4034-ae90-d0dc1eed049b_1232x704.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!UNhv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fead9f429-cee3-4034-ae90-d0dc1eed049b_1232x704.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>With all my heart (and a dash of skepticism),</p><p><em>Still, A Love-Struck UX Researcher</em></p><h1>Happy Valentine&#8217;s Day, everyone!</h1><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://trevorcalabro.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">UX Research in the Wild is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[5 UX Ideas That Often Do More Harm Than Good]]></title><description><![CDATA[Commonly Misused UX Principles]]></description><link>https://trevorcalabro.substack.com/p/5-ux-ideas-that-often-do-more-harm</link><guid isPermaLink="false">https://trevorcalabro.substack.com/p/5-ux-ideas-that-often-do-more-harm</guid><dc:creator><![CDATA[Trevor Calabro]]></dc:creator><pubDate>Sat, 07 Feb 2026 13:32:14 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c87fef58-ca95-42e1-a628-b08d29463798_694x619.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Summary: </strong>5 UX ideas that are widely repeated, frequently misunderstood, and often used as shortcuts in design and research decisions. I explain what each idea actually means, how I&#8217;ve seen it misapplied in real products, and a practical rule of thumb to help you spot the issue and course-correct quickly.</p><div><hr></div><p>Every few days, the &#8220;UX internetverse&#8221; seems to latch onto an old-school, time-tested UX idea and totally misinterpret its meaning. Sometimes that misinterpretation is, interestingly enough, counter to the original intention of the idea in the first place. Despite being backed by 30+ years of HCI research, many of the folks misrepresenting our discipline online seem to be completely unaware that they are doing this. Then those ideas, most of which have some sort of shorthand name, get weaponized and turned into a buzzword of sorts, and they lose their practical meaning.</p><p>In this post, I want to highlight five of the most commonly weaponized UX buzzwords and lazy shorthand misinterpretations, and shed light on what I see happening with them in the real world. My hope is that calling out these things will encourage other UXers to recognize them when they crop up in their day-to-day work and then course-correct.</p><blockquote><p><strong>&#9888;&#65039; Disclaimer:</strong> None of the 5 ideas below are inherently bad, and most of them started as genuinely useful attempts to describe how people learn, perceive, and move through digital systems. But the way these ideas get misapplied in practice is exactly how teams end up shipping friction with a straight face, often while believing they are doing user-centered work.</p></blockquote><h1>Aesthetic-Usability Effect</h1><p>The aesthetic-usability effect describes a real phenomenon, which is that users can perceive visually appealing interfaces as easier to use. Still, the critical word is perceive because the effect is more about a bias in perception, not as much a method for increasing ease-of-use. That difference matters a lot once you put a design in front of real users trying to complete real tasks in the real world.</p><p>In the real world, I see aesthetically-driven UXers invoke this effect as if it gives them permission to overlook usability concerns. They often seem to think that strong visuals can compensate for interaction problems, unclear information hierarchy, and weak affordances. That flawed logic almost always collapses the moment you run a legit usability test and watch a real user struggle through a basic workflow, no matter how great the UI looks.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NvSq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F228ec4de-9519-4016-9c86-403e530e03d1_676x1383.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NvSq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F228ec4de-9519-4016-9c86-403e530e03d1_676x1383.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NvSq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F228ec4de-9519-4016-9c86-403e530e03d1_676x1383.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NvSq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F228ec4de-9519-4016-9c86-403e530e03d1_676x1383.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NvSq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F228ec4de-9519-4016-9c86-403e530e03d1_676x1383.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NvSq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F228ec4de-9519-4016-9c86-403e530e03d1_676x1383.jpeg" width="220" height="450.0887573964497" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/228ec4de-9519-4016-9c86-403e530e03d1_676x1383.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1383,&quot;width&quot;:676,&quot;resizeWidth&quot;:220,&quot;bytes&quot;:381454,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/187192520?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F228ec4de-9519-4016-9c86-403e530e03d1_676x1383.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NvSq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F228ec4de-9519-4016-9c86-403e530e03d1_676x1383.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NvSq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F228ec4de-9519-4016-9c86-403e530e03d1_676x1383.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NvSq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F228ec4de-9519-4016-9c86-403e530e03d1_676x1383.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NvSq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F228ec4de-9519-4016-9c86-403e530e03d1_676x1383.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Apple&#8217;s V1.0 Liquid Glass visual styling is a perfect example of a misunderstanding of the aesthetic-usability effect.</figcaption></figure></div><p>A clean layout, modern style, and pixel-perfect, polished design can absolutely make a product feel more approachable. Still, those things do not magically reduce cognitive load, clarify system state, prevent errors, or help users form accurate mental models within interfaces.</p><div class="pullquote"><p>The aesthetic-usability effect is why aesthetics alone so often become an alibi for skipping behavioral research and calling it &#8216;done&#8217; after a few rounds of preference-driven feedback.</p></div><blockquote><p><strong>&#128161; Rule of thumb:</strong> Validate usability with task-based testing before investing heavily in visual polish.</p></blockquote><h1>User Delight</h1><p>The term user delight shows up in OKRs, UXR job postings, and product strategy decks so often that it can start to feel like a foundational UX concept. The problem is that teams rarely define what &#8220;delight&#8221; means, so they default to adding decorative touches on top of a user flow and calling it a day. That&#8217;s how non-functional UI elements find their way into an interface even when they don&#8217;t improve clarity, speed, or task completion. In fact, most of the time, adding decorative-only elements into your designs has been shown to harm usability and accessibility.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fhux!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abdcb19-bf87-446f-bf15-443b1baa7d4d_649x666.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fhux!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abdcb19-bf87-446f-bf15-443b1baa7d4d_649x666.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fhux!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abdcb19-bf87-446f-bf15-443b1baa7d4d_649x666.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fhux!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abdcb19-bf87-446f-bf15-443b1baa7d4d_649x666.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fhux!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abdcb19-bf87-446f-bf15-443b1baa7d4d_649x666.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fhux!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abdcb19-bf87-446f-bf15-443b1baa7d4d_649x666.jpeg" width="289" height="296.57010785824343" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8abdcb19-bf87-446f-bf15-443b1baa7d4d_649x666.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:666,&quot;width&quot;:649,&quot;resizeWidth&quot;:289,&quot;bytes&quot;:167968,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/187192520?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abdcb19-bf87-446f-bf15-443b1baa7d4d_649x666.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fhux!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abdcb19-bf87-446f-bf15-443b1baa7d4d_649x666.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fhux!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abdcb19-bf87-446f-bf15-443b1baa7d4d_649x666.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fhux!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abdcb19-bf87-446f-bf15-443b1baa7d4d_649x666.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fhux!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abdcb19-bf87-446f-bf15-443b1baa7d4d_649x666.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I&#8217;m spinning. Aren&#8217;t you delighted?</figcaption></figure></div><p>When teams set out to &#8220;add delight&#8221; without grounding it in interaction best practices, they usually reach for surface-level tools like cheeky microcopy, celebratory animations, and visual polish, even when the underlying task flow is still confusing. That&#8217;s how products end up actually being perceived as slow loading, inaccessible, and more cognitively taxing while still being defended as &#8220;more delightful.&#8221;</p><p>A better way to think about delight comes from Bill Scott&#8217;s concept of &#8220;interesting moments,&#8221; which frames delight as an outcome of a system that feels responsive. He describes these moments as well-timed, supportive transitions where users either stay in a flow state or get knocked out of it. In this framing, delight shows up when the system prevents errors, gives timely feedback, maintains continuity, and reduces effort in ways users actually feel during real-world usage.</p><div class="pullquote"><p>Bill Scott makes the argument that users don&#8217;t consciously notice real delight when they&#8217;re mid-task; instead, user delight is experienced as a byproduct of smooth, low-effort, responsive, and predictable systems.</p></div><blockquote><p><strong>&#128161; Rule of thumb:</strong> <strong> </strong>Reduce effort before adding anything new by removing steps, consolidating decisions, and eliminating unnecessary confirmations. That&#8217;s what&#8217;s actually been proven to produce user delight in the real world.</p></blockquote><h1>Jakob&#8217;s Law</h1><p>Jakob&#8217;s Law is one of the most grounded principles we have because it recognizes that users don&#8217;t learn interfaces in isolation; they learn patterns through repeated exposure across the tools they use every day. The practical implication is that leveraging time-tested interaction conventions reduces cognitive load because those conventions align with what users already know how to do.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5zxT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76a72ad1-81eb-4da3-bdbd-62ef1ca065d7_2186x1477.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5zxT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76a72ad1-81eb-4da3-bdbd-62ef1ca065d7_2186x1477.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5zxT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76a72ad1-81eb-4da3-bdbd-62ef1ca065d7_2186x1477.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5zxT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76a72ad1-81eb-4da3-bdbd-62ef1ca065d7_2186x1477.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5zxT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76a72ad1-81eb-4da3-bdbd-62ef1ca065d7_2186x1477.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5zxT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76a72ad1-81eb-4da3-bdbd-62ef1ca065d7_2186x1477.jpeg" width="1456" height="984" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/76a72ad1-81eb-4da3-bdbd-62ef1ca065d7_2186x1477.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:984,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:908619,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/187192520?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76a72ad1-81eb-4da3-bdbd-62ef1ca065d7_2186x1477.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5zxT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76a72ad1-81eb-4da3-bdbd-62ef1ca065d7_2186x1477.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5zxT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76a72ad1-81eb-4da3-bdbd-62ef1ca065d7_2186x1477.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5zxT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76a72ad1-81eb-4da3-bdbd-62ef1ca065d7_2186x1477.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5zxT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76a72ad1-81eb-4da3-bdbd-62ef1ca065d7_2186x1477.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">We know how to make forms that work, yet I see forms like this every day.</figcaption></figure></div><p>The reason Jakob&#8217;s Law ends up doing harm is not because the idea is flawed, but because it gets weaponized in design reviews as a rhetorical shield. I see this in the form of retroactive justification, where a UXer proposes an entirely new interaction pattern, gets challenged on usability, and then tries to &#8220;prove&#8221; its validity by citing a single screenshot from a random, cherry-picked product.</p><p>The other common misuse is copying patterns from famous FAANG companies and treating them as universal best practices. This practice ignores the fact that huge ecosystems can train users over time through repeated exposure, while most other products depend on users being able to complete one-off or infrequent tasks quickly, correctly, and without having to learn a new interaction language.</p><div class="pullquote"><p>A more responsible way to apply Jakob&#8217;s Law is to turn it into a concrete exercise rather than a vague principle: define the user task in plain language, gather multiple examples from similar products serving similar users, and then look for the repeated patterns that users are most likely to have internalized.</p></div><p>Doing it that way shifts the conversation away from personal taste and toward actual user exposure in the real world.</p><blockquote><p><strong>&#128161; Rule of thumb:</strong> Use familiar UI controls and patterns as a first step (standard buttons, menus, layouts, search, labels, etc.) unless you have evidence that users don&#8217;t recognize them in your context.</p></blockquote><h1>UI Element-Level Animations</h1><p>UI element-level animations are not inherently bad. When used properly, they can clarify state changes, reinforce cause and effect, and make complex interfaces feel more responsive. In the real world, though, they&#8217;re often treated as a default layer of polish. This becomes especially problematic when animations trigger automatically, loop indefinitely, or exist mainly to make an interface feel &#8220;modern&#8221; instead of helping users understand what&#8217;s happening.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LMJ9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c7db9c4-c52c-4dd7-b385-76341ad4de4a_1782x977.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LMJ9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c7db9c4-c52c-4dd7-b385-76341ad4de4a_1782x977.jpeg 424w, https://substackcdn.com/image/fetch/$s_!LMJ9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c7db9c4-c52c-4dd7-b385-76341ad4de4a_1782x977.jpeg 848w, https://substackcdn.com/image/fetch/$s_!LMJ9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c7db9c4-c52c-4dd7-b385-76341ad4de4a_1782x977.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!LMJ9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c7db9c4-c52c-4dd7-b385-76341ad4de4a_1782x977.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LMJ9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c7db9c4-c52c-4dd7-b385-76341ad4de4a_1782x977.jpeg" width="402" height="220.32692307692307" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8c7db9c4-c52c-4dd7-b385-76341ad4de4a_1782x977.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:798,&quot;width&quot;:1456,&quot;resizeWidth&quot;:402,&quot;bytes&quot;:203454,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/187192520?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c7db9c4-c52c-4dd7-b385-76341ad4de4a_1782x977.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LMJ9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c7db9c4-c52c-4dd7-b385-76341ad4de4a_1782x977.jpeg 424w, https://substackcdn.com/image/fetch/$s_!LMJ9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c7db9c4-c52c-4dd7-b385-76341ad4de4a_1782x977.jpeg 848w, https://substackcdn.com/image/fetch/$s_!LMJ9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c7db9c4-c52c-4dd7-b385-76341ad4de4a_1782x977.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!LMJ9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c7db9c4-c52c-4dd7-b385-76341ad4de4a_1782x977.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Don&#8217;t force users to chase your content.</figcaption></figure></div><p>The core issue with animation is that UI motion often competes with the user&#8217;s task. When motion isn&#8217;t explicitly triggered by a user interaction, it becomes a tax on attention and challenges the user&#8217;s comprehension. That&#8217;s why autoplaying videos, auto-forwarding carousels, bouncing tooltips, pulsing &#8220;new feature&#8221; prompts, and scroll-triggered reveals so often cause users to miss critical information. These extraneous animations also tend to increase time on task and cognitive load. Decades of research have proven that users often find these animations to be annoying, distracting, and exhausting.</p><p>The accessibility cost is even more serious. Uncontrolled motion can create barriers for users with vestibular sensitivity, attention-related conditions, slower reading speed, non-native language processing needs, motor constraints, and a wide range of cognitive processing differences. Restraint around animations is a usability and inclusion requirement, especially in complex products where users are already juggling high intrinsic cognitive load.</p><div class="pullquote"><p>Animations that are genuinely helpful tend to share the same characteristics: they respond to an explicit user action, they communicate something meaningful about system status, they end quickly, and reduce confusion instead of adding it with flare.</p></div><blockquote><p><strong>&#128161; Rule of thumb:</strong> If an animation isn&#8217;t triggered by a user action, remove it unless it communicates essential system status or progress.</p></blockquote><h1>Synthetic Users in UX Research</h1><p>Synthetic users, proxy users, and LLM interview bots are appealing to business folks for the same reason most too-good-to-be-true shortcuts are appealing. They feel fast, clean, and productive. They also avoid the messy parts of real user research, like recruiting, observation, contradiction, and actual human behavior. But the moment teams treat LLM output as user evidence, they are no longer doing research. They are generating plausible language and confusing it for something insightful.</p><p>Even with detailed personas and careful prompts, LLMs cannot provide valid findings yet. They are not drawing from lived experience, real constraints, habits, workarounds, social dynamics, emotional stakes, or the real-world context that shapes how people actually behave. That means basic logic tells us they can&#8217;t reveal the kinds of unknown unknowns researchers routinely uncover when real users hesitate, misunderstand, mistrust, adapt, and do things that could never have been predicted.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rzCI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b8b950f-7103-4cc4-8efa-129f3abde543_568x564.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rzCI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b8b950f-7103-4cc4-8efa-129f3abde543_568x564.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rzCI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b8b950f-7103-4cc4-8efa-129f3abde543_568x564.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rzCI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b8b950f-7103-4cc4-8efa-129f3abde543_568x564.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rzCI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b8b950f-7103-4cc4-8efa-129f3abde543_568x564.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rzCI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b8b950f-7103-4cc4-8efa-129f3abde543_568x564.jpeg" width="318" height="315.76056338028167" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8b8b950f-7103-4cc4-8efa-129f3abde543_568x564.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:564,&quot;width&quot;:568,&quot;resizeWidth&quot;:318,&quot;bytes&quot;:102499,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/187192520?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b8b950f-7103-4cc4-8efa-129f3abde543_568x564.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rzCI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b8b950f-7103-4cc4-8efa-129f3abde543_568x564.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rzCI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b8b950f-7103-4cc4-8efa-129f3abde543_568x564.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rzCI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b8b950f-7103-4cc4-8efa-129f3abde543_568x564.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rzCI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b8b950f-7103-4cc4-8efa-129f3abde543_568x564.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This misunderstanding is especially dangerous because it scales bad research culture. It produces outputs that look like real research artifacts, complete with quotes and themes that slide neatly into decks. At the same time, it often confirms whatever assumptions were embedded in the prompt in the first place. That creates an illusion of learning that&#8217;s hard to challenge in meetings because the language sounds coherent and confident.</p><p>AI can absolutely support research in legitimate ways. But replacing users with a chatbot collapses the distinction between evidence and imagination.</p><div class="pullquote"><p>I predict that once a team gets used to the speed and comfort of synthetic &#8220;insights,&#8221; the organization drifts further away from human-centered decision-making. And this will be done while still believing and claiming it&#8217;s being user-centered.</p></div><blockquote><p><strong>&#128161; Rule of thumb:</strong> For now, treat Gen AI outputs as simple brainstorming inputs only, and require human user evidence before making product decisions.</p></blockquote><h1>Conclusion</h1><p>All 5 of these ideas have something real behind them. That&#8217;s exactly why they&#8217;re so easy to repeat and so easy to misuse. The common pattern is that teams turn nuanced concepts into shortcuts. Then they use those shortcuts to justify choices that should have been validated with behavioral evidence, accessibility considerations, and real-world task outcomes.</p><p>If you want a safer, research-driven default mode, anchor your UX decisions in task outcomes, predictable interaction patterns, and real human evidence.</p><ol><li><p>Prioritize task completion over surface appeal.</p></li><li><p>Treat delight as something that emerges from interaction quality, not something you paste on at the end.</p></li><li><p>Use Jakob&#8217;s Law to respect patterns users have already learned, not as a shield for novelty.</p></li><li><p>Keep animation rare, functional, and under user control.</p></li><li><p>Don&#8217;t blur the line between real participant evidence and AI-generated text without lived experience behind it.</p></li></ol><p>If you agree or disagree, I&#8217;d love to hear your take. If you&#8217;re seeing any of these ideas get misused on your own teams, I&#8217;d also love to hear real-world examples. This stuff shows up differently depending on product context, how often users are in your product, and the kinds of tasks people are actually trying to complete, so I&#8217;m sure I have more to learn in this area. Thanks for reading!</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://trevorcalabro.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">UX Research in the Wild is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[UX Book Recommendations]]></title><description><![CDATA[16 Books That Made Me Better at UXer]]></description><link>https://trevorcalabro.substack.com/p/ux-book-recommendations</link><guid isPermaLink="false">https://trevorcalabro.substack.com/p/ux-book-recommendations</guid><dc:creator><![CDATA[Trevor Calabro]]></dc:creator><pubDate>Fri, 30 Jan 2026 15:52:53 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/e288f243-7231-47fd-a14e-48656ab1fcf8_694x619.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Summary:</strong> My obligatory list of recommended UX reading. A simple, grabbed-from-my-desk list of UX books that helped me level up in the real world.</p><div><hr></div><p>I recently had the privilege of having a conversation with <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Darren Hood&quot;,&quot;id&quot;:17329180,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9a0f4d78-f5c7-4816-be1b-163818fe7f5d_577x577.png&quot;,&quot;uuid&quot;:&quot;0298c470-4a4f-40b4-9d99-0505a40bfa41&quot;}" data-component-name="MentionToDOM"></span> during a <a href="https://condens.io/events/charting-ux-success-in-a-changing-landscape/">Condens-sponsored webinar</a> titled Charting UX Success in a Changing Landscape. During that webinar, I mentioned how much of my upskilling throughout my career came from reading a lot of books. Of course, the Condens moderator, Phillis Chang, asked if I could send a list of those books. Darren, being the consummate professional, already had all of his book recommendations in a blog post, so all he had to do was provide a link. I, on the other hand, had nothing to share. So this is it. This is my recommended reading list.</p><p>This list is not comprehensive. In fact, all I did was grab the books that were closest to my work desk, put them on the floor, snapped this picture, and then wrote the list below. I hope some of you find this helpful. Thanks!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JOu4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf23708-264c-4163-b36d-5d27f4897228_3368x3953.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JOu4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf23708-264c-4163-b36d-5d27f4897228_3368x3953.jpeg 424w, https://substackcdn.com/image/fetch/$s_!JOu4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf23708-264c-4163-b36d-5d27f4897228_3368x3953.jpeg 848w, https://substackcdn.com/image/fetch/$s_!JOu4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf23708-264c-4163-b36d-5d27f4897228_3368x3953.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!JOu4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf23708-264c-4163-b36d-5d27f4897228_3368x3953.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JOu4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf23708-264c-4163-b36d-5d27f4897228_3368x3953.jpeg" width="1456" height="1709" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cdf23708-264c-4163-b36d-5d27f4897228_3368x3953.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1709,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3072548,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/186310541?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf23708-264c-4163-b36d-5d27f4897228_3368x3953.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JOu4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf23708-264c-4163-b36d-5d27f4897228_3368x3953.jpeg 424w, https://substackcdn.com/image/fetch/$s_!JOu4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf23708-264c-4163-b36d-5d27f4897228_3368x3953.jpeg 848w, https://substackcdn.com/image/fetch/$s_!JOu4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf23708-264c-4163-b36d-5d27f4897228_3368x3953.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!JOu4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf23708-264c-4163-b36d-5d27f4897228_3368x3953.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><blockquote><p><strong>&#128221; NOTE: </strong>In no particular order. I listed these in the same order they appear in the photo, starting at the top-left and reading across each row.</p></blockquote><h1>Recommended Reading List V1.0</h1><ol><li><p><strong><a href="https://www.amazon.com/Foundations-Library-Information-Science-Third/dp/1555706908?utm_source=chatgpt.com">Foundations of Library and Information Science</a> </strong>(3rd Edition)<br><em>Richard E. Rubin</em><br>This one is a solid grounding for UXR work that touches information architecture, taxonomy, search, and content governance inside big, messy enterprise systems.</p></li><li><p><strong><a href="https://www.routledge.com/User-Centered-System-Design-New-Perspectives-on-Human-computer-Interaction/Norman-Draper/p/book/9780898598728?utm_source=chatgpt.com">User-Centered System Design: New Perspectives on Human-Computer Interaction</a> </strong><br><em>Edited by Donald A. Norman and Stephen W. Draper</em><br>This book helped me get better at translating real user cognition and workflow constraints into system-level design decisions.</p></li><li><p><strong><a href="https://www.peachpit.com/store/dont-make-me-think-revisited-a-common-sense-approach-9780321965516?utm_source=chatgpt.com">Don&#8217;t Make Me Think, Revisited: A Common Sense Approach to Web Usability</a> </strong>(3rd Edition)<br><em>Steve Krug </em><br>This one will give you practical language and quick evaluation instincts for identifying obvious friction in navigation, labeling, and page flow before you spend time on heavier studies.</p></li><li><p><strong><a href="https://www.amazon.com/dp/0201608421?tag=togA">TOG on Interface</a></strong><br><em>Bruce &#8220;Tog&#8221; Tognazzini</em><br>Tog&#8217;s work helped me build a strong interface design critique muscle for when you need to explain why an interaction pattern will fail under real use, even if it &#8220;looks fine&#8221; in a design review.</p></li><li><p><strong><a href="https://www.nngroup.com/books/digital-icons-that-work/?utm_source=chatgpt.com">Digital Icons That Work: A Comprehensive Guide to Enhancing User Experience with Effective Iconography</a><br></strong><em>Kate Kaplan and Kelley Gordon</em><br>TL;DR: label all your interactive UI components because an icon alone won&#8217;t cut it.</p></li><li><p><strong><a href="https://rosenfeldmedia.com/books/interviewing-users-second-edition/">Interviewing Users: How to Uncover Compelling Insights</a> </strong>(2nd Edition)<br><em>Steve Portigal</em><br>My go-to reference for running interviews that produce decision-grade insights by improving how you ask follow-ups, handle vague answers, and keep a session anchored to real work.</p></li><li><p><strong><a href="https://www.amazon.com/Designing-Web-Interfaces-Principles-Interactions/dp/0596516258?utm_source=chatgpt.com">Designing Web Interfaces: Principles and Patterns for Rich Interactions</a><br></strong><em>Bill Scott and Theresa Neil</em><br>A book that&#8217;s great for when stakeholders want &#8220;more modern interactions&#8221; and you need concrete, reusable interaction patterns tied to actual user behavior and task flow.</p></li><li><p><strong><a href="https://www.amazon.com/exec/obidos/ASIN/1592535879/amsi-20">Universal Principles of Design: Updated and Expanded</a></strong> (3rd Edition)<br><em>William Lidwell, Kritina Holden, and Jill Butler</em><br>A practical cross-disciplinary reference that helps you justify design recommendations using clear principles, especially when you&#8217;re translating research findings into design constraints.</p></li><li><p><strong><a href="https://rosenfeldmedia.com/books/surveys-that-work/">Surveys That Work: A Practical Guide for Designing and Running Better Surveys</a><br></strong><em>Caroline Jarrett</em><br>My go-to reference for designing surveys that reduce measurement error and produce cleaner, more defensible inputs for prioritization, segmentation, and tracking work.</p></li><li><p><strong><a href="https://www.amazon.com/UX-Designers-Dictionary-Official-Product/dp/B0FRS7Q7ZG?utm_source=chatgpt.com">The UX Designer&#8217;s Dictionary</a> <br></strong><em>Jonathan Bowman</em><br>A great little reference book for all things UX that helps align cross-functional teams on what UX terms actually mean in practice, so the team stops talking past each other.</p></li><li><p><strong><a href="https://analyticspress.com/smtn.php?utm_source=chatgpt.com">Show Me the Numbers: Designing Tables and Graphs to Enlighten</a> </strong>(2nd Edition)<br><em>Stephen Few</em><br>Levels up how you present quant findings so stakeholders can correctly interpret dashboards, scorecards, and research charts without you babysitting the readout.</p></li><li><p><strong><a href="https://www.mheducation.com/highered/mhp/product/schaum-s-outline-statistics-sixth-edition.html?utm_source=chatgpt.com">Schaum&#8217;s Outline of Statistics</a></strong> (6th Edition)<br><em>Murray R. Spiegel and Larry J. Stephens</em><br>A practical refresher for the stats you actually need when you&#8217;re pressure-testing quant claims, sanity-checking analyses, or rebuilding intuition fast.</p></li><li><p><strong><a href="https://www.amazon.com/UX-Research-Practical-Techniques-Designing/dp/149195129X?utm_source=chatgpt.com">UX Research: Practical Techniques for Designing Better Products</a></strong> <br><em>Brad Nunnally and David Farkas</em><br>This one is a broad, real-world playbook for planning and executing mixed-method research when you need to move from &#8220;we should research&#8221; to an actual study that ships insights.</p></li><li><p><strong><a href="https://www.amazon.com/Articulating-Design-Decisions-Communicate-Stakeholders/dp/1492079227?utm_source=chatgpt.com">Articulating Design Decisions: Communicate with Stakeholders, Keep Your Sanity, and Deliver the Best User Experience</a></strong> (2nd Edition) <br><em>Tom Greever </em><br>Helps you defend and explain UX decisions in high-stakes reviews so research evidence lands without you getting dragged into opinion fights.</p></li><li><p><strong><a href="https://abookapart.com/products/just-enough-research.html">Just Enough Research</a></strong><em><br>Erika Hall</em><br>This book is one of the best out there for explaining how to choose the smallest credible research approach for the decision at hand, especially when timelines are tight and you still need rigor.</p></li></ol><h1><strong>Conclusion</strong></h1><p>That&#8217;s it, not a definitive &#8220;top 10 list,&#8221; just the books I&#8217;ve personally leaned on when I needed to get better at my job. If you want to stay relevant in our fast-evolving profession, consider picking up one or two of these that match the kind of projects you&#8217;re doing right now and start there.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!72AI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F728a5fc6-4c99-48f3-b4fc-630caf70ac6f_605x510.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!72AI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F728a5fc6-4c99-48f3-b4fc-630caf70ac6f_605x510.jpeg 424w, https://substackcdn.com/image/fetch/$s_!72AI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F728a5fc6-4c99-48f3-b4fc-630caf70ac6f_605x510.jpeg 848w, https://substackcdn.com/image/fetch/$s_!72AI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F728a5fc6-4c99-48f3-b4fc-630caf70ac6f_605x510.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!72AI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F728a5fc6-4c99-48f3-b4fc-630caf70ac6f_605x510.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!72AI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F728a5fc6-4c99-48f3-b4fc-630caf70ac6f_605x510.jpeg" width="375" height="316.11570247933884" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/728a5fc6-4c99-48f3-b4fc-630caf70ac6f_605x510.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:510,&quot;width&quot;:605,&quot;resizeWidth&quot;:375,&quot;bytes&quot;:188071,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/186310541?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F728a5fc6-4c99-48f3-b4fc-630caf70ac6f_605x510.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!72AI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F728a5fc6-4c99-48f3-b4fc-630caf70ac6f_605x510.jpeg 424w, https://substackcdn.com/image/fetch/$s_!72AI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F728a5fc6-4c99-48f3-b4fc-630caf70ac6f_605x510.jpeg 848w, https://substackcdn.com/image/fetch/$s_!72AI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F728a5fc6-4c99-48f3-b4fc-630caf70ac6f_605x510.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!72AI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F728a5fc6-4c99-48f3-b4fc-630caf70ac6f_605x510.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If you&#8217;ve got a book you think belongs on this list, reply and tell me what it is and what it helped you do in practice. Thanks for reading! </p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://trevorcalabro.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">UX Research in the Wild is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Anatomy of an Input Field (Part 2)]]></title><description><![CDATA[A Reaction to Last Week's Feedback]]></description><link>https://trevorcalabro.substack.com/p/the-anatomy-of-an-input-field-part</link><guid isPermaLink="false">https://trevorcalabro.substack.com/p/the-anatomy-of-an-input-field-part</guid><dc:creator><![CDATA[Trevor Calabro]]></dc:creator><pubDate>Sat, 24 Jan 2026 14:43:35 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c5159453-051b-4b56-b353-f117b19bd555_1230x1097.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Summary: </strong>This is a follow-up to Part 1, where I respond in depth to reader pushback on one of the recommendations I made in last week&#8217;s article. I break down why required field indicators aren&#8217;t &#8220;visual clutter,&#8221; and how they reduce errors, reduce memory burdens, and reduce user error in the real-world.</p><div><hr></div><p>Last week&#8217;s article, <a href="https://trevorcalabro.substack.com/p/the-anatomy-of-an-input-field">The Anatomy of an Input Field (Part 1)</a>, struck a nerve with some readers, so I wanted to address it in this week&#8217;s post as a Part 2. Last week&#8217;s post is basically a reference doc I made for a past org, and I shared it because I keep seeing the same input field mistakes show up in UX designs, even though we&#8217;ve had established best practices for those for decades now.</p><blockquote><p><strong>&#128221; NOTE:</strong> I recommend <a href="https://trevorcalabro.substack.com/p/the-anatomy-of-an-input-field">reading Part 1 first</a> so you have the context for why I&#8217;m doing such a deep dive on an obscure topic.</p></blockquote><p>A few readers DM&#8217;d me with some pushback on one specific recommendation in last week&#8217;s post:</p><div class="pullquote"><p><strong>All Required Fields Must Be Marked With An Indicator (Even when every field in a form is required).</strong></p></div><p>I have had this conversation a lot in my career, and I totally understand why many UXers don&#8217;t agree with this best practice recommendation. If you&#8217;ve ever looked at a form with a lot of required asterisk indicators in a row, it feels like overkill. But looking at a mockup or prototype is not the same as trying to fill out a form in the real world. So I see why it&#8217;s easy to argue that if everything is required, then clearly the user should just assume it&#8217;s required. That&#8217;s the argument I kept hearing in a nutshell.</p><p>So this week&#8217;s post is me responding to that disagreement directly, because I don&#8217;t think it&#8217;s a styling preference. 40+ years worth of HCI research has proven that this tradeoff isn&#8217;t about aesthetics. It&#8217;s about behavior.</p><h1><strong>Level Setting</strong></h1><p>Let&#8217;s level-set by describing what we know about how end users actually fill out web forms in the real world. In practice, users experience forms as a step-by-step interaction sequence. They fill out one field at a time, staying focused on the active field, the field&#8217;s label, and whatever nearby text helps them make the next micro-decision. They&#8217;re not stepping back to admire the overall &#8220;cleanliness&#8221; of the form. They&#8217;re trying to finish the task quickly without hitting validation errors or having to redo anything.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Qar9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3956cf8f-8b02-4eb4-9c53-667ad3c14730_967x556.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Qar9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3956cf8f-8b02-4eb4-9c53-667ad3c14730_967x556.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Qar9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3956cf8f-8b02-4eb4-9c53-667ad3c14730_967x556.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Qar9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3956cf8f-8b02-4eb4-9c53-667ad3c14730_967x556.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Qar9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3956cf8f-8b02-4eb4-9c53-667ad3c14730_967x556.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Qar9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3956cf8f-8b02-4eb4-9c53-667ad3c14730_967x556.jpeg" width="432" height="248.38883143743536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3956cf8f-8b02-4eb4-9c53-667ad3c14730_967x556.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:556,&quot;width&quot;:967,&quot;resizeWidth&quot;:432,&quot;bytes&quot;:217489,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/185631852?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3956cf8f-8b02-4eb4-9c53-667ad3c14730_967x556.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Qar9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3956cf8f-8b02-4eb4-9c53-667ad3c14730_967x556.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Qar9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3956cf8f-8b02-4eb4-9c53-667ad3c14730_967x556.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Qar9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3956cf8f-8b02-4eb4-9c53-667ad3c14730_967x556.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Qar9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3956cf8f-8b02-4eb4-9c53-667ad3c14730_967x556.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">This is what some aesthetic-minded UXers think users do with forms. Spoiler&#8230; they don&#8217;t.</figcaption></figure></div><p>So when the information users need isn&#8217;t right there, just-in-time, they tend to slow down, and make a errors. And then the system ends up cleaning up the mess later with error messages, system warnings, and forced backtracking.</p><p>That&#8217;s why, as one disgruntled reader put it, these &#8220;minor&#8221; form best practices like persistent labels and required indicators aren&#8217;t nitpicky details. I argue that they&#8217;re the difference between a form that is frictionless and a form that feels broken, especially when multiple best-practice breaches start to pile up within a single form.</p><h1>The Required-Field Problem</h1><p>Like I said earlier, I think this debate keeps resurfacing because design teams are looking at required-field indicators as a visual problem. Design systems make that even worse, because many UX teams want a single clean rule they can apply everywhere, and the old &#8220;All fields are required&#8221; instructional text at the top of the form looks great in a static design spec.</p><p>The real issue is that required cues need to show up at the moment of decision, not out of context, and only once at the top of the form. That&#8217;s why <a href="https://www.nngroup.com/articles/required-fields/">field-level required indicators are a best practice and why UX thinktanks like NN/g recommend them</a>. A red asterisk or the word &#8220;Required&#8221; next to each label gives users the information exactly when they need it, without forcing them to remember anything. They are perfect just-in-time affordances.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!x_Gz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb8a36d-8677-4423-8d2d-06d90a3e54fb_817x388.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!x_Gz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb8a36d-8677-4423-8d2d-06d90a3e54fb_817x388.jpeg 424w, https://substackcdn.com/image/fetch/$s_!x_Gz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb8a36d-8677-4423-8d2d-06d90a3e54fb_817x388.jpeg 848w, https://substackcdn.com/image/fetch/$s_!x_Gz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb8a36d-8677-4423-8d2d-06d90a3e54fb_817x388.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!x_Gz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb8a36d-8677-4423-8d2d-06d90a3e54fb_817x388.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!x_Gz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb8a36d-8677-4423-8d2d-06d90a3e54fb_817x388.jpeg" width="224" height="106.37943696450428" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/adb8a36d-8677-4423-8d2d-06d90a3e54fb_817x388.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:388,&quot;width&quot;:817,&quot;resizeWidth&quot;:224,&quot;bytes&quot;:47934,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/185631852?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb8a36d-8677-4423-8d2d-06d90a3e54fb_817x388.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!x_Gz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb8a36d-8677-4423-8d2d-06d90a3e54fb_817x388.jpeg 424w, https://substackcdn.com/image/fetch/$s_!x_Gz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb8a36d-8677-4423-8d2d-06d90a3e54fb_817x388.jpeg 848w, https://substackcdn.com/image/fetch/$s_!x_Gz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb8a36d-8677-4423-8d2d-06d90a3e54fb_817x388.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!x_Gz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb8a36d-8677-4423-8d2d-06d90a3e54fb_817x388.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div class="pullquote"><p>When you remove those affordances and rely on one line of instructional text at the top, you&#8217;re asking users to read it, comprehend it, store it in working memory, and apply it perfectly across the whole form. You&#8217;ll never guess how that actually works for real users filling out real forms. hahaha</p></div><p>But in the real world, we know that users often skip over instructional text. And even if users do read it, research has shown that many are likely to forget it the further down the form they get. And if they treat even one field like it&#8217;s optional, the form fails at submission and turns into an error recovery task. That user error outcome is preventable when the required cue lives next to the label. So, like it or not, <a href="https://www.nngroup.com/articles/required-fields/">research has also shown that only marking optional fields makes forms harder to complete</a> and can create a huge amount of confusion for users who rely on screen reader technology.</p><h1>The Type 1 vs Type 2 Error Reframe</h1><p>Type 1 vs Type 2 Errors is the mental model that I use to help other UXers reframe what they think is a clutter issue into a conversation about risks and tradeoffs.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fR-a!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2519f55f-5307-4d7f-b1da-3c90fdcce0bb_813x910.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fR-a!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2519f55f-5307-4d7f-b1da-3c90fdcce0bb_813x910.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fR-a!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2519f55f-5307-4d7f-b1da-3c90fdcce0bb_813x910.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fR-a!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2519f55f-5307-4d7f-b1da-3c90fdcce0bb_813x910.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fR-a!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2519f55f-5307-4d7f-b1da-3c90fdcce0bb_813x910.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fR-a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2519f55f-5307-4d7f-b1da-3c90fdcce0bb_813x910.jpeg" width="216" height="241.77121771217713" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2519f55f-5307-4d7f-b1da-3c90fdcce0bb_813x910.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:910,&quot;width&quot;:813,&quot;resizeWidth&quot;:216,&quot;bytes&quot;:122349,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/185631852?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2519f55f-5307-4d7f-b1da-3c90fdcce0bb_813x910.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fR-a!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2519f55f-5307-4d7f-b1da-3c90fdcce0bb_813x910.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fR-a!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2519f55f-5307-4d7f-b1da-3c90fdcce0bb_813x910.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fR-a!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2519f55f-5307-4d7f-b1da-3c90fdcce0bb_813x910.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fR-a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2519f55f-5307-4d7f-b1da-3c90fdcce0bb_813x910.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>From a straightforward logic and systems thinking standpoint, there are two ways user error can happen when filling out an input field:</p><h3><strong>Type 1: Over-signaling (low cost)</strong></h3><p>Type 1 is showing a required indicator on every field, even when everything is required.</p><p>The interaction cost and cognitive tax are low. You&#8217;re adding a small, familiar signal next to each label that most users process automatically as they move through the form.</p><p>Worst case, it adds a bit of visual noise, and even that tends to fade once the user starts working.</p><h3><strong>Type 2: Under-signaling (high cost)</strong></h3><p>Type 2 is removing field-level indicators entirely and relying on one line of text at the top.</p><p>That has a very different failure mode. If the user misses even one field, submission fails. The interface creates a single point of failure across the entire form, and one mistake blocks completion.</p><p>Once you look at it through this lens, the decision becomes about choosing the best tradeoff by picking the least harmful failure mode.</p><div class="pullquote"><p>My main argument is that a tiny amount of repeated visual information is a low price to pay to avoid a task-ending error.</p></div><h1>The Working Memory Problem</h1><p>This is the part that rarely gets discussed in design system meetings, and it&#8217;s the part that can have the biggest impact across an org.</p><p>Like I said earlier, in the solution where you put a single line of text at the top that says &#8220;All fields are required,&#8221; you&#8217;ve created a memory task. In the real world we know that most users are thinking about the content they&#8217;re entering. They&#8217;re checking an account number, typing an address, flipping over to an email to copy a reference ID, or trying to remember which version of a date format your system expects. Their mental space is already being used for something.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HRyY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08cc0997-accc-4102-a7c7-6265b66a9c65_813x910.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HRyY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08cc0997-accc-4102-a7c7-6265b66a9c65_813x910.jpeg 424w, https://substackcdn.com/image/fetch/$s_!HRyY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08cc0997-accc-4102-a7c7-6265b66a9c65_813x910.jpeg 848w, https://substackcdn.com/image/fetch/$s_!HRyY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08cc0997-accc-4102-a7c7-6265b66a9c65_813x910.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!HRyY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08cc0997-accc-4102-a7c7-6265b66a9c65_813x910.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HRyY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08cc0997-accc-4102-a7c7-6265b66a9c65_813x910.jpeg" width="270" height="302.2140221402214" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/08cc0997-accc-4102-a7c7-6265b66a9c65_813x910.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:910,&quot;width&quot;:813,&quot;resizeWidth&quot;:270,&quot;bytes&quot;:306371,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/185631852?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08cc0997-accc-4102-a7c7-6265b66a9c65_813x910.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HRyY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08cc0997-accc-4102-a7c7-6265b66a9c65_813x910.jpeg 424w, https://substackcdn.com/image/fetch/$s_!HRyY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08cc0997-accc-4102-a7c7-6265b66a9c65_813x910.jpeg 848w, https://substackcdn.com/image/fetch/$s_!HRyY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08cc0997-accc-4102-a7c7-6265b66a9c65_813x910.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!HRyY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08cc0997-accc-4102-a7c7-6265b66a9c65_813x910.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This is why a field-level indicator removes that burden. The user doesn&#8217;t have to store anything. They get the information at the moment they need it, while their eyes are already on the label. We have decades of eye-tracking data confirming that this is how users actually behave. And this is where the &#8220;asterisks create cognitive load&#8221; argument starts to collapse.</p><p>The top of form instructional text creates cognitive load by forcing the active recall mechanism in users&#8217; brains. The repeated asterisk creates almost no memory load at all because it&#8217;s recognized instantly during scanning. If you&#8217;ve watched enough usability sessions, you&#8217;ve seen this play out. People don&#8217;t pause and deeply process an asterisk. They just keep moving because the form is giving them what they need.</p><h1>The &#8220;People Don&#8217;t Read&#8221; Problem</h1><p>Whenever this topic comes up, someone usually says, &#8220;Well, we&#8217;ll write clear instructions at the top.&#8221; That sounds responsible but it assumes that users will actually notice and read the extra text.</p><p>In practice, users treat most explanatory text as background noise until the moment it proves useful. They don&#8217;t show up to a form with the mindset of reading documentation. Decades of research have proven that users start entering information and respond to what the interface tells them in the moment.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Hj9f!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56879ef4-66a7-4526-ae11-d15d3c9a4a3b_828x838.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hj9f!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56879ef4-66a7-4526-ae11-d15d3c9a4a3b_828x838.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Hj9f!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56879ef4-66a7-4526-ae11-d15d3c9a4a3b_828x838.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Hj9f!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56879ef4-66a7-4526-ae11-d15d3c9a4a3b_828x838.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Hj9f!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56879ef4-66a7-4526-ae11-d15d3c9a4a3b_828x838.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hj9f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56879ef4-66a7-4526-ae11-d15d3c9a4a3b_828x838.jpeg" width="225" height="227.7173913043478" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/56879ef4-66a7-4526-ae11-d15d3c9a4a3b_828x838.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:838,&quot;width&quot;:828,&quot;resizeWidth&quot;:225,&quot;bytes&quot;:197306,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/185631852?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56879ef4-66a7-4526-ae11-d15d3c9a4a3b_828x838.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Hj9f!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56879ef4-66a7-4526-ae11-d15d3c9a4a3b_828x838.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Hj9f!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56879ef4-66a7-4526-ae11-d15d3c9a4a3b_828x838.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Hj9f!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56879ef4-66a7-4526-ae11-d15d3c9a4a3b_828x838.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Hj9f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56879ef4-66a7-4526-ae11-d15d3c9a4a3b_828x838.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Please, why won&#8217;t anyone read me?</figcaption></figure></div><p>There&#8217;s a reason usability researchers have repeated the &#8220;eyes are where the cursor is&#8221; idea for so long. You can watch it happen. Users tend to look at the label, look at the input control, type the value, and move on. Their attention stays anchored to whatever they are actively doing, and the top-of-form instructions solution sit outside that flow.</p><p>And if the user misses reading the text entirely, the interface has no backup plan. The system waits until the end of the task to reveal the consequences, usually through an error message that forces the user into a hunt for whatever they missed.</p><h1>Why This Gets Misunderstood</h1><p>I don&#8217;t think this misunderstanding sticks around because designers are careless or inexperienced. I think it sticks around because the required fields debate gets evaluated through a visual lens first.</p><div class="pullquote"><p>Unfortunately, the standard asterisk affordance is often misunderstood and treated like decoration. A form full of them feels busy. Busy gets equated with cognitive load. Cognitive load gets equated with user confusion. So teams assume they&#8217;re helping users by removing the asterisk indicators altogether.</p></div><p>That line of thinking sounds plausible in a design review because a design review is a static environment. Everyone is staring at the interface as a layout. Nobody is actually trying to complete a task while juggling distractions, context switches, and partial attention.</p><p>Design systems also push teams toward global rules that can be applied everywhere. That&#8217;s part of their value. Consistency keeps products predictable and reduces decision fatigue for builders. The downside is that global rules can start optimizing for what looks clean in documentation instead of what performs well during real interactions.</p><p>The final reason this is easy to miss is that the harm of the error shows up late in the user&#8217;s journey. The user doesn&#8217;t get punished at the beginning of the form, they get punished at submission. That&#8217;s far enough away from the original design choice that people forget what caused it in the first place. Then the team sees the error state, shrugs, and says, &#8220;Validation will catch it.&#8221; Validation does catch it. It catches it after the user has already done the work and already believes they&#8217;re finished. This is not user-centric thinking. </p><h1>Recommended Standard</h1><p>If a design system is going to set rules for forms, I argue it should standardize the part that prevents user failure.</p><h3>Baseline Rule</h3><ul><li><p><strong>Required fields get a required indicator at the field label level<br></strong>That means each label carries the signal, right where the user is about to make a decision. It keeps the form consistent, predictable, and easy to scan. It also prevents the whole form from becoming a memory test.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!E7vA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2fdc07e-5a66-4e82-8575-97c09cbfca7c_757x192.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!E7vA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2fdc07e-5a66-4e82-8575-97c09cbfca7c_757x192.jpeg 424w, https://substackcdn.com/image/fetch/$s_!E7vA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2fdc07e-5a66-4e82-8575-97c09cbfca7c_757x192.jpeg 848w, https://substackcdn.com/image/fetch/$s_!E7vA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2fdc07e-5a66-4e82-8575-97c09cbfca7c_757x192.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!E7vA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2fdc07e-5a66-4e82-8575-97c09cbfca7c_757x192.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!E7vA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2fdc07e-5a66-4e82-8575-97c09cbfca7c_757x192.jpeg" width="402" height="101.96036988110964" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b2fdc07e-5a66-4e82-8575-97c09cbfca7c_757x192.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:192,&quot;width&quot;:757,&quot;resizeWidth&quot;:402,&quot;bytes&quot;:16108,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/185631852?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2fdc07e-5a66-4e82-8575-97c09cbfca7c_757x192.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!E7vA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2fdc07e-5a66-4e82-8575-97c09cbfca7c_757x192.jpeg 424w, https://substackcdn.com/image/fetch/$s_!E7vA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2fdc07e-5a66-4e82-8575-97c09cbfca7c_757x192.jpeg 848w, https://substackcdn.com/image/fetch/$s_!E7vA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2fdc07e-5a66-4e82-8575-97c09cbfca7c_757x192.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!E7vA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2fdc07e-5a66-4e82-8575-97c09cbfca7c_757x192.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div></li></ul><h3>Supporting Rules</h3><ul><li><p><strong>If all fields are required, still mark them<br></strong>You can keep the little line of helper text at the top if you want but it can&#8217;t be the only signal. Users are likely to miss it. (Even when they do read it, users tend to forget instructions once they start typing.)</p></li><li><p><strong>If there are optional fields, label them explicitly as optional </strong><br>This only applies when some fields are required and others aren&#8217;t. In mixed forms, don&#8217;t make users guess which fields they can safely skip. Add &#8220;(Optional)&#8221; right in the label next to the optional fields. It removes hesitation, reduces second-guessing, and prevents users from treating optional questions like required ones.</p></li></ul><ul><li><p><strong>Keep it consistent. Same indicator. Same placement. <br></strong>(Same meaning across products as well.) If a design system is doing its job, nobody has to relearn how required fields work in a different workflow.</p></li></ul><blockquote><p><strong>&#128680; IMPORTANT: </strong>This rule also needs to be accessible by default. A red asterisk alone is not enough. Pair it with programmatic required state so screen readers announce it, and make sure the required indicator is visible even for users who struggle with color perception.</p></blockquote><h1>Simple 2 Step Fix</h1><p>Here are the 2 steps I walk teams through to help frame this issue around outcomes and reduce the tendency to over-index on visuals.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!02Bo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb629e4-a183-4cf1-af6a-fea56934a080_687x602.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!02Bo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb629e4-a183-4cf1-af6a-fea56934a080_687x602.jpeg 424w, https://substackcdn.com/image/fetch/$s_!02Bo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb629e4-a183-4cf1-af6a-fea56934a080_687x602.jpeg 848w, https://substackcdn.com/image/fetch/$s_!02Bo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb629e4-a183-4cf1-af6a-fea56934a080_687x602.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!02Bo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb629e4-a183-4cf1-af6a-fea56934a080_687x602.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!02Bo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb629e4-a183-4cf1-af6a-fea56934a080_687x602.jpeg" width="285" height="249.73799126637556" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fb629e4-a183-4cf1-af6a-fea56934a080_687x602.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:602,&quot;width&quot;:687,&quot;resizeWidth&quot;:285,&quot;bytes&quot;:97944,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/185631852?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb629e4-a183-4cf1-af6a-fea56934a080_687x602.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!02Bo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb629e4-a183-4cf1-af6a-fea56934a080_687x602.jpeg 424w, https://substackcdn.com/image/fetch/$s_!02Bo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb629e4-a183-4cf1-af6a-fea56934a080_687x602.jpeg 848w, https://substackcdn.com/image/fetch/$s_!02Bo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb629e4-a183-4cf1-af6a-fea56934a080_687x602.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!02Bo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb629e4-a183-4cf1-af6a-fea56934a080_687x602.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><strong>Step 1: Identify the failure mode by asking questions</strong></h3><p>Walk your team through these series of questions:</p><ul><li><p>What happens if a user misses one field?</p></li><li><p>Does the system block submission?</p></li><li><p>Does it trigger an error that forces them to hunt for what they missed?</p></li><li><p>Does it send them back through the form with no clear guidance?</p></li></ul><p>If the answer is yes to any of that, point out that the cost of getting this wrong is high.</p><h3><strong>Step 2: Decide what you&#8217;re optimizing for</strong></h3><p>Establish the context that some UI default rulesets are optimizing for visual cleanliness, while others optimize for task completion. Then point out that you can&#8217;t optimize for both equally, and a tradeoff needs to be made.</p><p>Once you&#8217;ve made that point, have your team decide on what they believe is more critical: the user&#8217;s overall perception of the form, or the user&#8217;s ability to fill it out quickly and accurately on their first attempt. Use the failure mode framework from above to illustrate this point if necessary.</p><p>That&#8217;s it. That right there is usually enough to get teams aligned on this user-centered, research-backed best practice.</p><blockquote><p>&#128161; <strong>Key Takeaway:</strong> These 2 steps are the quickest way I&#8217;ve found to influence teams to think critically and adopt this best practice without spending too much time debating, educating, or convincing. This approach allows individuals to come to their own conclusions on that matter in the quickest way possible.</p></blockquote><h1><strong>Conclusion</strong></h1><p>This required fields debate keeps coming up, even though the research has been clear for a long time now. Here&#8217;s what we know is most likely to be true:</p><p>Users fill out forms one field at a time, and required indicators work because they show up right where the decision happens. A single line of helper text at the top is easy to miss, easy to forget, and the worse tradeoff decision when it leads to a submission error at the end. And if you&#8217;re building a design system, standardize field-level required indicators, make them accessible, and keep them consistent across products.</p><p>If you&#8217;ve stuck it through to the end of this week&#8217;s post, give yourself a hand. I now deem you a bona fide UX dork. Going this deep in the weeds on one specific UI component is a weird thing to do, I know, but I think an exercise like this can be beneficial across a huge number of UX decisions. DM me if you found the tactics and arguments in this article convincing, and if you think the process is transferable to other UI elements. Thanks again for reading!</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://trevorcalabro.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">UX Research in the Wild is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Anatomy of an Input Field (Part 1)]]></title><description><![CDATA[Usability Best Practices Guide]]></description><link>https://trevorcalabro.substack.com/p/the-anatomy-of-an-input-field</link><guid isPermaLink="false">https://trevorcalabro.substack.com/p/the-anatomy-of-an-input-field</guid><dc:creator><![CDATA[Trevor Calabro]]></dc:creator><pubDate>Sat, 17 Jan 2026 20:12:39 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/e7f7c4a9-3856-4934-ae48-b65b48d50607_1230x1097.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Summary: </strong>Input fields seem simple, but small decisions around labels, placeholders, and help text can cause usability problems. This post shares a real internal reference document and explains how input fields work best in the real world, not just in design specs.</p><div><hr></div><p>I was talking with a senior UXer the other day about best practices for labeling input fields and was honestly surprised by how little they knew about the input control. That conversation sent me digging through my Dropbox, where I found an old <em>Anatomy of an Input Field</em> document I had created for an organization back in the day. That conversation prompted me to share that document here in this week&#8217;s post.</p><blockquote><p><strong>&#8505;&#65039; Disclaimer:</strong> This document was created for an org. that used the <a href="https://mui.com/">MUI</a> as one of its default design systems. Because of that, each example shows the ideal best practice first, followed by the closest you can reasonably get with MUI.</p></blockquote><div><hr></div><h1>The Document</h1><h1>UI Controls: Input Fields </h1><p>At<em> {Insert Company Name} </em>we have 2 different design patterns for input fields:</p><ol><li><p>Standard style (on the left below)</p></li><li><p>MUI style (on the right below)</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Hy8A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a82bd72-273a-44e8-8afe-ba63d7845368_1512x224.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hy8A!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a82bd72-273a-44e8-8afe-ba63d7845368_1512x224.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Hy8A!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a82bd72-273a-44e8-8afe-ba63d7845368_1512x224.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Hy8A!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a82bd72-273a-44e8-8afe-ba63d7845368_1512x224.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Hy8A!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a82bd72-273a-44e8-8afe-ba63d7845368_1512x224.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hy8A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a82bd72-273a-44e8-8afe-ba63d7845368_1512x224.jpeg" width="1456" height="216" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2a82bd72-273a-44e8-8afe-ba63d7845368_1512x224.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:216,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:68723,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/184892394?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a82bd72-273a-44e8-8afe-ba63d7845368_1512x224.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Hy8A!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a82bd72-273a-44e8-8afe-ba63d7845368_1512x224.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Hy8A!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a82bd72-273a-44e8-8afe-ba63d7845368_1512x224.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Hy8A!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a82bd72-273a-44e8-8afe-ba63d7845368_1512x224.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Hy8A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a82bd72-273a-44e8-8afe-ba63d7845368_1512x224.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><blockquote><p><strong>&#9888;&#65039; Important Note About MUI</strong></p><p>Avoid using the Floating Label design pattern that is available in MUI. (the pattern pictured below)</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SoXh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38ec4b19-2a69-40d2-aa24-f529fbb8a09f_699x66.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SoXh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38ec4b19-2a69-40d2-aa24-f529fbb8a09f_699x66.jpeg 424w, https://substackcdn.com/image/fetch/$s_!SoXh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38ec4b19-2a69-40d2-aa24-f529fbb8a09f_699x66.jpeg 848w, https://substackcdn.com/image/fetch/$s_!SoXh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38ec4b19-2a69-40d2-aa24-f529fbb8a09f_699x66.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!SoXh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38ec4b19-2a69-40d2-aa24-f529fbb8a09f_699x66.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SoXh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38ec4b19-2a69-40d2-aa24-f529fbb8a09f_699x66.jpeg" width="699" height="66" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/38ec4b19-2a69-40d2-aa24-f529fbb8a09f_699x66.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:66,&quot;width&quot;:699,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:8418,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/184892394?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38ec4b19-2a69-40d2-aa24-f529fbb8a09f_699x66.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!SoXh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38ec4b19-2a69-40d2-aa24-f529fbb8a09f_699x66.jpeg 424w, https://substackcdn.com/image/fetch/$s_!SoXh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38ec4b19-2a69-40d2-aa24-f529fbb8a09f_699x66.jpeg 848w, https://substackcdn.com/image/fetch/$s_!SoXh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38ec4b19-2a69-40d2-aa24-f529fbb8a09f_699x66.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!SoXh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38ec4b19-2a69-40d2-aa24-f529fbb8a09f_699x66.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Floating Label: The label text itself moves to the top of the input field when selected.</figcaption></figure></div><p>Floating input labels are proven to create major usability and accessibility issues, so we don&#8217;t use them. Here&#8217;s why:</p><ul><li><p><strong>Input fields with text in them are less noticeable.</strong> Users often assume there&#8217;s already a default value entered in the field, which can lead to errors.</p></li><li><p><strong>Many browsers and assistive technologies don&#8217;t reliably read placeholder text.</strong> That makes floating labels problematic for accessibility compliance.</p></li></ul><p><strong>Quote From NN/g: </strong>&#8220;Ultimately, floating labels do offer a better user experience than the label as a placeholder. But if you have the screen space, placing the label and hint outside the field is still the best way to go.&#8221; <a href="https://www.nngroup.com/articles/form-design-placeholders/?lm=required-fields&amp;pt=article">Learn more about the harms of floating labels here.</a></p></blockquote><h1>Input Field Anatomy</h1><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xWOi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1639ebee-c8e8-4b28-b46c-a2f53e9b91c6_1512x295.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xWOi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1639ebee-c8e8-4b28-b46c-a2f53e9b91c6_1512x295.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xWOi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1639ebee-c8e8-4b28-b46c-a2f53e9b91c6_1512x295.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xWOi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1639ebee-c8e8-4b28-b46c-a2f53e9b91c6_1512x295.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xWOi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1639ebee-c8e8-4b28-b46c-a2f53e9b91c6_1512x295.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xWOi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1639ebee-c8e8-4b28-b46c-a2f53e9b91c6_1512x295.jpeg" width="1456" height="284" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1639ebee-c8e8-4b28-b46c-a2f53e9b91c6_1512x295.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:284,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:157187,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/184892394?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1639ebee-c8e8-4b28-b46c-a2f53e9b91c6_1512x295.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xWOi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1639ebee-c8e8-4b28-b46c-a2f53e9b91c6_1512x295.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xWOi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1639ebee-c8e8-4b28-b46c-a2f53e9b91c6_1512x295.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xWOi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1639ebee-c8e8-4b28-b46c-a2f53e9b91c6_1512x295.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xWOi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1639ebee-c8e8-4b28-b46c-a2f53e9b91c6_1512x295.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ol><li><p><strong>Asterisk (*) -</strong> Indicates a required field. All required fields must have an asterisk. <a href="https://www.nngroup.com/articles/required-fields/">Read this NN/g article to find out why.</a> The asterisk should be on the left of your labels, have a space added before the label, and be in a color that stands out, like red.</p></li><li><p><strong>Label - </strong>The word(s) above the UI control describing the user&#8217;s expected input. Good labels are explicit and succinct. They allow users to understand what the input field is for without having to gather more information. All input fields must have a label.</p></li><li><p><strong>Optional Indicator -</strong> Indicates a non-required field. Only use the optional indicator when a mix of required and non-required fields in a form becomes confusing. The optional indicator should be on the right of your labels, in parenthesis, and have a space added after the label.</p></li><li><p><strong>Explanatory Text - </strong>An optional element used to further explain an input field&#8217;s purpose when a label is not enough by itself. This text should be context-specific and user-centered. (Explanatory text should be visible without requiring user interaction. For example, do not hide explanatory text behind an &#8220;i&#8221; icon or within a tooltip.)</p></li><li><p><strong>Input Field Control - </strong>Standard UI control allowing users to type into the system. 40+ years of research has proven users understand how to interact with a standard input field just by seeing it. (It&#8217;s an affordance in and of itself. No placeholder text needed.)</p></li><li><p><strong>Placeholder Text - </strong>Instruction or help text inserted within the input field itself. Placeholder text is usually grayed out and sometimes italicized.</p><ol><li><p><strong>&#9888;&#65039; Warning: </strong>The rule-of-thumb is to never use placeholder text. In a vast majority of cases, placeholder text is very very bad for users. <a href="https://www.nngroup.com/articles/form-design-placeholders/?lm=required-fields&amp;pt=article">Read this NN/g article to learn why placeholder text is typically harmful to usability.</a></p></li></ol></li><li><p><strong>System Help Text -</strong> An optional element used to communicate system-related requirements or instructions to users. Examples include field requirements, data-related warnings, and just-in-time system status notifications. System help text should always appear last, at the bottom of an input field (including below any explanatory text in the MUI style).</p></li></ol><h1>Real-World Examples</h1><p>&#9989;     Ideal Standard Style: Simple Example</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GkS2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdbb54b3-b6e2-4f01-96ec-c29454cd6239_757x192.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GkS2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdbb54b3-b6e2-4f01-96ec-c29454cd6239_757x192.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GkS2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdbb54b3-b6e2-4f01-96ec-c29454cd6239_757x192.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GkS2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdbb54b3-b6e2-4f01-96ec-c29454cd6239_757x192.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GkS2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdbb54b3-b6e2-4f01-96ec-c29454cd6239_757x192.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GkS2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdbb54b3-b6e2-4f01-96ec-c29454cd6239_757x192.jpeg" width="500" height="126.81638044914135" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bdbb54b3-b6e2-4f01-96ec-c29454cd6239_757x192.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:192,&quot;width&quot;:757,&quot;resizeWidth&quot;:500,&quot;bytes&quot;:16108,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/184892394?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdbb54b3-b6e2-4f01-96ec-c29454cd6239_757x192.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GkS2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdbb54b3-b6e2-4f01-96ec-c29454cd6239_757x192.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GkS2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdbb54b3-b6e2-4f01-96ec-c29454cd6239_757x192.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GkS2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdbb54b3-b6e2-4f01-96ec-c29454cd6239_757x192.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GkS2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdbb54b3-b6e2-4f01-96ec-c29454cd6239_757x192.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>&#9989;     Ideal MUI Style: Simple Example</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8bjg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F876d8248-8af3-4995-933b-cad3a5931178_757x192.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8bjg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F876d8248-8af3-4995-933b-cad3a5931178_757x192.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8bjg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F876d8248-8af3-4995-933b-cad3a5931178_757x192.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8bjg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F876d8248-8af3-4995-933b-cad3a5931178_757x192.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8bjg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F876d8248-8af3-4995-933b-cad3a5931178_757x192.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8bjg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F876d8248-8af3-4995-933b-cad3a5931178_757x192.jpeg" width="500" height="126.81638044914135" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/876d8248-8af3-4995-933b-cad3a5931178_757x192.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:192,&quot;width&quot;:757,&quot;resizeWidth&quot;:500,&quot;bytes&quot;:12681,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/184892394?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F876d8248-8af3-4995-933b-cad3a5931178_757x192.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8bjg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F876d8248-8af3-4995-933b-cad3a5931178_757x192.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8bjg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F876d8248-8af3-4995-933b-cad3a5931178_757x192.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8bjg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F876d8248-8af3-4995-933b-cad3a5931178_757x192.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8bjg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F876d8248-8af3-4995-933b-cad3a5931178_757x192.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>&#10060;     Difficult for Users: Simple Example</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!q9Ul!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51c09327-9d3b-4d13-bf1d-3f8a7e28e0ad_757x192.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!q9Ul!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51c09327-9d3b-4d13-bf1d-3f8a7e28e0ad_757x192.jpeg 424w, https://substackcdn.com/image/fetch/$s_!q9Ul!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51c09327-9d3b-4d13-bf1d-3f8a7e28e0ad_757x192.jpeg 848w, https://substackcdn.com/image/fetch/$s_!q9Ul!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51c09327-9d3b-4d13-bf1d-3f8a7e28e0ad_757x192.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!q9Ul!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51c09327-9d3b-4d13-bf1d-3f8a7e28e0ad_757x192.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!q9Ul!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51c09327-9d3b-4d13-bf1d-3f8a7e28e0ad_757x192.jpeg" width="500" height="126.81638044914135" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/51c09327-9d3b-4d13-bf1d-3f8a7e28e0ad_757x192.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:192,&quot;width&quot;:757,&quot;resizeWidth&quot;:500,&quot;bytes&quot;:25986,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/184892394?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51c09327-9d3b-4d13-bf1d-3f8a7e28e0ad_757x192.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!q9Ul!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51c09327-9d3b-4d13-bf1d-3f8a7e28e0ad_757x192.jpeg 424w, https://substackcdn.com/image/fetch/$s_!q9Ul!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51c09327-9d3b-4d13-bf1d-3f8a7e28e0ad_757x192.jpeg 848w, https://substackcdn.com/image/fetch/$s_!q9Ul!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51c09327-9d3b-4d13-bf1d-3f8a7e28e0ad_757x192.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!q9Ul!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51c09327-9d3b-4d13-bf1d-3f8a7e28e0ad_757x192.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div><hr></div><p>&#9989;     Ideal Standard Style: Complex Example</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dUTH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74695816-f638-42f8-a077-45043c0fb943_757x268.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dUTH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74695816-f638-42f8-a077-45043c0fb943_757x268.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dUTH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74695816-f638-42f8-a077-45043c0fb943_757x268.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dUTH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74695816-f638-42f8-a077-45043c0fb943_757x268.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dUTH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74695816-f638-42f8-a077-45043c0fb943_757x268.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dUTH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74695816-f638-42f8-a077-45043c0fb943_757x268.jpeg" width="500" height="177.01453104359314" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/74695816-f638-42f8-a077-45043c0fb943_757x268.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:268,&quot;width&quot;:757,&quot;resizeWidth&quot;:500,&quot;bytes&quot;:45749,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/184892394?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74695816-f638-42f8-a077-45043c0fb943_757x268.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dUTH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74695816-f638-42f8-a077-45043c0fb943_757x268.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dUTH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74695816-f638-42f8-a077-45043c0fb943_757x268.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dUTH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74695816-f638-42f8-a077-45043c0fb943_757x268.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dUTH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74695816-f638-42f8-a077-45043c0fb943_757x268.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>&#9989;     Ideal MUI Style: Complex Example</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!E9CV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238c27a3-8637-456c-b472-3f35dc1b637d_757x268.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!E9CV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238c27a3-8637-456c-b472-3f35dc1b637d_757x268.jpeg 424w, https://substackcdn.com/image/fetch/$s_!E9CV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238c27a3-8637-456c-b472-3f35dc1b637d_757x268.jpeg 848w, https://substackcdn.com/image/fetch/$s_!E9CV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238c27a3-8637-456c-b472-3f35dc1b637d_757x268.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!E9CV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238c27a3-8637-456c-b472-3f35dc1b637d_757x268.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!E9CV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238c27a3-8637-456c-b472-3f35dc1b637d_757x268.jpeg" width="500" height="177.01453104359314" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/238c27a3-8637-456c-b472-3f35dc1b637d_757x268.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:268,&quot;width&quot;:757,&quot;resizeWidth&quot;:500,&quot;bytes&quot;:44331,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/184892394?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238c27a3-8637-456c-b472-3f35dc1b637d_757x268.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!E9CV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238c27a3-8637-456c-b472-3f35dc1b637d_757x268.jpeg 424w, https://substackcdn.com/image/fetch/$s_!E9CV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238c27a3-8637-456c-b472-3f35dc1b637d_757x268.jpeg 848w, https://substackcdn.com/image/fetch/$s_!E9CV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238c27a3-8637-456c-b472-3f35dc1b637d_757x268.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!E9CV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238c27a3-8637-456c-b472-3f35dc1b637d_757x268.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>&#10060;     Difficult for Users: Complex Example</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!b4An!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36fc7ed0-a29a-4c1b-88fc-0e8a9b3e32d1_801x220.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!b4An!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36fc7ed0-a29a-4c1b-88fc-0e8a9b3e32d1_801x220.jpeg 424w, https://substackcdn.com/image/fetch/$s_!b4An!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36fc7ed0-a29a-4c1b-88fc-0e8a9b3e32d1_801x220.jpeg 848w, https://substackcdn.com/image/fetch/$s_!b4An!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36fc7ed0-a29a-4c1b-88fc-0e8a9b3e32d1_801x220.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!b4An!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36fc7ed0-a29a-4c1b-88fc-0e8a9b3e32d1_801x220.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!b4An!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36fc7ed0-a29a-4c1b-88fc-0e8a9b3e32d1_801x220.jpeg" width="574" height="157.65293383270912" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/36fc7ed0-a29a-4c1b-88fc-0e8a9b3e32d1_801x220.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:220,&quot;width&quot;:801,&quot;resizeWidth&quot;:574,&quot;bytes&quot;:48519,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/184892394?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36fc7ed0-a29a-4c1b-88fc-0e8a9b3e32d1_801x220.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!b4An!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36fc7ed0-a29a-4c1b-88fc-0e8a9b3e32d1_801x220.jpeg 424w, https://substackcdn.com/image/fetch/$s_!b4An!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36fc7ed0-a29a-4c1b-88fc-0e8a9b3e32d1_801x220.jpeg 848w, https://substackcdn.com/image/fetch/$s_!b4An!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36fc7ed0-a29a-4c1b-88fc-0e8a9b3e32d1_801x220.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!b4An!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36fc7ed0-a29a-4c1b-88fc-0e8a9b3e32d1_801x220.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h1>Bonus: Auto-Formatting Fields</h1><p>Look for opportunities to implement auto-formatting. Unlike placeholder text, auto-formatting makes it easier for users to validate information as they go. For example, it&#8217;s easier to validate a phone number when it&#8217;s displayed in standard groupings rather than as a long string of numbers.</p><p>Auto-formatting can also guide users during data entry and help them avoid mistakes. For example, once you start typing a ZIP code, it becomes clear that you only need to enter five digits.</p><div><hr></div><h1>Conclusion</h1><p>I hope you find this document helpful even if you don&#8217;t use MUI.</p><p><strong>Here&#8217;s the data-based TL;DR:</strong></p><ul><li><p>All Input Fields Need A Label</p></li><li><p>Labels Must Always Be Visible And Persistent</p></li><li><p>All Required Fields Must Be Marked With An Indicator (Even when every field in a form is required).</p><ul><li><p><strong>&#128221; A Note On Visual Clutter: </strong>Many argue that labeling every field with a required indicator creates unnecessary visual clutter, causing cognitive load. Although this is true, decades of research have shown that the better of two evils is to use the required indicator on every single field within a form, as opposed to the alternatives. For example, just putting a single line of text at the top that says all fields are required. It&#8217;s a type 1 error vs. type 2 error tradeoff. Although showing all required indicators does create visual clutter, it&#8217;s better to be explicit than to have a design that is more likely to create false positive errors (users thinking an indicator-less input field is optional and having to go back and fix it after submitting causes a form error).<br></p><p>We have decades&#8217; worth of research that basically says users&#8217; eyes are where the cursor is, and they&#8217;re doing one mini-task at a time while in a form. Because of this, the solution of a global statement at the top of a form saying all fields are required is likely to get missed and forces users to keep that information in their working memory, which has been shown to be worse than the cognitive load tax placed on users when interacting with many single fields, one at a time, as recommended here. <br>Read more about this recommendation in a follow-up article I wrote titled <strong><a href="https://trevorcalabro.substack.com/p/the-anatomy-of-an-input-field-part">The Anatomy of an Input Field (Part 2)</a>.</strong></p></li></ul></li><li><p>An Asterisk Is A Widely Understood Indicator For Required Fields</p></li><li><p>&#8220;Optional&#8221; Indicators Should Only Be Used When Required And Optional Fields Are Mixed</p></li><li><p>Placeholder Text Should Almost Never Be Used</p></li><li><p>Floating Labels Create Usability And Accessibility Issues And Should Almost Never Be Used</p></li><li><p>System Help Text Should Appear Below The Field If Possible</p></li><li><p>Input Controls Can Genuinely Help Users When Auto-Formatting Is Used</p></li></ul><p>None of this is new research, and that&#8217;s kind of the point. Input fields have been studied for decades, yet teams still redesign them as if the basics are up for debate. Most of the problems I see in forms today don&#8217;t come from lack of creativity. They come from ignoring well-established interaction patterns in favor of aesthetic-only arguments or design system convenience.</p><p>If this document does anything, I hope it gives you a concrete reference you can point to when these discussions come up. Input fields aren&#8217;t a place to experiment. They&#8217;re a place to reduce friction, prevent errors, and let users move quickly through forms.</p><p>Thanks for reading! If you&#8217;ve had to argue about labels, placeholders, or floating fields on your own team, I&#8217;d be curious to hear how it played out. DM me or comment here with your own experiences.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://trevorcalabro.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">UX Research in the Wild is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Stop Weaponizing Jakob’s Law]]></title><description><![CDATA[Avoiding Bad Interaction Patterns in the Real World]]></description><link>https://trevorcalabro.substack.com/p/stop-weaponizing-jakobs-law</link><guid isPermaLink="false">https://trevorcalabro.substack.com/p/stop-weaponizing-jakobs-law</guid><dc:creator><![CDATA[Trevor Calabro]]></dc:creator><pubDate>Sat, 10 Jan 2026 13:35:31 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/10c74515-b8ae-4d22-9e39-1f30719c7396_694x619.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Summary: </strong>Jakob&#8217;s Law is meant to help UXers design around the way users already think, yet it is often misused to justify bad or overly fashionable designs. This article explains what the law actually means, how it gets twisted in practice, and offers a concrete way to apply it that stays grounded in real user behavior.</p><div><hr></div><p>Over the past 20+ years of working in UX, I have watched a very specific weird thing play out again and again. Aesthetically minded UX designers often take Jakob&#8217;s Law, bend it just enough to fit a design they already like, and then use that warped version of the principle to justify designs that break usability best practices. I have come to think of this as the weaponization of Jakob&#8217;s Law.</p><p>What makes this especially frustrating is that Jakob&#8217;s Law is actually one of the most grounded and practical ideas in UX. It is meant to protect users from unnecessary complexity, not to give UX charlatans cover for playing around with bad ideas. In this article, I want to go back to what Jakob&#8217;s Law actually says, explain the way I have always interpreted it, and share a way to spot when it is being misused so that teams can course-correct without turning the conversation into a fight.</p><h1>Jakob&#8217;s Law Refresher</h1><p>This is <a href="https://www.nngroup.com/articles/do-interface-standards-stifle-design-creativity/">Jakob&#8217;s Law as defined by Jakob Nielsen himself on the NN/g website</a>:</p><blockquote><p><strong><a href="https://www.nngroup.com/videos/jakobs-law-internet-ux/">Jakob&#8217;s Law of the Web User Experience:</a> </strong>Users spend most of their time on other sites. Thus, anything that is a convention and used on the majority of other sites will be burned into the users&#8217; brains and you can only deviate from it on pain of major usability problems.</p></blockquote><p>In plain language, it is a reminder that people do not learn how to use software by studying each interface in isolation. They build their understanding of interfaces by moving through dozens of apps and sites every day, slowly forming mental models about how things tend to work.</p><div class="pullquote"><p>The way I think of it is much simpler. Just don&#8217;t reinvent the wheel.</p></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ANRY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07773986-5910-4d6a-86c6-8a91c34e1aa2_1031x676.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ANRY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07773986-5910-4d6a-86c6-8a91c34e1aa2_1031x676.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ANRY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07773986-5910-4d6a-86c6-8a91c34e1aa2_1031x676.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ANRY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07773986-5910-4d6a-86c6-8a91c34e1aa2_1031x676.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ANRY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07773986-5910-4d6a-86c6-8a91c34e1aa2_1031x676.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ANRY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07773986-5910-4d6a-86c6-8a91c34e1aa2_1031x676.jpeg" width="439" height="287.84093113482055" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/07773986-5910-4d6a-86c6-8a91c34e1aa2_1031x676.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:676,&quot;width&quot;:1031,&quot;resizeWidth&quot;:439,&quot;bytes&quot;:371904,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/184119062?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07773986-5910-4d6a-86c6-8a91c34e1aa2_1031x676.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ANRY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07773986-5910-4d6a-86c6-8a91c34e1aa2_1031x676.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ANRY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07773986-5910-4d6a-86c6-8a91c34e1aa2_1031x676.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ANRY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07773986-5910-4d6a-86c6-8a91c34e1aa2_1031x676.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ANRY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07773986-5910-4d6a-86c6-8a91c34e1aa2_1031x676.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Your users come to your product carrying years of experience with other digital tools. They already know what standard UI controls are supposed to look like, what standard menus do, how standard UI controls behave, and how basic navigation elements usually work. Jakob&#8217;s Law is telling us we might as well leverage that existing knowledge in order to make our products more usable by default.</p><p>When teams follow Jakob&#8217;s Law in this spirit, they reduce cognitive load and make products feel easier to use because the interface lines up with patterns people have already absorbed from the rest of the world.</p><p>Users are not standing back, looking at their computer screens like a painting in a gallery, and saying themselves, wow, look at how intuitive this looks. Instead, we know that their eyes are likely where their cursor is, and they&#8217;re just trying to get some tasks done quickly and easily. A positive unintended consequence of following Jakob&#8217;s Law properly is that you avoid all that nonsense.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lxB_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660fb9de-b401-43c4-b584-540682bef3a5_967x556.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lxB_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660fb9de-b401-43c4-b584-540682bef3a5_967x556.jpeg 424w, https://substackcdn.com/image/fetch/$s_!lxB_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660fb9de-b401-43c4-b584-540682bef3a5_967x556.jpeg 848w, https://substackcdn.com/image/fetch/$s_!lxB_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660fb9de-b401-43c4-b584-540682bef3a5_967x556.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!lxB_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660fb9de-b401-43c4-b584-540682bef3a5_967x556.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lxB_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660fb9de-b401-43c4-b584-540682bef3a5_967x556.jpeg" width="442" height="254.1385729058945" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/660fb9de-b401-43c4-b584-540682bef3a5_967x556.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:556,&quot;width&quot;:967,&quot;resizeWidth&quot;:442,&quot;bytes&quot;:207453,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/184119062?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660fb9de-b401-43c4-b584-540682bef3a5_967x556.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lxB_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660fb9de-b401-43c4-b584-540682bef3a5_967x556.jpeg 424w, https://substackcdn.com/image/fetch/$s_!lxB_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660fb9de-b401-43c4-b584-540682bef3a5_967x556.jpeg 848w, https://substackcdn.com/image/fetch/$s_!lxB_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660fb9de-b401-43c4-b584-540682bef3a5_967x556.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!lxB_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660fb9de-b401-43c4-b584-540682bef3a5_967x556.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Intuitive interaction design isn&#8217;t static artwork.</figcaption></figure></div><h1>How Jakob&#8217;s Law Is Weaponized</h1><p>On the surface, Jakob&#8217;s Law sounds so obvious that it feels almost impossible to misuse, yet I have seen it twisted in hundreds of design reviews. The pattern usually shows up in one of two ways.</p><h3>Bad Pattern  1</h3><p>The first is what I think of as retroactive justification. A UX designer or a team comes up with a solution they find appealing, whether that is a new interaction, a stripped-down control, or a novel layout. Once someone raises a usability concern, the team starts searching for any example on the internet that looks vaguely similar. As soon as they find one, Jakob&#8217;s Law gets invoked as if that single example somehow proves that users are already familiar with the pattern.</p><p>For example, I once worked with a team that introduced hidden controls into a dense data table so the interface would look &#8220;cleaner.&#8221; When users struggled to discover those controls in early testing, someone produced a screenshot from a niche analytics tool that did something similar and claimed that Jakob&#8217;s Law justified the choice. What was missing from that argument was any serious look at how often users encounter that pattern across the kinds of tools they actually use.</p><blockquote><p><strong>&#128161; Key Take Away: </strong>One isolated example does not create a mental model, yet Jakob&#8217;s Law is often being used as if it did.</p></blockquote><h3>Bad Pattern  2</h3><p>The second and even more common misuse happens when teams copy something from a large consumer product and treat it as a universal best practice. Google is the example that comes up most often. For example, Google products use many icon-only buttons with no labels, so designers will propose unlabeled buttons in a completely different context and then argue that Google has tested it and therefore it must be good UX.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NwlG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf54c43-4d2e-4c4a-82f8-65195cb5aa59_2560x856.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NwlG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf54c43-4d2e-4c4a-82f8-65195cb5aa59_2560x856.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NwlG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf54c43-4d2e-4c4a-82f8-65195cb5aa59_2560x856.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NwlG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf54c43-4d2e-4c4a-82f8-65195cb5aa59_2560x856.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NwlG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf54c43-4d2e-4c4a-82f8-65195cb5aa59_2560x856.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NwlG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf54c43-4d2e-4c4a-82f8-65195cb5aa59_2560x856.jpeg" width="506" height="169.24587912087912" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2cf54c43-4d2e-4c4a-82f8-65195cb5aa59_2560x856.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:487,&quot;width&quot;:1456,&quot;resizeWidth&quot;:506,&quot;bytes&quot;:219655,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/184119062?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf54c43-4d2e-4c4a-82f8-65195cb5aa59_2560x856.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NwlG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf54c43-4d2e-4c4a-82f8-65195cb5aa59_2560x856.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NwlG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf54c43-4d2e-4c4a-82f8-65195cb5aa59_2560x856.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NwlG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf54c43-4d2e-4c4a-82f8-65195cb5aa59_2560x856.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NwlG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf54c43-4d2e-4c4a-82f8-65195cb5aa59_2560x856.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>What that line of reasoning ignores is that Google operates under a very different set of conditions than most companies. Their value in the market comes from being ubiquitous. People use Gmail, Calendar, Docs, Search, and many other Google products constantly, which gives Google the ability to introduce new patterns and force users to gradually learn them through repeated exposure across their ecosystem, even when they break common UX best practices.</p><p>Most products do not have that advantage. A ride-sharing app, a banking app, or an enterprise tool depends on people being able to complete one-off and infrequent tasks quickly and without confusion. When someone gets stuck in those experiences, they often leave and try a competitor. Decades of usability research have shown that small points of friction can have an outsized impact on whether people stick with a product or abandon it.</p><blockquote><p><strong>&#128161; Key Take Away: </strong>Treating Google, or any other large tech platform, as a model for making design decisions creates a dangerous blind spot because it assumes that your users will invest the same time and patience in learning your interface that they do in those environments.</p></blockquote><p>In the real world, very few products have that kind of margin for error or can afford usability standards as poor as Google&#8217;s.</p><h1>How To Not Fall Victim</h1><p>The most reliable way I have found to keep Jakob&#8217;s Law from being misused is to turn it into a very specific design exercise instead of a vague principle that people can wave around in meetings.</p><p>When someone wants to use Jakob&#8217;s Law to justify a design decision, I ask them to do three things.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sx0X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd36ae04-7b9e-4a9b-9262-6227321f7697_687x602.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sx0X!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd36ae04-7b9e-4a9b-9262-6227321f7697_687x602.jpeg 424w, https://substackcdn.com/image/fetch/$s_!sx0X!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd36ae04-7b9e-4a9b-9262-6227321f7697_687x602.jpeg 848w, https://substackcdn.com/image/fetch/$s_!sx0X!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd36ae04-7b9e-4a9b-9262-6227321f7697_687x602.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!sx0X!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd36ae04-7b9e-4a9b-9262-6227321f7697_687x602.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sx0X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd36ae04-7b9e-4a9b-9262-6227321f7697_687x602.jpeg" width="283" height="247.9854439592431" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bd36ae04-7b9e-4a9b-9262-6227321f7697_687x602.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:602,&quot;width&quot;:687,&quot;resizeWidth&quot;:283,&quot;bytes&quot;:97944,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/184119062?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd36ae04-7b9e-4a9b-9262-6227321f7697_687x602.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sx0X!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd36ae04-7b9e-4a9b-9262-6227321f7697_687x602.jpeg 424w, https://substackcdn.com/image/fetch/$s_!sx0X!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd36ae04-7b9e-4a9b-9262-6227321f7697_687x602.jpeg 848w, https://substackcdn.com/image/fetch/$s_!sx0X!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd36ae04-7b9e-4a9b-9262-6227321f7697_687x602.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!sx0X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd36ae04-7b9e-4a9b-9262-6227321f7697_687x602.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Step 1: Define what the interface is actually doing in plain terms</h3><p>Not what the feature is called internally, but what the user is trying to accomplish. For example, &#8220;select a time for a ride,&#8221; &#8220;filter a list of transactions,&#8221; or &#8220;navigate between sections of an account.&#8221; This matters because Jakob&#8217;s Law applies to tasks, not to brand names. If you cannot describe the user&#8217;s goal in a simple way, you are not ready to claim that a familiar pattern exists.</p><h3>Step 2: Collect examples from at least five products that solve the same kind of problem for similar users</h3><p>If you are working on a finance app, that means other finance apps. If you are working on a logistics tool, that means other logistics tools. Screenshots from a popular interface only count if they are actually doing the same kind of work your product does. This step forces the conversation out of personal preference and into what users are actually exposed to in the real-world.</p><h3>Step 3: Lay those examples side by side and look for what repeats</h3><p>Do most of them use labeled buttons? Do they all put filters in the same place? Do they present options in a fixed, predictable layout, or does the layout change based on context in a way users have to learn? The patterns that show up again and again are the ones users are most likely to have internalized. Those are the patterns Jakob&#8217;s Law is pointing you toward.</p><p>If the design being proposed lines up with what you see across those examples, then Jakob&#8217;s Law probably supports it. If it only matches one or two cherry-picked interfaces, then what you have is a novel design idea, not a familiar one, and it should be treated as something that needs validation through testing rather than defended as a known best practice.</p><p>I have used this exact process in design reviews many times, and it changes the tone of the room.</p><div class="pullquote"><p>With this context, people magically stop arguing about whether something looks cool and start talking about what users already know how to do.</p></div><p>That shift alone prevents most of the misuse, because Jakob&#8217;s Law no longer belongs to whoever can find the flashiest example. It belongs to the collective experience of the users you are designing for.</p><h1>Conclusion</h1><p>Here is the way I think about Jakob&#8217;s Law after watching it get misused for so long. It is meant to be a user-centered principle that helps teams respect the knowledge users bring with them into a product. When it gets reduced to a way to defend a favorite design or to copy a big tech company without considering context, it stops serving that purpose.</p><div class="pullquote"><p>Strong UX work starts from shared mental models and proven patterns, especially in products where users have little patience for confusion.</p></div><p>Jakob&#8217;s Law is at its best when it guides teams toward those patterns and keeps them grounded in how people actually use technology day to day.</p><p>Thanks for reading! If this connects with something you have seen on your own teams, I would love to hear about it, and I hope it gives you a few new ways to push for design decisions that truly respect how users learn and work.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://trevorcalabro.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">UX Research in the Wild is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[2025 in Review]]></title><description><![CDATA[Reflecting on UX Research in the Wild's 3rd Year]]></description><link>https://trevorcalabro.substack.com/p/2025-in-review</link><guid isPermaLink="false">https://trevorcalabro.substack.com/p/2025-in-review</guid><dc:creator><![CDATA[Trevor Calabro]]></dc:creator><pubDate>Wed, 31 Dec 2025 14:05:59 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/18439bfd-127f-4151-8e15-c15d05fa5132_694x619.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Summary:</strong> 2025&#8217;s most read articles, topic trends, and predictions for 2026.</p><div><hr></div><p>As 2025 comes to a close, I&#8217;m happy to report that <em>UX Research in the Wild&#8217;s </em>weekly blog posts are still cookin&#8217;. This year pushed me to write more from direct experience, focusing on what consistently works and what quietly breaks down in day-to-day UX practice.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jFbZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66cb7015-2735-4f46-a03a-4797afe4f1a8_1982x1040.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jFbZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66cb7015-2735-4f46-a03a-4797afe4f1a8_1982x1040.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jFbZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66cb7015-2735-4f46-a03a-4797afe4f1a8_1982x1040.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jFbZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66cb7015-2735-4f46-a03a-4797afe4f1a8_1982x1040.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jFbZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66cb7015-2735-4f46-a03a-4797afe4f1a8_1982x1040.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jFbZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66cb7015-2735-4f46-a03a-4797afe4f1a8_1982x1040.jpeg" width="1456" height="764" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/66cb7015-2735-4f46-a03a-4797afe4f1a8_1982x1040.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:764,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:729618,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/182991511?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66cb7015-2735-4f46-a03a-4797afe4f1a8_1982x1040.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jFbZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66cb7015-2735-4f46-a03a-4797afe4f1a8_1982x1040.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jFbZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66cb7015-2735-4f46-a03a-4797afe4f1a8_1982x1040.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jFbZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66cb7015-2735-4f46-a03a-4797afe4f1a8_1982x1040.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jFbZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66cb7015-2735-4f46-a03a-4797afe4f1a8_1982x1040.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Looking ahead to 2026, I&#8217;m feeling even more optimistic than last year at this time. 2025 was filled with reframing old ideas, sharing tools for the real world, and some wild off-the-cuff rants. Here are some 2025 highlights and a look at what might be coming up in 2026.</p><h1>Article Groupings</h1><p>I saw some patterns in this year&#8217;s posts that I want to share here. The most growth and success I saw in reader engagement was around these 3 groupings:</p><h2>Group #1: Thought Pieces</h2><p>This list is full of articles that explore broader ideas about the UX profession. Let&#8217;s call these <em>&#8220;opinionated reflections&#8221; </em>I&#8217;ve had over the last year while deep in the trenches of real-world UX work. Some of these are rants, some are critiques, and all are meant to challenge how we think about our work.</p><ol><li><p><a href="https://trevorcalabro.substack.com/p/every-icon-needs-a-label">Every </a><strong><a href="https://trevorcalabro.substack.com/p/every-icon-needs-a-label">Icon</a></strong><a href="https://trevorcalabro.substack.com/p/every-icon-needs-a-label"> Needs a </a><strong><a href="https://trevorcalabro.substack.com/p/every-icon-needs-a-label">Label</a></strong></p></li><li><p><strong><a href="https://trevorcalabro.substack.com/p/weaponized-institutional-knowledge">Weaponized</a></strong><a href="https://trevorcalabro.substack.com/p/weaponized-institutional-knowledge"> Institutional Knowledge in UX</a></p></li><li><p><a href="https://trevorcalabro.substack.com/p/why-i-stay-an-ic">Why I </a><strong><a href="https://trevorcalabro.substack.com/p/why-i-stay-an-ic">Stay an IC</a></strong></p></li><li><p><strong><a href="https://trevorcalabro.substack.com/p/bad-patterns-dont-need-checklists">Bad UI Patterns</a></strong><a href="https://trevorcalabro.substack.com/p/bad-patterns-dont-need-checklists"> Don&#8217;t Need Checklists</a></p></li><li><p><a href="https://trevorcalabro.substack.com/p/most-ui-animations-shouldnt-exist">Most </a><strong><a href="https://trevorcalabro.substack.com/p/most-ui-animations-shouldnt-exist">UI Animations</a></strong><a href="https://trevorcalabro.substack.com/p/most-ui-animations-shouldnt-exist"> Shouldn&#8217;t Exist</a></p></li><li><p><a href="https://trevorcalabro.substack.com/p/the-dangerous-appeal-of-fake-users">The Dangerous Appeal of </a><strong><a href="https://trevorcalabro.substack.com/p/the-dangerous-appeal-of-fake-users">Fake AI Users</a></strong></p></li><li><p><strong><a href="https://trevorcalabro.substack.com/p/usability-tests-vs-concept-tests">Usability</a></strong><a href="https://trevorcalabro.substack.com/p/usability-tests-vs-concept-tests"> Tests vs.</a><strong><a href="https://trevorcalabro.substack.com/p/usability-tests-vs-concept-tests"> Concept</a></strong><a href="https://trevorcalabro.substack.com/p/usability-tests-vs-concept-tests"> Tests</a></p></li><li><p><strong><a href="https://trevorcalabro.substack.com/p/apple-chose-aesthetics-over-access">Apple </a></strong><a href="https://trevorcalabro.substack.com/p/apple-chose-aesthetics-over-access">Chose Aesthetics Over Access, Again</a></p></li><li><p><a href="https://trevorcalabro.substack.com/p/why-your-navigation-sucks">Why Your </a><strong><a href="https://trevorcalabro.substack.com/p/why-your-navigation-sucks">Navigation</a></strong><a href="https://trevorcalabro.substack.com/p/why-your-navigation-sucks"> Stinks</a></p></li><li><p><a href="https://trevorcalabro.substack.com/p/users-dont-care-about-your-figma">Users Don&#8217;t Care About Your </a><strong><a href="https://trevorcalabro.substack.com/p/users-dont-care-about-your-figma">Figma </a></strong><a href="https://trevorcalabro.substack.com/p/users-dont-care-about-your-figma">File</a></p></li><li><p><a href="https://trevorcalabro.substack.com/p/the-problem-with-split-buttons">The Problem With </a><strong><a href="https://trevorcalabro.substack.com/p/the-problem-with-split-buttons">Split Buttons</a></strong></p></li><li><p><strong><a href="https://trevorcalabro.substack.com/p/ux-is-thankless-and-thats-a-good">UX Is Thankless</a></strong><a href="https://trevorcalabro.substack.com/p/ux-is-thankless-and-thats-a-good"> and That&#8217;s a Good Thing</a></p></li><li><p><a href="https://trevorcalabro.substack.com/p/research-questions-arent-ai-prompts">Research Questions Aren&#8217;t </a><strong><a href="https://trevorcalabro.substack.com/p/research-questions-arent-ai-prompts">AI Prompts</a></strong></p></li></ol><h2>Group #2: Free Tools</h2><p>These 11 articles share free UX tools I built and provided throughout 2025 to support UX work in the real world. Each tool was created to solve a specific, practical problem I kept seeing teams struggle with in their day-to-day work. I hope you find something here you can put into use in 2026.</p><ol><li><p><a href="https://trevorcalabro.substack.com/p/calculating-the-roi-of-ux">Calculating </a><strong><a href="https://trevorcalabro.substack.com/p/calculating-the-roi-of-ux">the ROI of UX</a></strong><a href="https://trevorcalabro.substack.com/p/calculating-the-roi-of-ux">: A 5-Step Framework Template</a></p></li><li><p><strong><a href="https://trevorcalabro.substack.com/p/regression-for-ux-research">Regression</a></strong><a href="https://trevorcalabro.substack.com/p/regression-for-ux-research"> for UX Research: Completion Time </a><strong><a href="https://trevorcalabro.substack.com/p/regression-for-ux-research">RStudio</a></strong><a href="https://trevorcalabro.substack.com/p/regression-for-ux-research"> Tutorial</a></p></li><li><p><a href="https://trevorcalabro.substack.com/p/ux-research-starts-with-tasks">UX Research Starts with </a><strong><a href="https://trevorcalabro.substack.com/p/ux-research-starts-with-tasks">Tasks</a></strong><a href="https://trevorcalabro.substack.com/p/ux-research-starts-with-tasks">: 3-Step Framework</a></p></li><li><p><a href="https://trevorcalabro.substack.com/p/how-many-users-do-i-need-42e">How Many Users Do I Need?: </a><strong><a href="https://trevorcalabro.substack.com/p/how-many-users-do-i-need-42e">Sample Size</a></strong><a href="https://trevorcalabro.substack.com/p/how-many-users-do-i-need-42e"> Framework</a></p></li><li><p><strong><a href="https://trevorcalabro.substack.com/p/pendo-rollout-playbook">Pendo</a></strong><a href="https://trevorcalabro.substack.com/p/pendo-rollout-playbook"> Rollout Playbook</a></p></li><li><p><a href="https://trevorcalabro.substack.com/p/make-it-look-like-what-it-does">Make It Look Like What It Does: </a><strong><a href="https://trevorcalabro.substack.com/p/make-it-look-like-what-it-does">Affordances</a></strong><a href="https://trevorcalabro.substack.com/p/make-it-look-like-what-it-does"> &amp; </a><strong><a href="https://trevorcalabro.substack.com/p/make-it-look-like-what-it-does">Signifiers </a></strong><a href="https://trevorcalabro.substack.com/p/make-it-look-like-what-it-does">Guide</a></p></li><li><p><strong><a href="https://trevorcalabro.substack.com/p/quantifying-qual-a-comprehensive">Quantifying Qual:</a></strong><a href="https://trevorcalabro.substack.com/p/quantifying-qual-a-comprehensive"> R Code &amp; Templates</a></p></li><li><p><a href="https://trevorcalabro.substack.com/p/how-to-run-a-cognitive-walkthrough">How To Run A </a><strong><a href="https://trevorcalabro.substack.com/p/how-to-run-a-cognitive-walkthrough">Cognitive Walkthrough</a></strong><a href="https://trevorcalabro.substack.com/p/how-to-run-a-cognitive-walkthrough">: Downloadable Template</a></p></li><li><p><strong><a href="https://trevorcalabro.substack.com/p/confidence-intervals-for-usability">Confidence Intervals </a></strong><a href="https://trevorcalabro.substack.com/p/confidence-intervals-for-usability">for Usability Tests: Excel &amp; GSheets Downloads</a></p></li><li><p><strong><a href="https://trevorcalabro.substack.com/p/cognitive-biases-in-ux-research">Cognitive Biases</a></strong><a href="https://trevorcalabro.substack.com/p/cognitive-biases-in-ux-research"> in UX Research: Guide</a></p></li><li><p><strong><a href="https://trevorcalabro.substack.com/p/aria-101-for-ux">ARIA</a></strong><a href="https://trevorcalabro.substack.com/p/aria-101-for-ux"> 101 for UX: Tutorial &amp; Guide</a></p></li></ol><h2>Group #3: The Reframing Series</h2><p>This final list is articles that start with UXR things we already know, but I put a new spin on them. I hope these help UXers better navigate doing good UX work in the real world. I encourage you to take another look at a few of these and see whether a small shift in perspective can make a big difference for your career in the new year.</p><ol><li><p><a href="https://trevorcalabro.substack.com/p/reframing-interaction-design-basics">Reframing </a><strong><a href="https://trevorcalabro.substack.com/p/reframing-interaction-design-basics">Interaction Design Basics</a></strong></p></li><li><p><a href="https://trevorcalabro.substack.com/p/reframing-error-bars">Reframing </a><strong><a href="https://trevorcalabro.substack.com/p/reframing-error-bars">Error Bars</a></strong></p></li><li><p><a href="https://trevorcalabro.substack.com/p/rethinking-user-delight">Rethinking </a><strong><a href="https://trevorcalabro.substack.com/p/rethinking-user-delight">User Delight</a></strong></p></li><li><p><a href="https://trevorcalabro.substack.com/p/rethinking-correlation">Rethinking </a><strong><a href="https://trevorcalabro.substack.com/p/rethinking-correlation">Correlation</a></strong></p></li><li><p><strong><a href="https://trevorcalabro.substack.com/p/ux-research-debriefs-reframed">UX Research Debriefs </a></strong><a href="https://trevorcalabro.substack.com/p/ux-research-debriefs-reframed">Reframed</a></p></li><li><p><a href="https://trevorcalabro.substack.com/p/reframing-user-research-plans">Reframing </a><strong><a href="https://trevorcalabro.substack.com/p/reframing-user-research-plans">User Research Plans</a></strong></p></li><li><p><a href="https://trevorcalabro.substack.com/p/reframing-dark-patterns-2025-edition">Reframing </a><strong><a href="https://trevorcalabro.substack.com/p/reframing-dark-patterns-2025-edition">Dark Patterns</a></strong><a href="https://trevorcalabro.substack.com/p/reframing-dark-patterns-2025-edition">: 2025 Edition</a></p></li></ol><h1><strong>Top 5 Articles of 2025</strong></h1><p>Even though the 3 groups above have been well received, a few articles really broke through and got subscribers talking. Here are the ones that prompted the most conversions from the UX community.</p><ol><li><p><a href="https://open.substack.com/pub/trevorcalabro/p/speaking-without-words-my-sons-tech?r=1o7rq3&amp;utm_campaign=post&amp;utm_medium=web&amp;showWelcomeOnShare=true">Calculating the</a><strong><a href="https://open.substack.com/pub/trevorcalabro/p/speaking-without-words-my-sons-tech?r=1o7rq3&amp;utm_campaign=post&amp;utm_medium=web&amp;showWelcomeOnShare=true"> ROI of UX</a></strong><a href="https://open.substack.com/pub/trevorcalabro/p/speaking-without-words-my-sons-tech?r=1o7rq3&amp;utm_campaign=post&amp;utm_medium=web&amp;showWelcomeOnShare=true">: A 5-Step Framework Template</a> - This post outlines a simple 5-step framework for calculating the value of UX work. It also provides advice on avoiding common mistakes and effectively reporting findings. It also inspired this <a href="https://www.userinterviews.com/ux-roi-calculator">calculator tool built by User Interviews</a>, the sponsor of the post. Check it out!</p></li><li><p><a href="https://trevorcalabro.substack.com/p/why-i-stay-an-ic">Why I </a><strong><a href="https://trevorcalabro.substack.com/p/why-i-stay-an-ic">Stay an IC</a></strong><a href="https://trevorcalabro.substack.com/p/why-i-stay-an-ic">: And Why I Think Some of You Should Too</a> - My case for why senior UX researchers don&#8217;t need a management title to lead. By staying close to the work and showing up early with clear questions, ICs are often better positioned to drive strategy, shape roadmaps, and become indispensable partners in decision-making.</p></li><li><p><a href="https://trevorcalabro.substack.com/p/the-dangerous-appeal-of-fake-users">The Dangerous Appeal of</a><strong><a href="https://trevorcalabro.substack.com/p/the-dangerous-appeal-of-fake-users"> Fake AI Users</a></strong><a href="https://trevorcalabro.substack.com/p/the-dangerous-appeal-of-fake-users">: There&#8217;s Nothing Human-Centered About Talking to a Chatbot</a> - The synthetic user trend comes straight out of product management culture, where speed and efficiency are often mistaken for insight. This article breaks down why that idea will collapse under the weight of real user research and the demands of actual human behavior.</p></li><li><p><strong><a href="https://trevorcalabro.substack.com/p/mixed-methods-studies-that-mix">Mixed Methods </a></strong><a href="https://trevorcalabro.substack.com/p/mixed-methods-studies-that-mix">Studies That Mix: Mixed Methods Research in the Real World</a> - I&#8217;ve found that most UX teams say they&#8217;re doing mixed methods when they&#8217;re really just running two separate studies. This article breaks down what real mixed methods research looks like in UX and how to design studies that actually integrate qual and quant from the start.</p></li><li><p><a href="https://trevorcalabro.substack.com/p/goms-klm-vs-chatgpt">GOMS-KLM vs. </a><strong><a href="https://trevorcalabro.substack.com/p/goms-klm-vs-chatgpt">ChatGPT</a></strong><a href="https://trevorcalabro.substack.com/p/goms-klm-vs-chatgpt">: LLMs Can&#8217;t Handle Time-on-Task Modeling Yet</a> - This article documents how I tried to get ChatGPT-4o to run a full GOMS-KLM analysis using my calculation template, workflow description, and interface screenshots. It sounded like the perfect task for AI, but what I got back was... not so good.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vad_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ea391b4-8176-4c11-a081-36682a69378b_1982x1040.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vad_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ea391b4-8176-4c11-a081-36682a69378b_1982x1040.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vad_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ea391b4-8176-4c11-a081-36682a69378b_1982x1040.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vad_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ea391b4-8176-4c11-a081-36682a69378b_1982x1040.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vad_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ea391b4-8176-4c11-a081-36682a69378b_1982x1040.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vad_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ea391b4-8176-4c11-a081-36682a69378b_1982x1040.jpeg" width="1456" height="764" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8ea391b4-8176-4c11-a081-36682a69378b_1982x1040.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:764,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:547273,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://trevorcalabro.substack.com/i/182991511?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ea391b4-8176-4c11-a081-36682a69378b_1982x1040.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vad_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ea391b4-8176-4c11-a081-36682a69378b_1982x1040.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vad_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ea391b4-8176-4c11-a081-36682a69378b_1982x1040.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vad_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ea391b4-8176-4c11-a081-36682a69378b_1982x1040.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vad_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ea391b4-8176-4c11-a081-36682a69378b_1982x1040.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1>2026 Predictions</h1><p>Now, for the tradition of me making ill-thought-out predictions for the upcoming year. <em>Hahahaha. </em>Without further ado, here are my thoughts for 2026, a few predictions I&#8217;ve been thinking about lately:</p><blockquote><p><strong>&#128221; NOTE: </strong>Check out <a href="https://trevorcalabro.substack.com/p/2024-in-review">last year&#8217;s predictions here</a> to see what I got wrong and what I got right. After my own assessment, I think I got about 8.5/10 correct. <em>(1 flat-out wrong and 1 partially right. Hahahaha.) </em>Check it out and tell me what you think.</p></blockquote><ol><li><p><strong>Senior UXRs will be valued more for their judgment -</strong> By the end of 2026, the strongest researchers will be hired less for what methods they can run and more for what they can stop. Saying no, slowing teams down, and calling out weak logic will become core expectations of senior roles. This will make the job harder, not easier, and far more important.</p></li><li><p><strong>Calculating the ROI of UX will become a must-have -</strong> It is not inherently a UX researcher&#8217;s job to build financial models, but it sits squarely within our strengths. We already connect behavior, outcomes, and decisions across teams, which puts us in a rare position to translate research impact into something the business actually understands. In 2026, the senior researchers who can clearly show how UX work changes cost, risk, or revenue will have far more influence than those who only report research insights.</p></li><li><p><strong>Synthetic users will quietly fall out of favor -</strong> After a year of LLMs pretending to be users, orgs will start to recognize that simulated conversations are not a substitute for real human behavior. What looks like insight is often just automated bias confirmation, reinforcing existing assumptions while skipping observation, friction, and context. By late 2026, using AI proxy users will start to feel embarrassing in serious research orgs.</p></li><li><p><strong>UX maturity will split cleanly into 2 camps - </strong>Companies will increasingly fall into either system-driven UX orgs or vibes-driven UX orgs. The gap between these two approaches will become impossible to ignore. One group will likely be able to explain decisions, tradeoffs, and ROI. The other will keep shipping confident-looking products that underperform once they meet real-world market conditions.</p></li><li><p><strong>UXRs will spend less time running studies and more time fixing inputs - </strong>The best researchers will increasingly be pulled upstream to define questions, success criteria, and evidence standards before any research happens. This work will be less visible and harder to explain, but <em>wayyyyy </em>more valuable. UXers who skip this step will keep getting fast answers to the wrong problems.</p></li><li><p><strong>Heuristic reviews will regain credibility as a senior skill - </strong>As teams get tired of expensive studies answering obvious questions, heuristic analysis will quietly creep back into favor. I&#8217;m talking expert-driven evaluations grounded in task flow and real-world context. Less mature teams will still underestimate heuristic analysis, but don&#8217;t worry, senior leaders will likely keep relying on them once they see the impact they have in action.</p></li><li><p><strong>User &#8220;delight&#8221; will continue to be misunderstood - </strong>The word &#8220;delight&#8221; will still be showing up everywhere, and most teams will again confuse aesthetics with actual user benefit. This will lead to more bad animation, less proper labeling, and ultimately more user friction. But the small number of teams that understand what user delight really is will outperform the rest.</p></li><li><p><strong>UX research ops will matter more than ever - </strong>Orgs will likely slowly start to realize that one great researcher cannot fix a broken system. The teams that improve will invest in templates, decision logs, evidence standards, and repeatable workflows. The ones that do not will keep burning out their strongest people.</p></li><li><p><strong>Accessibility will stop being framed as a checklist -</strong> I think it&#8217;s inevitable that teams will start talking about accessibility in terms of failure modes, legal exposure, and task breakdowns rather than WCAG checklist items. This shift will make accessibility less &#8220;optional&#8221; and more operational. It will also expose how little many teams actually understand about real user constraints.</p></li><li><p><strong>UX research reporting will get shorter and sharper - </strong>Long decks will be replaced by more concise readouts, shared docs, and short video clips, and they will all include real-world recommendations. Stakeholders will not suddenly fall in love with user research, but they will tolerate it more when it is clearly scoped and obviously impactful to the bottom line. User researchers who can&#8217;t summarize impact in plain language and do so with a clear point of view will struggle in 2026.</p></li></ol><p>What do you think of these predictions? Agree, disagree, or have a different take? Drop a comment below or send me a DM to keep the discussion going.</p><h1>Conclusion</h1><p>2025 was a year of heads-down UX work in the real world for <em>UX Research in the Wild</em>. A lot of what I wrote came directly from patterns I kept seeing across teams, products, and orgs, both the stuff that works and the stuff that keeps breaking down. My goal this year was not to chase trends, but to document what actually holds up when UX meets real-world constraints and business pressure. I hope you found some of my thoughts helpful in 2025.</p><p>Thank you for following along this year! I&#8217;m looking forward to sharing more about the UX topics that have been popping up in my day-to-day work. Wishing you a happy holiday season and a user-centered, insightful 2026!</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://trevorcalabro.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">UX Research in the Wild is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>