The tables are the easy part: roughly one core and 3,400 hands a minute at 1,000 of them. What stops the deployment is that a per-sender view is materialized once per connected client and re-evaluated inside the database's one write lock.
Our full no-limit postflop tree needs 27.4 GiB in the best public 16-bit layout. It solves in 7.8–8.6 GiB on a 16 GiB Mac Mini, because 8-bit regrets survive stochastic rounding — and strategy sums do not.
We moved our React Native poker table onto Skia Graphite and nothing drew differently. What changed is everything around the pixels: native and web now run two GPU stacks, the one breaking API lives in our hottest path, and a package rename turned a renderer into a release boundary.
95 tables, 92 reducers and 27 views, with the rules engine running as TypeScript inside the database. What the platform gave us, what we had to build ourselves, and why the write lock — not the table count — is the ceiling.