Navigation
WorkAboutGet in touch

© 2026 Alfonso Barreiro

← Back to work
Spotify · UX Case Study

Recently Played Controls

I'm a daily Spotify power user, and the Recently Played shelf has no way to pin a favorite, hide an embarrassing play, or pause history before handing the phone to someone else. Pin, Remove, Pause: a concept project where the validation framework is the deliverable.

≤ 2 taps

to pin a favorite

≤ 6 sec

to remove + undo

+8 pts

UMUX-Lite vs. baseline

Role

UX/UI Designer

Type

Solo · Concept

Timeline

Nov – Dec 2025

Methods

Competitive Audit · Persona Analysis · Constraint Mapping · AI-Assisted Research Synthesis

Outcome

Three controls that close the gap between user need and platform capability, without breaking discovery

Spotify Recently Played Controls. UI preview showing Pin, Remove, and Pause controls on the Home shelf

The system at a glance

The three core actions: Pin item, Remove from Recently Played, and Pause Listening History. Each is shelf-native, reversible, and completes in 1 to 2 taps.

Three actions. All shelf-native. All reversible. No settings menus, no buried toggles.

01

Problem & Constraints

I noticed a gap in one of Spotify's highest-traffic surfaces. The Recently Played shelf sits at the top of every user's Home feed, updates automatically based on listening history, and offers no meaningful controls. No way to remove an item. No way to pin a favorite. No way to pause the feed from logging activity. The shelf is always visible, on your screen and on anyone else's. One user put it plainly: “I don't want my partner's eyes to catch my home screen.” That's not a UX complaint. That's a shelf with consequences.

Before. The shelf records every play and orders by recency. That's the entire interaction model. A track played by accident sits there. Music played for someone else logs the same as anything else. The only way to push a favorite to the top is to play it for one second and force-quit, then repeat. Community forums document users doing exactly that. The workaround is the evidence the shelf is missing controls.

After. Three controls, all native to the shelf, each completing in 1–2 taps. Pin to surface a favorite. Remove to hide a track from the shelf without deleting it from the library. Pause to stop the shelf from logging for a time-boxed session. Reversible by default. No buried settings, no global toggles, no breaking the recommendation engine.

Constraints. The rules every decision had to honor:

  • Don't break discovery. The shelf exists to surface what users want. Any control that weakens that signal is out of scope.
  • ML training signal integrity. Permanent pause was ruled out. Time-boxing is what survived.
  • Per-device, not global. Remove on one device shouldn't propagate. Privacy at the device boundary.
  • Reversible only. No destructive deletes. Every action has an undo.
  • Shelf-native. No settings menus. The control lives where the problem occurs.

These came from mapping stakeholder priorities (Product, ML, Privacy/Legal, Engineering) before any visual design happened. They turned the obvious first idea, global history clearing, into a non-starter and pointed toward the three controls that survived validation.

What users said

I don't want my partner's eyes to catch my home screen.

Reddit, Oct 2024

02

Research & Discovery

No live users, no internal data, no brief. I built the research layer from public signals: Spotify community complaint threads, App Store reviews, UX forum posts, and a competitive audit across seven platforms. I used AI-assisted synthesis to cluster behavioral themes from 200+ community posts. It cut the analysis time significantly, but the judgment calls were still mine.

Spotify Personas

These three personas come from Spotify's own UX research. I used them as the lens for every design decision because they represent the real behavioral range of Recently Played users. The tension between them is what made the design hard: Melanie needs social curation, Dave needs fast access under time pressure, and Stephen tells you where the feature boundary is.

Melodic Melanie persona portrait

Melodic Melanie

Primary Persona

Why pay for it when it’s free?

Goals

Inexpensive access to music for herself and for sharing with friends.

Pain point

Recently Played surfaces embarrassing or accidental plays when she shares her screen. No way to clean it up before someone sees it.

What they need from this design

Pin to surface favorites she’d actually share. Remove to clear plays she wouldn’t.

Design tension: Melanie is the social pressure case. If the shelf feels curated, she’s comfortable sharing. If it doesn’t, she stops showing her phone.

Show 2 more personas (Secondary & Negative)
Ranger Dave persona portrait

