We store as a replaceable event saved every time you leave each cell, which updates everybody on the fly. There could be issues, but it mostly works.
Discussion
Concurrent edits are quite rare in practice and spreadsheets tend to be small. Replaceable addressable events might work well here.
I tried app data replication with incremental change events chained eith hash pointers