13 pontos por disjukr 2022-06-15 | 1 comentários | Compartilhar no WhatsApp

Na Riiid, como muitas outras startups focadas principalmente em apps mobile, usamos uma abordagem em que telas comuns a cada plataforma mobile são desenvolvidas na web e embarcadas no formato de WebView.

Separadamente, para permitir iterações mais rápidas no desenvolvimento de WebView, também usamos páginas web mobile virtuais que imitam o ambiente nativo com iframe em vez de WebView, e as utilizamos no desenvolvimento das telas web.

Como as telas feitas como páginas web têm um ciclo de vida mais curto que o nativo e possuem permissões de API limitadas, inevitavelmente surge a necessidade de escrever código para se comunicar com o invólucro que incorpora a WebView (nativo, parent window).

Mas as interfaces de cada invólucro para se comunicar com a WebView têm limitações incômodas — como não permitir comunicação bidirecional ou suportar apenas a execução de trechos arbitrários de código JS — e, além disso, como a interface varia muito entre os diferentes invólucros, escrever esse código de comunicação se torna cansativo.

Nós já usamos as tecnologias protobuf e gRPC quando clientes web/mobile se comunicam com servidores de API. O protobuf é uma linguagem de esquema usada para descrever interfaces de serviço, e o gRPC é a camada de protocolo que transforma requisições abstratas definidas em protobuf em requisições HTTP reais.

Como já usávamos protobuf na comunicação com o backend e os engenheiros já estavam familiarizados com ele, decidimos há bastante tempo usar protobuf para resolver os problemas do modelo existente de comunicação com WebView, unificando também o workflow.

Depois disso, ao desenvolver vários apps mobile ao longo de muitos anos, já vínhamos usando uma abordagem de desenvolvimento com codegen de protobuf para a comunicação entre invólucro <-> WebView, e recentemente, ao criar um novo app, decidimos melhorar essa tecnologia e torná-la open source.
wrp nasceu nesse contexto como uma camada de protocolo dedicada a WebView, com papel semelhante ao do gRPC.

O wrp oferece suporte a typescript & react / kotlin & compose / swift & tca, streams, comunicação bidirecional, restauração do contexto de comunicação quando a página web é recarregada, entre outros recursos, e também lida em certo grau com situações de incompatibilidade de protocolo entre WebView e app nativo causadas pela atualização lenta da versão do app pelos usuários.

Como as principais funcionalidades do wrp acabaram de ser desenvolvidas, ele ainda não é estável, mas, se você tiver interesse nessa tecnologia, gostaríamos muito que entrasse no nosso servidor do Discord para conversar com a gente.


Servidor do Discord do Pbkit: https://discord.gg/PHmV3nhvQq

Web - TypeScript & React

iOS - Swift & TCA

Android - Kotlin & Compose


(O texto foi levemente revisado e transcrito a partir do que escrevi no Twitter)
https://twitter.com/disjukr/status/1537034296959315968

1 comentários

 
disjukr 2022-06-15