Prosocial Apps

Attention Rubric — scoring a children's app by how it treats attention

A reusable check for every app in this folder. It scores design decisions, not screen time, because that is where the evidence actually points.

Run it on a new app before it ships and again whenever a feature is added. rubric.json holds the same axes in machine-readable form.


What the research actually says

This section exists so the rubric is not just taste. It is also here so that nobody — including me, later — quietly upgrades "associated with" into "causes".

1. Screens do not cause ADHD, and the honest headline is smaller than the one you have read

ADHD is substantially heritable and no app design causes it. The largest recent US cohort work is close to null: in a survey of ~46,000 children aged 6–17, the crude association between screen hours and an ADHD diagnosis (22% higher odds at 2–3 h/day, 74% at 4+ h) disappeared once age, sex, poverty, parental education, race and other health conditions were controlled for. A second cohort of >101,000 children found associations that survived but were modest (11–32% higher odds across 2 to 4+ hours). Both are observational and both are compatible with the arrow pointing the other way.

Take the causal-sounding version of this literature with salt. The reviewers who have looked hardest — Odgers, Orben, Przybylski — report "a mix of no, small and mixed associations" rather than the large effects the popular books assert.

2. What is consistently associated is not duration — it is not being able to stop

The most useful finding for a designer. A systematic review of 28 longitudinal studies (ages 0–17, published 2011–2021) concluded:

"associations between problematic use of digital media and ADHD symptoms were somewhat more common and were stronger than associations between screen time and ADHD symptoms."

Eight of nine studies measuring dysregulated or "addictive" use found significant associations; plain screen-time measures were inconsistent. The overall picture was reciprocal — media predicted later ADHD symptoms in 63% of studies, ADHD symptoms predicted later media use in 53% — with effects consistently small (r typically < 0.30).

So the question to ask of an app is not "how long will a child use this?" but "what happens when they want to stop?" That is a property you build, and it is the one the evidence is least equivocal about.

3. Persuasive design does not tax every child equally — it taxes the ones who can least afford it

The single most important study for this rubric. Seventy-three children aged 3–5 were randomly assigned to an app with high, moderate or low persuasive design and then asked to stop:

The interaction is the finding. Persuasive design is not a uniform tax on attention; it is a tax levied specifically on the children with the least self-regulation — which is to say, disproportionately on the children who are already struggling with attention.

Design for the child who can least resist, not the average child. An app that "most kids can put down" is not a defence.

4. The best-evidenced harm pathway is sleep, and it is mediated by session length

Removing screen use before bed in a randomised trial of toddlers produced small to medium improvements in objective sleep efficiency and night awakenings. Meta-analytic work finds children with >2 h/day of recreational screen use have materially higher odds of late bedtimes and insufficient sleep. Sleep loss degrades attention reliably and immediately — far more reliably than any direct effect of media on attention has ever been shown to.

This makes session length and bedtime encroachment a first-order design concern rather than a parental one. Anything that makes a session run long, or run late, is operating on the one mechanism that is not in dispute.

5. Pacing has a real but acute effect — treat it as depletion, not damage

Sixty 4-year-olds were randomly assigned to nine minutes of a fast-paced cartoon, an educational cartoon, or drawing. Those who watched the fast-paced cartoon were immediately impaired on four executive-function tasks including delay of gratification and Tower of Hanoi. Pacing was measured mechanically, as cuts — frame-to-frame changes in more than 85% of pixels.

Two honest caveats: this is an immediate, short-lived effect, not evidence of lasting harm, and the replication record for this class of experiment is mixed. Treat rapid cutting and high salience load as something that leaves a child depleted for the next half hour — which matters a great deal if the next half hour is homework or bedtime, and not at all if it is a nap.

6. The baseline in children's apps is worse than you would guess

Of 20 popular children's apps analysed against Gray et al.'s deceptive-design ontology, every single one contained interface interference, 90% contained sneaking, and the median app carried 5.5 distinct deceptive patterns. This is the field you are shipping into. "Better than average" is a very low bar.

7. There is a regulatory floor, and it names the features

The UK ICO's Age Appropriate Design Code names "sticky features" explicitly — reward loops, continuous scrolling, notifications and autoplay — and forbids using children's data to extend engagement. Since 19 June 2025 the Code's principles sit inside UK GDPR Article 25(1), and the Online Safety Act's Protection of Children Codes have applied since 25 July 2025. If a feature appears on axis 1, 2 or 4 below at level 3, a regulator has already written it down.


The rubric

Six axes. Score each 0–3. Total 0–18.

Each axis is tagged with how good the evidence behind it is:

Axis 1 — How it ends [A]

The single most important axis. "Problematic use" means "could not stop", and that is a property of your ending, not of your child.

0Finite content with a real end, and the app says when you have reached it. Nothing begins on its own.
1Finite content, but no completion state — you stop by running out, not by arriving.
2Effectively endless (procedural levels, a feed), but every unit ends and nothing auto-starts.
3Autoplay, infinite scroll, auto-advancing levels, or an "up next" countdown. No natural stopping point exists.

Axis 2 — Reward schedule [A]

Variable-ratio reinforcement is the mechanism behind the word "addictive" in every one of the studies above. It is also the easiest thing in the world to add by accident, because it makes engagement metrics go up.

0No extrinsic reward at all. The content is the reward.
1Fixed, earned, predictable acknowledgement — you did the thing, the thing is marked done.
2Points, stars or unlocks on a predictable schedule, with visible progress and a ceiling.
3Any variable-ratio payout: loot boxes, spins, random surprises, near-misses, or a streak that punishes a missed day.

