utwordSystem v3.25.7
Decisions

Short recovery codes, shown as tiles

The 3.18 recovery code was a long word-word-id string in open text. 3.21 gives every player six characters a kid can read back, shown as tiles, and keeps the long code working forever.

D-010 · 3.21 · 2026-10-05

Context

A player's name and scores live under a hidden id on their phone. A recovery code is how they get back in after a cleared browser or on a new phone. The 3.21 update reel put the need in two lines: "You climb the leaderboard", "But it lives on this phone".

3.18 introduced recovery codes as a readable word-word-id, for example otter-cobalt-a1b2c3d4, shown as open text from the header key. The two words are derived from the id, a mnemonic "so two codes look different at a glance and are easy to read back"; the id at the end is what restores the account. That id is drawn from all 26 lowercase letters and 10 digits, including the characters the 3.21 alphabet leaves out.

Options

VersionThe codeHow it's shown and savedResult
3.18word-word-id, e.g. otter-cobalt-a1b2c3d4 (21 characters)Open text, never boxed, in a view and restore sheetKept as the fallback; restores forever
3.21Six characters in two groups of three, e.g. K7P-RX4Tiles you tap to copy; Save to Photos and Save to NotesChosen

Decision

Every player gets a short code as soon as they exist, made in the background so the key sheet almost never waits.

  • The alphabet: ACDEFGHJKMNPQRTUVWXY34679, 20 letters and 5 digits, leaving out anything a kid could misread (0/O, 1/I/L, 2/Z, 5/S, 8/B).
  • The shape: two groups of three, at least two digits, and never four letters in a row, so a code can't spell a word. Codes also pass the same filter as player names.
  • Shown as tiles. The whole panel is the copy button ("Tap to copy", then "Copied"). Save to Photos shares a picture of the code; Save to Notes shares a ready note with the code, the steps and a ?code= link.
  • Restore has six slots that fill as you type, five misses an hour, and plain errors.
  • The long code still restores forever, and the sheet shows it whenever the short code can't be made. Every save path has a fallback.

Evidence

The spec and the changelog give "about 240M codes". That's 25⁶, every string of six from the alphabet. The two shape rules (at least two digits, never four letters in a row) leave about 72 million, computed while writing this record, so the published figure overstates the space about threefold.

Consequences

  • A code is shown as tiles and copied by tapping it. The code joined the tile motif: the same object as the board, the podium and the confetti.
  • Saving got its own nudges: the outlined key with a dot, "Keep your spot", and the home-screen guide, one ask per visit, only on Home.
  • Two formats live forever. Restore accepts both ("I have an older, longer code"), and a pasted long code switches over on its own (3.21.2).
  • New Firebase nodes: rc/<CODE> (create-only, not listable), rcu/<id> and rcs/<id>. Until their rules are published, the app keeps showing the long code and nothing breaks.
  • See Recovery for the key sheet and every save path.