designmotionhq

interaction

Filter Chips

200 results. Three taps. 12 left.

Key insights

  • Give every chip three distinct visual states — idle (surface + border, tappable but not chosen), active (filled + check, clearly selected), and disabled (dimmed, no results behind it). If active looks like idle, the filter feels broken.
  • Make the combination logic legible: OR within a group widens the net (more colors = more matches), AND across groups narrows it (adding a size filters the set down).
  • Update the result count on the same frame as the tap. If the number doesn't move, users read it as 'nothing happened' and tap twice.
  • Always ship a single clear-all reset. Stacked filters trap users, and one tap back to zero is the escape hatch — pair it with a live count so the reset is legible.
  • When chips outrun the screen, keep them in one horizontal scrolling row with a right-edge fade that hints at more. Wrapping into a multi-row wall buries the results below the fold.
  • Pin active filters in a sticky summary bar on top so users can always see why the list shrank.

Do / Don't

  • Do: Update the result count instantly on every tap, same frame as the state change
  • Do: Give each chip clearly distinct idle, active, and disabled states
  • Do: Offer a single clear-all reset paired with a live result count
  • Don't: Let active chips look identical to idle ones — the filter reads as broken
  • Don't: Wrap overflowing chips into a multi-row wall that pushes results off-screen
  • Don't: Leave the count unchanged after a tap — users assume it failed and tap again

Get the next pattern first

New breakdowns land in your inbox before anywhere else.

One new pattern breakdown per week. No spam, unsubscribe anytime.

Related patterns