Já existem alguns apps com usuários que tem esse protocolo implementado:

É sim, complexo, mas nem todas as aplicações precisam de algo assim.

Os ganhos de UX e simplificação do código fazem essa mudança valer a pena eu diria.

O uso das CRDTs ajuda com a parte de sincronização e entender quem fez o que.

Mas certamente não é ideal pra todo tipo de aplicação. Mas, para apps de produtividade, acho difícil de bater essa arquitetura.

Não vejo como simplificação de código a necessidade de manter lógica de negócio, lógica de armazenamento e de banco de dados em vários lugares. São poucos casos que exigem isso. Mas não concordo com a parte de simplificação de código. Nos meus sistemas eu mantenho os dados em memória, para carregar somente uma vez e a cada mudança eu salvo localmente quando recebo o retorno da requisição feita. Só isso. E só isso é muuuuito mais complexo do que requisitar os dados a cada vez que entrar na tela. Muito. E eu sequer armazeno localmente, sequer tenho estrutura de sincronização e sequer tenho resolução de conflitos, nem filas etc. Enfim... acho que é válido, sim. Meu sistema foi escrito com esse propósito futuro, mas não é nada simples.