Ranger Dave

Secondary Persona

You should pay for music to support the artists.

Goals

Supporting music creatives. Listening without interruption from ads.

Pain point

The shelf is noisy from commute listening and his son’s music. He can’t quickly get back to what he actually wants to hear.

What they need from this design

Pin for fast access to go-to albums. Pause to protect recommendations during his son’s listening sessions.

Design tension: Dave is the time-pressure case. He has 45 minutes on BART. Every tap matters. If the control takes more than two steps, he won’t use it.

Stephen Tan persona portrait

Stephen Tan

Negative Persona

I stream my music to hear it first before committing to buy the ones I like.

Goals

Listen to a small set of favorite songs. Keep hassle to a minimum.

Pain point

None related to Recently Played. He doesn’t engage with the shelf or discovery surfaces.

What they need from this design

Nothing from this feature set. Stephen defines the boundary.

Design tension: Stephen is the person these controls are not for. He validates the scope: if the design started trying to serve Stephen, it would mean the feature was too broad.

Competitive Audit

I audited seven platforms. YouTube Music is the closest competitor with three of the four controls. Nobody offers on-shelf pinning.

PlatformRemoveClear AllPause HistoryPin to Shelf
YouTube Music
Spotify (current)
Spotify (proposed)

Point of Reference

Point of Reference. Baseline and market snapshot showing Spotify's gap vs YouTube Music, Apple Music, and Amazon Music

User Journey Map

User Journey Map preview showing Stages 1 through 3 of Ranger Dave's flow: Launch and Landing, Scan Recents, Choose Action
Stages 1–3 of 7

The gap between seeing a control and trusting it.

Mapping Ranger Dave’s 7-stage journey surfaced the highest-friction moment: Stage 3 to Stage 4, from spotting a long-press affordance to committing to an action. No visual cue that the gesture existed. The shelf gave no signal that anything was interactive. That gap drove the decision to design for immediate discoverability, not power-user access patterns.

03

Design Decisions

Pin, Remove, and Pause weren't the first ideas. They were what survived the filter. Early directions included global history clearing, a private listening mode, and surfacing controls from Settings. Each was ruled out: too broad in scope, too deep in the navigation stack, or too likely to degrade recommendation signals. What remained were three actions that could live on the shelf, complete in 1–2 steps, and reverse without permanent consequence.

Every survivor passed one test: don't break discovery.

Mid-project pivot

I originally led with Pin, the differentiation play. Mapping stakeholder priorities revealed that Remove was the higher-urgency fix. Real users weren't asking for curation. They were asking for relief. That re-sequencing changed the entire build order.

Stakeholder Priorities: Mapped Before Any Decision

Product

Differentiation + engagement lift

Pin is the greenfield feature; Remove + Pause reach parity first

ML / Recs

Training signal integrity

Permanent pause ruled out. Time-boxing is the constraint that survives

Privacy / Legal

Data handling scope

Remove is device-scoped; global deletion requires a different flow

Engineering

Sync model complexity

Pin capped at 4; chip-based state avoids a heavy backend rewrite

04

Feature Details

Each control earned its place by surviving the filter above. Here's the reasoning behind the specific decisions that shaped Pin, Remove, and Pause.

01

Pin

Bring your favorites to the front

Community forums documented users playing one second of a track to push it to the top of Recently Played. That workaround is the evidence Pin isn't speculative. Cap at 4 keeps it lightweight and out of playlist territory.

Key Decisions

Cap at 4 pins: prevents scope creep into playlist management; keeps taps-to-pin ≤2.

Visible Pinned row: makes the feature discoverable; signals clearly that pinning does something.

Undo on pin/unpin: reversibility is a first-class affordance, not an afterthought.

Drag/↑↓ reorder: gives power users control over order without requiring a separate screen.

02

Remove

Clean up the shelf without losing history

Per-item removal, device-scoped. Hides the item from the shelf without deleting listening history. The distinction is explicit in microcopy because Engineering and Support both flagged it as a top confusion risk.

Key Decisions

Device-scoped: satisfies privacy use case without touching global history or affecting recommendations signal.

Does not delete history: protects recommendation integrity; avoids a misleading mental model.