Axis 3 — Pacing and salience load [A, acute]

Measure it, do not eyeball it. Cuts per minute is a countable number.

0Slow, continuous, child-paced. Transitions are the consequence of the child's own input. Sound optional. prefers-reduced-motion honoured.
1Occasional animation, but nothing moves that the child did not move.
2Frequent autonomous motion, attention-grabbing transitions, or sound stings on success.
3Rapid cutting (say, >12 scene changes/minute), simultaneous competing animation, screen shake, particle bursts, or celebratory audio on every action.

Axis 4 — Interruption and re-entry pressure [B]

A single notification measurably slows cognition for several seconds, and even an unattended one degrades accuracy. On a child's device you control whether that happens at all.

0No notifications, no badges, no account, no network. The app is inert when closed.
1No push, but state is kept so returning is easy.
2Optional, parent-controlled reminders; no badge counts.
3Push notifications, badge counts, timers that run while away, energy/lives that refill in real time, streaks that decay, or anything framed as loss.

Axis 5 — Agency and honesty [B]

This is the deceptive-design axis. The median children's app carries 5.5 such patterns; the target here is zero.

0The child sets the pace. Exit is one obvious tap. No ads, no purchases, nothing asked of the child, no data leaves the device.
1Clean, but exit or pause is buried more than one level deep.
2Any of: interstitials, upsell prompts, a "confirmshaming" exit, telemetry the parent has not been shown, or any request for a personal detail — name, age, birthday, photo, location — that the app does not strictly need to function.
3Ads in a child's flow, purchase pressure, forced actions to proceed, an exit designed to be missed, or content personalised from facts the child was asked to hand over.

A note on register, which does not score but belongs here. An app can take nothing at all and still perform a closeness it has not earned — anchoring on "your birthday", "your bedroom", "the water you drank today". Warmth aimed at the world (Earth, the people who worked things out, everyone the reader shares a planet with) costs the child nothing. Warmth aimed at the child is either a guess or a request, and a request is how the collecting starts.

Axis 6 — Displacement risk [A, via sleep]

The evidence-backed mechanism. Judge the realistic session, not the intended one.

0A typical session is short and self-terminating; the app is uninteresting to open twice in a row.
1Sessions run long if the child is engrossed, but nothing pushes them to.
2Session length is unbounded by design, with no cue that time has passed.
3Actively rewards long or late sessions — daily login, timed events, "just one more".

Reading the score

TotalBandMeaning
0–3Quiet toolAttention is the child's own. Ship it.
4–8Engaging but boundedFine. Know which axis carries the points and why.
9–13Engineered for retentionThe design is working on the child rather than for them. Fix the top-scoring axis before anything else.
14–18Attention-extractiveDo not ship this to a child.

Two override rules, because the total can launder a single bad decision:

  1. A 3 on axis 1 or axis 2 caps the app at "Engineered for retention", whatever the total. Those are the two axes the longitudinal evidence actually implicates, and a beautiful, ad-free, gently-paced app with a variable-reward loop is still an app built around a variable-reward loop.
  2. A 3 on axis 5 is disqualifying on its own. Deceiving a child is not a score, it is a decision.

What this rubric is not


Worked example — the two apps in this folder

How Big? (scale_app/) and How Far? (solar_system/) score identically, because they share an engine and a set of rules.

AxisScoreWhy
1 · How it ends053 and 27 stops, both ends reachable, nothing auto-advances — and since 2026-09-06 each end says so. "The end of the road. All twenty-seven stops are behind you now, from the surface of the Sun to another star." Was 1 before that: you stopped by running out of road, which is not the same as arriving.
2 · Reward schedule0No points, stars, streaks, unlocks or celebration of any kind.
3 · Pacing0One animated number, ~2.6 s per step, symmetrical easing that lands without overshoot (an overshoot is a tiny reward), no sound, no autonomous motion, prefers-reduced-motion honoured.
4 · Interruption0No network, no account, no notifications, no badges. Inert when closed. Since 2026-09-06 the usage clock writes to localStorage every five seconds — see the note under this table on why that is still a 0.
5 · Agency0Drag tracks the hand exactly with no easing; no ads, no purchases, nothing leaves the device; the whole app is one file that runs from file://.
6 · Displacement1Content is finite and the ends now say so, and since 2026-09-06 a clock in the header shows minutes used in the last hour, red past thirty. Sessions can still run long, so this stays at 1 — the axis-0 wording asks for a session that is short and self-terminating, which these are not.
1 / 18Quiet tool

Spending the axis-1 point. The arrival is deliberately not a reward — no colour that reads as a prize, no exclamation, no sound, and it says the same thing every time you come back. Making an ending feel like a prize would trade a point on axis 1 for a worse one on axis 2.

The remaining point, on axis 6, stays. A clock was added on 2026-09-06 — minutes used in the last rolling hour, red past thirty — which removes the "no cue that time has passed" half of the original objection. It does not move the score, because the other half still holds: a session here has no natural length. Recording this rather than quietly re-scoring, because adjusting a rubric until your own app scores better is the exact failure this document is supposed to prevent.

Two clarifications the clock forced on the instrument itself. Both were written because a real case did not fit, and neither improves either app's score:

Two smaller things to keep an eye on, neither currently costing a point:


Sources


Changelog