Live product
ChessCoach
Result
7.3MB
down from 38MB, same playing strength
Problem
Stockfish 16 shipped a 38MB WASM binary to every visitor before the board could be used at all — unusable on a mobile connection.
What broke
The obvious fix — lazy-loading the original binary — moved the stall rather than removing it.
The payload itself had to change, and the lite build had to be verified to grade moves identically before it could replace the full engine.
Approach
Replaced the engine with a Stockfish 18 lite build carrying an embedded NNUE, behind a capability probe that runs multi-threaded where the browser allows it and falls back to single-threaded where it does not.
Stack Stockfish WASM · OpenRouter · Supabase
Next project →ScanDina