Undo available: keeps the action reversible; reduces CSAT risk.

Microcopy matters here: 'Removed from this device. Doesn’t delete your listening history.'

03

Pause

Stop the clock on a session you'd rather not save

Time-boxed pause on history logging: 15 min, 1 hr, 3 hrs, or Until tomorrow. Auto-resumes at the selected time. This constraint came directly from ML: permanent pausing degrades training signal.

Key Decisions

Time-boxed only: permanent pause would degrade ML training signal. Ruled out in alignment with Recommendations & ML.

Chip + Resume affordance: makes active pause state visible; gives users an easy escape hatch mid-session.

Auto-resume: reduces cognitive load; users shouldn't need to remember to turn it back on.

Start/see/stop in ≤3 clicks: the key metric for this feature; drove the chip placement decision.

The Solution

Three controls, one surface

Every control lives behind the same long-press gesture on the Recently Played shelf. No settings menus, no buried toggles. Each action completes in 1–2 taps and every destructive action includes an Undo safety net.

Pin

Lock a favorite to the front of the shelf. No competitor offers on-shelf pinning. The item moves to position one and stays there until unpinned.

Long-press on a Recently Played item reveals the action sheet with Pin, Remove, and Pause controls
01

Long-press any item on the shelf. The action sheet surfaces all controls in one place.

Action sheet with Pin on top highlighted, showing the option to pin an item to the Recently Played shelf
02

Select Pin on top. Microcopy clarifies: removing hides it from this shelf, not from your library.

Recently Played shelf with The Roses pinned to position one, green pin indicator visible on album art
03

The Roses moves to position one with a pin indicator. The rest of the shelf shifts to accommodate.

Long-press hold (500ms) · Prevents accidental triggers. Tap opens the item. Hold reveals controls.

Remove

Hide an item from the shelf without deleting it from your library. Device-scoped, not global. The Undo toast is the safety net that made a trash layer unnecessary.

Frame 2

One surface, three controls.

Long-press reveals Pin, Pause, and Remove in a single iOS-native action sheet. Same entry point for every interaction.

Frame 3

Undo safety net. Device-scoped, not global.

The item is hidden, not deleted. Removal is scoped to this device. The toast makes the action reversible for 3–4 seconds. No trash layer needed.

Loops every 18 seconds

01

Same entry point. Long-press surfaces the same action sheet as Pin.

02

Select Remove from Recently Played. The item is hidden from the shelf, not deleted from your library.

03

Item gone. Shelf reflows immediately. The Undo toast sits above the Now Playing bar: reversible by default.

Auto-dismiss completes the removal · No second confirmation. Inaction is consent. The Undo toast is the entire safety net.

Pause

Stop the shelf from logging activity without leaving the app. Time-boxed to protect ML training signal. One toggle, same action sheet, instant feedback.

Long-press on a Recently Played item reveals the action sheet for the Pause flow
01

Same entry point again. All three controls share one gesture and one surface.

Action sheet showing Pause listening history toggle in the off position
02

Pause listening history toggle in its default off state. The toggle sits inline with the other controls.

Action sheet showing Pause listening history toggle switched on with green indicator
03

Toggle flipped. History pauses immediately. Time-boxed: resumes automatically to protect recommendation quality.

Time-boxed auto-revert · Protects ML recommendation signal. The user doesn't have to remember to turn it back on.

System Model

Every state is reachable and reversible

One entry point, three branches, and every path returns to Default. The dashed node is the only terminal state, and it takes deliberate inaction to reach it.

State diagram showing five shelf states: Default Shelf, Action Sheet, Pinned, Removed plus Undo Toast, and Pause Active. Green arrows show forward actions from the Action Sheet. Muted return arrows show how each state resolves back to Default. The only terminal state is Removed permanent, reached when the Undo toast expires.
05

Constraints & Trade-offs

Every project has a perimeter. These defined the shape of the solution. The reasoning behind each decision matters as much as the decision itself.

Spotify desktop app showing the right-click context menu on a Recently Played item, demonstrating cross-platform consistency with the mobile long-press action sheet

Cross-platform

