Product
Dashboards, onboarding, research rituals and the features we deleted. Notes from the product room.
Command palettes: patterns for the Cmd-K era
When a Cmd-K palette earns its complexity: ranking that beats fuzzy match, mixing actions with navigation, keyboard ergonomics, discovery and mobile equivalents.

Continue on your phone: handoff UX that doesn't lose people
Session and device handoff done properly: continue-on-another-device flows, magic links vs QR codes, delayed-resume UX and the honest security boundaries.
Bottom sheets that don't fight the user
When a bottom sheet beats a modal on mobile web: drag affordances, scrim honesty, snap-point logic, keyboard and screen-reader behaviour, and anti-patterns.
Roles and permissions: the quiet complexity of team products
Designing roles that match customer org charts, permission matrices people can read, invitation-time clarity, escalation paths and guarding against the accidental admin.
Announcements inside the product, minus the noise
In-product announcements without banner blindness: an announcements centre, targeting by behaviour instead of blast radius, and expiry rules that stay honest.
Optimistic UI, with integrity
Optimistic updates that keep trust: where optimism is safe vs dangerous, rollback UX when the server says no, reconciliation patterns and the latency maths behind it all.
Two tabs, one truth: state across windows
Multi-tab state consistency without the baffling UX: storage events, BroadcastChannel, optimistic locks, and how to disclose last-write-wins before it betrays someone.
Feature discovery: design for the day after launch
Shipping a feature is half the job. Announcement surfaces that respect focus, contextual education, suppression discipline, targeting and how to measure discovery lift.
Progressive disclosure for genuinely complex tools
Hiding complexity without hiding power: sensible defaults as strategy, advanced modes, command palettes as the pro lane, and how to measure if disclosure works.
Bulk actions: power without the footguns
Bulk operations done safely: selection across pages, previewing effects before applying, undo vs confirmation, progress states and permission boundaries.
Settings IA: where features go to be findable
Settings screens are where growing products quietly drown. Grouping by user intent, search-within-settings, destructive zoning and how to migrate categories safely.
Activity feeds and audit logs: designing the product's memory
Activity feeds and audit logs are the product's memory: event grammar, grouping and noise control, filter architecture, and the enterprise sales case.
What 30 pricing pages taught us about clarity
A research review of SaaS pricing pages: tier naming that means something, comparison tables that aren't mazes, honest annual toggles and enterprise patterns.