"Ah, porque agora o futuro são aplicações que funcionam offline, com os dados no cliente, sincronizando magicamente quando tem rede!"
Parabéns, acabaram de reinventar... o aplicativo desktop de 1995! Só que com umas 50 camadas de complexidade a mais.
E o suprassumo dessa comédia toda? Os CRDTs! "Conflict-Free Replicated Data Types". Que nome pomposo, hein? Parece tese de doutorado em física quântica. E pra quê? Pra resolver um problema que a PRÓPRIA WEB INVENTOU PRA SI MESMA!
No mundo real, fora dessa bolha do navegador, a gente já sabia como compartilhar e sincronizar dados. Pega um Git da vida: SHA do conteúdo e B R A S I L.
Aí vem a web, com sua sandbox de JavaScript, e diz: "Não, não, não! Precisa ser mais... webby." E aí tome-lhe teoria dos conjuntos, ordem parcial, semilátices, e toda uma parafernália matemática pra garantir que se dois Zé Roelas editarem o mesmo "bloco de notas online" ao mesmo tempo o universo não imploda.
Uma complexidade ABSURDA pra fazer o que um diff ou um sistema de locking maroto faria...
Depois de criar esse monstro de Frankenstein lógico que são os CRDTs rodando em JavaScript, qual é a "solução mágica" pra fazer essa geringonça funcionar minimamente rápido e não fritar o celular do usuário? WebAssembly!
É isso mesmo! Pra conseguir implementar essa lógica bizantina de sincronização de dados que a gente já tinha resolvido precisamos compilar C, Rust, Go – LINGUAGENS DE VERDADE, que geram código DECENTE – pra fazer essa merda funcionar no BENDITO NAVEGADOR!
Ou seja, a gente cria uma limitação (rodar tudo no JS single-threaded), inventa um problema complexíssimo pra contornar essa limitação (CRDTs), e aí traz uma tecnologia (WASM) pra dar poder de fogo de linguagem de baixo nível... pra resolver o problema que a gente mesmo criou! É genial, só que ao contrário!
É o eterno ciclo da web: "Vamos simplificar tudo -> "Ops, ficou lento e limitado." -> "Vamos criar abstrações incrivelmente complexas pra simular o que já existe!" -> "Ops, essas abstrações são complexas demais pra linguagem de script." -> "vamos simplificar tudo"
Eu já vi essa historia algumas vezes e aposto que daqui a pouco vão "descobrir" que ter um sistema de arquivos local persistente e rápido é uma boa ideia... e vão implementar um em WASM, claro. Porque tem que ser "web-first", mesmo que seja a coisa mais "desktop" que a gente já viu.