NIkita Gordeev

My first user's session was a series of fatal crashes. Telemetry saved my project.

by

Hey everyone,


After a week of getting decent views but almost no downloads, I finally saw a new user pop up in my PostHog dashboard. I was ecstatic.


Then I watched the session log in real-time.

17:29: AppStarted
17:29: AppStarted
17:30: AppStarted

The guy tried to launch the app three times in 11 seconds. He was rage-clicking because nothing was happening.


Then the error log came in: IOException: Failed to bind to address ...: address already in use.`


It turns out I had a race condition in my startup code. The background service was trying to bind to a port twice, which caused it to crash silently. The UI would hang, waiting for a connection that would never happen.


For the user, it looked like the app was just... dead.


Without telemetry, I would have NEVER found this. I would have just assumed he downloaded it, didn't like the UI, and uninstalled. I would have spent weeks "improving features" instead of fixing the critical bug that made the app unusable.


Lessons learned:

  1. Your app is broken. You just don't know how yet.

  2. Telemetry isn't for tracking users, it's for finding bugs you can't reproduce locally.

  3. The first user isn't a customer, they're a crash test dummy.

I pushed a hotfix (v1.0.3) with a Mutex to prevent multiple instances and fixed the race conditon. Now I'm just hoping that user gives it a second chance haha.

29 views

Add a comment

Replies

Be the first to comment