Shameless plug, but at my company we had a similar set of requirements (game synced between browsers in real time), but for poker instead of a board game (https://oddslingers.com)! We tried a bunch of different solutions, and ended up writing a pure functional, declarative, animations framework for redux called redux time: https://github.com/Monadical-SAS/redux-time.
It does similar things like server-time-synced animations across multiple browsers, except the state is all managed by the backend.
It does similar things like server-time-synced animations across multiple browsers, except the state is all managed by the backend.