LogoWordy Bunch
Cover
General
Sep 2, 2026

The board colours setting that crashed on every word, and the rest of 1.4.0

There's a new switch in Settings, "board result colours". Turn it on and the whole board flashes green for a moment when a word is accepted and red when one is rejected. It's off by default, so nothing changes unless you want it to.

The timing is fixed at 75 milliseconds in, 150 held, 225 out. Under half a second, because in a fast run of words anything longer would still be fading when you're two words on. The colour only goes 32% of the way towards the theme's green or red, so the letters stay readable through it. The colour sits on top of everything that already tells you the verdict: the tick and cross, the "Not a word" message, the sound, the haptic, the spoken announcement if you use one. Colour is never the only signal. I'm also an optometrist, so that one was always going to be a rule.

The first version crashed the app on every single word for anyone who had turned it on. iOS and Android both.

What happened was that the tint animated the tiles' background colour from the JavaScript side, while the tiles' small bounce on selection runs on the native side. React Native won't let both drivers touch the same set of nodes, and it tells you by crashing. 4,913 tests passed before that update went out. None of them could have caught it, because the rule is enforced by the runtime at the moment the animation runs, and a unit test never gets there.

I pulled the update the same day, then rebuilt the effect the other way round: a static colour overlay on each tile whose opacity is animated natively, so the two systems never share a node. Then I sat with it on the simulator for a session and changed four more things I only saw by watching it. The wash is now one premixed colour on every tile, because a green flash over a red selected tile was showing red underneath. The drag trail clears instantly instead of fading through the flash. The word you just submitted holds on screen for 300 milliseconds so you can read the verdict against it. That's the version that's live.

Now any change that touches animation gets run on a simulator before it goes out over the air. The tests being green isn't enough on its own.

The rest of 1.4.0, briefly. Sound cues decode properly now, so they keep up with a fast run of words instead of lagging. The tutorial runs straight into your first Daily on the same board. Campaign and Practice work when sign-in can't be confirmed, so a bad connection no longer locks you out of playing alone. There are 42 card backgrounds for your profile card. The board uses a modern typeface by default, and on tablets you can pick a board size. Friends lists hold 20 instead of 15. Multiplayer rooms can vote to skip the word replay. If you sign in with Google or Apple and there's no account linked yet, you're asked whether to start fresh instead of being shown an error.

One thing in there you'll never notice. Campaign progress is now keyed to the level itself rather than its asked whether to start fresh instead of being shown an error.

One thing in there you'll never notice. Campaign progress is now keyed to the level itself rather than its position in the chapter, so a level or chapter you've finished can never lock again when I change the content. The campaign has grown from 12 levels a chapter to 52 since launch, and the old code would have re-locked chapters for early players on exactly that kind of change. The first version of the fix didn't actually guarantee it. A review caught that, and the second version does.

Android has 1.4.0 now. On iOS it's with Apple. The previous build was rejected because a reviewer signing in with a fresh Apple ID got a generic error instead of the question about starting fresh, which is what that fix was for. Build 45 went in on 1 September.

Discussion