I've been mildly obsessed with typing games since I first used TypeRacer in 2009. Last month I finally built my own: Clackpit — a real-time typing game with a daily leaderboard, a "drill your weak words" mode, and a shareable result card. No accounts required. This post is about the engineering decisions behind it. The core challenge: making keypresses feel instant Typing games live or die on latency. If there's any perceptible lag between pressing a key and seeing the result on screen, the whole thing feels broken. The browser event loop is the enemy here. The naive implementation is to listen to keydown , update some state, then re-render. The problem is that if your render path is slow — even 16ms — it compounds with the browser's own input processing and suddenly the game feels sluggish. A few things that actually helped: Don't use a controlled <input> for the active field. I initially used a React-style controlled input where every keypress went through state → re-render → DOM update.…