Skip to content
The Product Guys
All lessons
Craft5 min read

Progressive Disclosure Without Hiding the Product

Revealing complexity in stages helps, until the user cannot find the thing they need.


Thicket makes email automation for online shops. Its campaign editor once showed 30 settings on one screen. After a redesign it shows four, with the rest behind a link called Advanced. Support tickets about confusion drop. Six months later, a different problem: nobody is using send-time optimisation, the feature the team considers their edge. It lives under Advanced, three panels deep.

progressive disclosure: Showing the few controls most people need, and keeping the rest one step away. worked exactly as designed, and the design was wrong. Hiding is a cost as well as a benefit, and teams usually only account for the benefit.

Collapsing without burying

1Stage by frequency, then byconsequenceWhat most people need every time goeson top, whatever the org chart says.2Label what is insideAdvanced tells the user nothing.Retention and deletion tells themwhether to open it.3Show the current value on the closedrowSo somebody scanning for a wrongsetting can find it without openingall nine sections.
Staging complexity works right up to the moment somebody cannot find the setting they came for. The difference between the two outcomes is almost entirely in how the closed section is labelled.

The principle, and the constraint

The idea is old and well supported. Carroll and Carrithers published work in 1984 on training wheels interfaces, where blocking access to advanced functions helped novices learn a word processor faster and with fewer errors. Nielsen's work at NN Group makes the same argument for staging complexity: show the small set that covers the common case, keep the rest one step away.

The constraint is discoverability. Don Norman's central worry in The Design of Everyday Things is that people cannot use what they cannot find, and a control that leaves no trace on the screen has been removed from the product for practical purposes. The job is choosing what to stage, and leaving a visible handle on what you staged.

Deciding what to disclose later

Frequency
Used in most sessions, keep it visible. Used a few times a year, stage it. Look at real event data rather than intuition; teams badly overestimate how often advanced settings are touched and underestimate how often one specific advanced setting is.
Consequence
A setting that can break a live campaign needs to be findable when someone is debugging, even if it is rarely changed. Rare and important is a different case from rare and trivial.
Whether it changes the outcome
If a hidden option would substantially improve the result the user gets, hiding it is quietly making their work worse. Surface it as a suggestion at the moment it applies.

Disclosure that hides

  • Advanced
  • More options
  • Settings
  • Show 26 more fields

Disclosure that signposts

  • Delivery timing (currently: send immediately)
  • Audience filters (2 active: Bought in last 90 days, Not in Lapsed)
  • Sending domain, unsubscribe text, reply-to address
  • Send-time optimisation: we can send each contact at the hour they usually open. Turn on

Every string in the right column does two things a generic label cannot: it says what lives in there, and it reports the current state. Delivery timing (currently: send immediately) means a user debugging a badly timed campaign knows where to look without opening anything. Advanced means they have to go fishing.

The last row is the most useful pattern. Instead of waiting to be discovered, a staged feature can appear as a one-line offer at the moment it is relevant, with its benefit stated. This is not a tour and it is not a tooltip that fires on load. It is a contextual suggestion sitting next to the setting it would change.

Worked example

Thicket fixes it without un-hiding everything

They keep Advanced collapsed, but rename the sections and add state. Delivery timing moves out of Advanced and onto the main panel as a single row reading Send: immediately, with a link, Optimise per contact. The campaign preview then shows a second line: With optimisation, 60% of this list would receive it between 7 and 9am. Adoption of send-time optimisation goes from 3 percent of campaigns to 41 percent. The editor still shows four primary settings.

Failure modes to watch

  • Accordion soup. Eight collapsed sections is not simpler than one long page, it is a long page you have to open eight times and cannot search with Ctrl+F.
  • Hiding state. Collapsing a section that contains an active setting means the user cannot see what is configured. Always show the count or the current value on the header.
  • Staging for the wrong user. If a setting is advanced for a first-time user and routine for a returning one, the split should follow the user, not the feature. Remember expanded sections.
  • Using disclosure to avoid deciding. Twelve settings behind a link is often twelve settings nobody was willing to make a default for.

The last one is the real trap. Progressive disclosure is sometimes used to dodge the harder work of picking good defaults and deleting options. If Advanced keeps growing, the panel is not the problem.

Quick check

Why is Delivery timing (currently: send immediately) better than a section labelled Advanced?

The takeaway

Stage complexity by frequency and consequence, and label every collapsed section with what is inside and what it is currently set to.

Try this tomorrow

Rename every collapsed section in one screen so the header states its contents and current value, and move any rarely-changed but high-consequence setting into view.

Answer the check above, then bank the day.

Where this comes from

  • Training wheels in a user interface (1984), John Carroll and Caroline Carrithers
  • Progressive Disclosure, Jakob Nielsen, NN Group
  • The Design of Everyday Things, Don Norman

Craft is one of six tracks. These lessons summarise and build on the work above, they do not reproduce it. Buy the books, they are better.