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

Best
Matt

I can only echo what you're saying Nikita. It's funny how you can test and test and test and still if you release your app into the wild.... things happen.

I've had had users complain to support about things, and then you realize they block all telemetry. At that point you can’t trace what went wrong, can’t help them, and can’t fix it for the next user either. So yes, telemetry for the win.

Though admittedly its a double-edged sword. I still remember when I used the likes of Amplitude, Firebase or Posthog for the first time and I was blown away by what you can see by simply integrating a few lines of code. As such, I can understand that users dislike "telemetry" or "analytics", especially given how major brands have ruined public understanding of these things.

NIkita Gordeev

@matt_rewo You've absolutely nailed it. It's the core dilemma for indie devs: we need data to fix bugs, but users are rightfully paranoid because big tech has abused their trust.

That's why I took a hard stance with Axorith's telemetry:
1. It's Opt-Out: The first thing you see in settings is a toggle to disable it.
2. It's Anonymous: I don't collect usernames or any PII. I just see "User A" had a crash.
3. It's for Stability, Not Spying: The only reason it exists is to catch the exact kind of crash I described. It's a debugging tool, not a marketing one.

It's a tough balance, but I think being transparent is the only way to earn back that trust.