Lyft

Staff Product Designer

I worked across airports, scheduled rides, and in-ride xp.

Overview

After a rider requests a ride, the matching experience has to deliver critical information during the wait. Too much overwhelms; too little erodes confidence. The structure also has to hold up across every context: scheduled rides, airport pickups, event pickups, short waits, long waits. My job was to standardize these surfaces.

Hover to play


One screen, not two

A long wait and a short wait were two different screens, and a rider crossing between them watched the interface change under their hands. The split existed because the server only knew whether you had been matched, or that you would be in more than sixty seconds. Moving that decision server side let one screen carry the whole range.

The long-wait and short-wait screens side by side

What shipped

Drag the handle across the three states. On the left is what riders had: every screen announcing its own status — ride booked, Lyft requested, searching for nearby drivers — and a countdown running down to nothing. On the right is what shipped: one screen across the whole wait, giving a range while the estimate is still a range and narrowing it as the car gets close.

Cancel rates fell 10% in the learning period and 4% on switching, and because it shipped as a framework rather than a screen, scheduled rides and airports built on it.

BeforeShipped
The shipped post-request states: long wait, short wait, and arriving, on one framework
The original post-request screens: ride booked, Lyft requested with a countdown, and arriving