Feed

Three platforms, one interaction model

323K users. One interaction system across Quest, mobile and web. And one feature that failed, with data that told us exactly why.

Role
Lead XR Interaction Designer
Timeline
2025 and 2026 tournaments
Clients
ESPN & USTA
Partners
Meta, IBM, Immersiv.io
Platforms
Quest / iOS & Android / Web

The tension

The obvious move was to build for the headset first

The obvious move

Design the richest experience on Quest, then port it down to mobile and web.

What we did

We inverted it. Quest was the headline, but mobile and web were where the users would actually be. So the interaction model was designed for the weakest input surface first, then enriched upward.

Decision 01

Presets over free camera

Free camera in a 3D sports experience is the obvious call. It is also a navigation problem.

Most fans don’t know where to look. The effort of finding a good angle costs them the moment they wanted to see: the rally is over by the time they’ve framed it.

We shipped preset views as the primary control: behind each player, aerial, sideline. One tap to a meaningful perspective, always oriented to the action. Free camera stayed available underneath for anyone who wanted it.

A preset view on mobile: behind the player, oriented to the rally, one tap away.

Evidence

Angle switching, filters and set selectors all showed healthy adoption across all three platforms. The interaction model translated without degrading.

Decision 02

Timeline as first-class navigation

The timeline could have been a replay toggle buried in a menu. That is where it usually lives.

We made it the primary navigation layer instead: visible by default, available during live play, never a mode you have to enter.

The bet: fans want to move between live and the moment that just happened without leaving the live context. Tennis is built out of discrete points; the timeline should be too.

Points listed set by set, reachable during live play: the timeline as the main way around the match.

Evidence

90%+ of all sessions happened during live matches. The timeline was what let fans rewind without abandoning the live feed.

Outcome

What actually happened

323K
Total users
597K
Total sessions
30%
Retention
2×
YoY growth

90%+ of sessions happened during live matches. That settled the product’s identity: a live companion, not a replay library. 30% retention on an event-based app meant fans came back for the next match.

The live entry point: “Follow in 3D” inside IBM SlamTracker, next to the score and win probability.
“New feature on the US Open app! This is pretty cool if you ask me.”
App Store review
“To go back and see where that ball landed and see the trajectory of the ball, it’s a great tool.”
Fan feedback

The honest part

What broke

Replay usage was low, and it was an affordance failure, not a content one.

  • Timeline points gave no visual signal they were interactive
  • Replaying a single point took up to three interactions
  • Desktop significantly outperformed mobile, because hover was the only real affordance, and hover doesn’t exist on touch
  • No onboarding to guide the first attempt

We shipped a feature that was effectively invisible, and found it in analytics rather than in testing. Low usage was never a signal of low interest.

Before After

Timeline points carry no click affordance: users don’t know they’re interactive

Tap-on-point triggers replay inline, with an explicit interactive state

Up to three interactions to replay one point

One tap, directly from the timeline

Desktop hover is the only guidance, with nothing equivalent on mobile

Contextual prompt on first timeline open

What’s next

Where this goes

Simplify replay

Rebuild the timeline so tapping a point triggers replay directly, with contextual onboarding on first open. The feature works. It just isn’t visible.

A real post-match mode

Curated 3D highlights instead of asking fans to scrub a full match. Low post-game usage partly reflects that nothing was designed for that context.

Pre-match surfacing

Fans don’t open the app until the match starts, which compresses discovery to zero. Push and a pre-match state buy back the window.

Get in touch

Tell me about your project, I’ll get back to you by email.