Desktop users access the same controls through right-click, matching existing Spotify paradigms. The interaction model stays consistent across surfaces without forcing mobile patterns onto desktop.

Out of scope

Editing global listening history

This touches a different surface (Settings → Privacy) and a different stakeholder group. Scoping it here would expand the project beyond one sprint and dilute focus.

Out of scope

Changing ranking algorithms

Recommendation logic is owned by a separate team. Any ranking changes would require cross-team alignment that's out of scope for a shelf-level UX feature.

Out of scope

Profile privacy redesign

The privacy complaints are real, but they're systemic. Not solvable by a shelf control. Addressing this here would be a band-aid on a bigger problem.

Out of scope

History Trash

The research included a 'History Trash' concept: a secondary space holding 30 days of removed items. It was cut. The Undo toast accomplishes the same goal with less cognitive load and no additional surface to manage. A trash layer introduces a mental model question (is this gone, or just hidden?) that the current design avoids entirely. Undo is the answer. Trash is scope creep.

Constraint

Pause must be time-boxed

Recommendations & ML: permanent pause degrades training signal quality over time. Time-boxing was the negotiated middle ground.

Constraint

Remove is device-scoped only

Privacy/Legal: global history deletion requires explicit user confirmation flows and different data handling. Device-scoped remove is a much lighter lift with the same UX benefit for the target use case.

Constraint

Pin cap at 4

Engineering: a lightweight chip-based sync model breaks down past 4 items. Keeps the feature fast and avoids overbuilding into playlist territory.

06

Validation Plan

This is a concept project. No live data exists. Instead of reporting numbers I don't have, I built the evaluation framework I'd use to gate a launch decision: a moderated usability test with specific acceptance criteria per feature.

Test Protocol

Moderated usability test. 6 participants across the four archetypes (Social Curator, Commuter, Parent on shared device, Explorer). Each participant completes three task scenarios: pin a specific item, remove an embarrassing play, and pause history before handing the phone to a friend. Sessions recorded. Think-aloud protocol. 45 minutes per session.

FeatureMetricThresholdRationale
PinTaps to pin≤ 2Long-press + tap. If it takes more, the action sheet hierarchy failed.
PinReorder task time< 3sBenchmark: iOS Home Screen widget reorder averages 2.5s.
RemoveTime to remove + undo≤ 6sEnd-to-end: long-press, tap Remove, spot toast. 6s is generous. Under 4s signals strong discoverability.
PauseStart / see / stop≤ 3 tapsToggle on, confirm state change, toggle off. Three taps is the ceiling.
AllTask error rate≤ 5%Industry benchmark for low-complexity touch tasks. Above 5% means the affordance is unclear.
AllPost-task CSAT (top-2 box)≥ 80%Collected after each task, not at end of session. Isolates per-feature satisfaction.
AllUMUX-Lite lift vs. baseline+8 ptsBaseline: current Spotify shelf with no controls. +8 is a meaningful usability gain, not noise.

Decision Criteria

All feature-specific thresholds must pass for that feature to ship. If error rate or CSAT fails on a single feature, that feature gets a redesign cycle before re-test. UMUX-Lite is a directional signal, not a gate: if task metrics pass but UMUX-Lite is flat, the features ship and the team investigates perception gap in follow-up research.

07

Reflection

The hardest part of this project wasn't the UI. It was saying no. Every promising idea (global history delete, recommendation tuning, private mode) pulled toward a much larger system. The discipline of asking “can this be done on-shelf, in 1–2 steps?” killed more bad ideas than any critique.

Mapping stakeholder priorities did real work. Understanding what Product, ML, Privacy/Legal, and Engineering each cared about meant Remove and Pause were designed with the right constraints from the start, not retrofitted after pushback. Device-scoping Remove and time-boxing Pause weren't compromises; they were the correct decisions once the full system was visible.

The pivot from Pin-first to Remove-first (documented in Section 03) was the most consequential decision in the project. It came from mapping the full constraint picture. What I'd add now: ship Remove in sprint one, observe what users actually do with it, then build Pin on validated behavior rather than assumed need. That sequencing change is a judgment call, not a scope call.

Prefer the narrative version?

View the slide deck

Next Case Study

Men's Sole Revival

View Case Study