← ALL FIELD NOTES

LOG 039 · TECHNICAL · 2023-12-01

Instrumented listening in detail, then stopped the player losing your place

2 min read

Situation

I worked on the native app for Goodpods, a podcast platform, where the audio player is the core of the product. In December 2023 we needed detailed data on how people actually listened, as groundwork for a planned podcaster analytics platform. Around the same time the player picked up a reliability bug: if the app was killed after being backgrounded, it would sometimes lose the user’s listen position and jump back to the start of the episode. The bug had been shipped for a few weeks, was inconsistent and hard to replicate, and was generating a couple of support complaints per week.

Task

I owned both pieces of work: instrument listening in detail across the whole app, then track down and fix the player’s resume behaviour.

Action

I started with the instrumentation. I recorded detailed listen events through the episode player and threaded the capture through every surface where playback starts: search, library, continue listening, latest episodes and the discovery rows. The core unit was a listen fragment: every time a user pauses and plays, a new fragment starts. That told us exactly how much of an episode someone heard, at what speed, and whether they jumped around, which is what a podcaster needs in order to see where they are losing listeners. I then surfaced the data as listen stats on the user’s profile and made them shareable, a growth play to let people show off their listening.

In January I moved onto the resume bugs. I reworked the episode player’s resume-from-position logic first, then handled the harder case where the app process had been killed, which was the source of the jump-to-start behaviour. I followed up by fixing offline playback, making a tap on an already-playing episode resume it rather than restart, and fixing a fragment logging bug along the way.

Result

Support complaints about lost playback position went from a couple per week to zero after the fix. The shareable listen stats got some use, and a later feature showing how far into a podcast a friend had got saw more. The fragment data was set to power the advanced podcaster analytics platform we had planned.