Case study № 03
A transit app for the rider who has three minutes
Wayfare's app was built for trip planning; riders actually use transit apps to check one bus, right now. Redesigned around the thirty-second session. On-time arrival accuracy improved 11%.
Measured
Outcomes.
- On-time arrival rate
- +11%
- Session length to find next bus
- 33 → 9s
- App store rating
- 3.2 → 4.6
- Accessibility-mode usage
- +47%
Self-reported, year-over-year rider survey
Telemetry, trimmed mean
Six months post-launch
Largest segment gain
Why a transit app is hard
Transit apps get designed by people who are planning trips at a desk. Transit apps get used by riders who are standing on a platform in the rain with one hand free, a partially charged battery, and a toddler who wants to know when the bus is coming. Every design decision has to survive the second context, not the first.
The incumbent app had ten years of accumulated features, trip planning, fare purchase, route maps, service alerts, station amenities, accessibility info, lost and found, service commendations. All of those features are useful. None of them answer the question the rider on the platform is asking, which is “when is the next bus at this stop”.
What we learned from actually riding
Fieldwork matters more in civic design than anywhere else. We spent the first two weeks riding the system, at peak, off-peak, in the rain, in the dark, on the weekend. Some observations that made it into the design:
Riders do not launch the app until they are close to their stop. The app needs to assume “I’m near a stop right now” as the default state, not “I’m at home planning a trip”.
Riders check the app more than once per minute while waiting. Every launch needs to feel instant. The app cannot load a spinner. If we don’t have fresh data, we show the stale data with a “last updated” timestamp and fetch in the background.
Riders trust the arrival board at the stop more than the app, when there is one. The app needs to match the arrival board exactly, not calculate its own estimate. We rebuilt the backend to consume the same GTFS-RT feed the arrival boards use.
The home screen decision
The old home screen had thirteen interactive elements above the fold. The new home screen has three, the stop name, the three arrival times, and a “change stop” link. Everything else moved behind a tap.
This was the decision leadership pushed back on hardest. The concern was that moving features behind a tap would make them feel buried. We tested both versions in an A/B with 40,000 riders. The stripped-down home had higher engagement on every secondary feature the leadership was worried about. Simpler surfaces make secondary features more findable, not less.
Accessibility as a first-class concern
The old app had failed a WCAG audit in 2022. The contract required us to ship AA-compliant at launch, which we did. More interesting was what happened when we invested in accessibility beyond compliance.
The high-contrast mode, a single toggle in settings, shipped as an experiment. We expected accessibility-identified users to adopt it. What we did not expect was that 14% of daily active users would turn it on within the first month, including riders who did not self-identify as having a visual impairment. The mode turned out to be useful for riders in bright sunlight, on low-battery screens, and for riders over 55. Accessibility built in turned into usability for everyone.
Outcomes
On-time arrival rate, self-reported in the annual rider survey, improved 11% year over year. Telemetry confirmed the mechanism: riders were arriving at stops more accurately because the arrival times in the app were more trustworthy. App store rating climbed from 3.2 to 4.6 over six months. The agency commissioned a follow-on contract to redesign the fare purchase flow.
What I think about
Civic design has a bias toward comprehensive. Every agency wants their app to “do everything a rider could need”. The most useful civic tools I have worked on do one thing the user came for, correctly, every time. Everything else can be a tap away.
Approach
Process.
Rode the system for two weeks
Before any research sessions, the team rode every route in the system at least once, some of them in the dark, in the rain, and on transfer-heavy commutes. Pulling out a phone on a wet platform with one gloved hand is a real design constraint. The app we were replacing had not been built for that hand.
Ran contextual inquiries with 28 riders
We recruited from four neighborhoods selected to cover transit-dependent, transit-preferred, and occasional riders. The top task was almost uniform, find the next arrival at one specific stop. Trip planning, the feature the old app had been built around, came up in roughly one in six sessions and almost always for unfamiliar journeys.
Designed the stripped-down home
The new home screen shows one stop, the next three arrivals, and a walk-time estimate. Nothing else is above the fold on a 4.7-inch screen. Trip planning is one tap away. Service alerts, the second most-requested feature, sit below the arrivals. Everything else is in a secondary drawer.
Tested accessibility with actual accessibility users
We ran three rounds of testing with riders who use screen readers, dynamic type at 200%, and voice control. The app shipped with full VoiceOver and TalkBack support, touch targets at 48px minimum, and a high-contrast accessibility mode that is one toggle deep in settings. The accessibility mode became more popular than we projected, it is used by roughly 14% of daily active users.
Every transit agency I have worked with has wanted to build a feature-rich app. Wayfare is the first I have worked with that was willing to build a small one. Small won.
Credits
- Senior Product Designer
- Max Mustermann
- Staff Engineer, iOS
- Kavi Raman
- Staff Engineer, Android
- Lotte van der Berg
- Accessibility Consultant
- Imani Black
- Service Designer
- Rafi Nuñez
- Product Manager
- Elena Popov
Toolchain
- Figma
- SwiftUI
- Jetpack Compose
- Lyssna
- axe DevTools