Tão lindo na teoria, na prática, bem díficil de aplicar, sincronização de dados locais com servidor entre multiplos clientes é MUITO complexo.
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.