DEV Community

Martin Ma
Martin Ma

Posted on

Three compulsions, one mechanism: what 400 logged phone sessions taught me about stopping

I spent three weeks logging every phone session and, more usefully, the ninety seconds before each one. Four hundred sessions later I stopped believing that doomscrolling, gaming binges and compulsive pornography use are three separate problems with three separate fixes. They are the same loop wearing different clothes, and that has a practical consequence: fixes aimed at the content always fail, because the content is not the mechanism.

This is not a moral argument and it is not a diagnosis. It is a description of a failure pattern I kept repeating, and what actually interrupted it.

The four parts of the loop

Every one of these behaviours delivers the same structure:

  1. An unpredictable payoff. Not every pull gives something good, and you cannot tell in advance which pull will. A feed refresh, a match result, a new message, a thumbnail: all of them are draws from a distribution you cannot see.
  2. A near-miss signal. The almost-win is more motivating than the win, because it implies the next attempt is close. This is why "one more" is such a reliable sentence.
  3. No stopping cue. A book chapter ends. A film has credits. A podcast has an outro. Feeds removed all of them and replaced them with autoplay, preloading and "up next". The only remaining stopping point is fatigue, and fatigue arrives after forty minutes of scrolling.
  4. Cheap re-entry. Reopening costs nothing, so the decision to continue never has to become conscious.

Once I could name those four parts, my own history made sense. Every fix I had tried attacked part four, and part four is the least important one.

What each behaviour adds

The loop is shared, but each behaviour adds one ingredient that changes the failure mode:

  • Short-form video adds infinite supply and zero cost per item. There is no unit of completion, so there is no natural place to stop.
  • Games add progression: daily streaks, energy timers, seasons. These convert "I want to stop" into "I will lose something if I stop", which is a much harder feeling to argue with.
  • Compulsive pornography use adds shame and secrecy, which is the most destructive addition of the three, because shame removes the two things that would otherwise end the loop: talking about it, and being seen doing it.

That last point is why "just have more willpower" is not merely unhelpful but actively counterproductive there. Willpower framed as a moral test turns a habit into an identity, and an identity is much harder to change than a habit.

Why deleting the app fails

Deleting an app attacks re-entry only. It is real progress, but it creates two new problems.

First, one dramatic failure mode. One bad evening, one reinstall, and weeks of effort are gone. A limiter makes a bad evening cost twenty extra minutes instead of the whole system.

Second, it does not survive substitution. Remove the game and the same loop is waiting in a feed. Remove the feed and it is waiting in a shopping app. The loop is the target, not the app.

Three changes that held up

Ordered by measured effect over those three weeks:

1. Charge the cost to the app, not to the day. A single daily limit for the whole phone is spent by noon and then means nothing, which is exactly when the loop is strongest. Per-app budgets keep the expensive apps constrained and leave messaging and maps alone, which also removes the usual excuse for overriding: "but I need it for work."

2. Make every override visible. When bypassing a limit was silent, I did it five or six times a week and forgot each instance. When it was counted, the number itself became the restraint. No lock, no punishment, just a tally I had to look at. This was the single highest-leverage change, and it is the one piece nothing off the shelf gave me.

3. Put a stopping cue back. I added a four-second question before the feed loads: ten minutes or an hour? It converts an automatic reach into a decision. Most of the time the honest answer is ten, and the session ends when the number does instead of when I get bored.

Download card for ChoiceField

Numbers, with the obvious caveat

One user, three weeks, self-logged. Treat this as a case study, not evidence:

  • Bedtime scrolling: about 90 minutes to about 12.
  • Sessions per day: 41 to 19.
  • Overrides per week: 23 to 6.
  • Nothing uninstalled; no arguments with anyone about my phone.

What this does not fix

A limiter does not change the product's incentive. The loop exists because it works, and no timer makes it stop working. It also does not help if the behaviour is a symptom: if you are avoiding a specific task, or using a feed to manage anxiety, a timer mostly adds shame. Deal with the underlying thing first, then use the limiter for the residual habit.

The tool, since I built one

I eventually built these mechanics into a small iOS app, mainly because I wanted the override counter to exist as a number I could not avoid. It is called ChoiceField, it is free, and the method does not require it: per-app Screen Time limits plus a tally of every override kept where you cannot miss it gets most of the way there.

If you try the loop framing on your own logs, I would like to know which part broke first: the stopping cue, the counter, or the per-app budget. That comparison is more useful to me than agreement.

Top comments (0)