Elementos básicos e compatibilidade
Os miniapps são apps pequenos (geralmente 2 a 4 MB) que exigem um superapp para serem executados. O que eles têm em comum, independente do superapp, é que são criados com as tecnologias da Web HTML, CSS e JavaScript. O tempo de execução de um miniapp é uma WebView no superapp, e não o sistema operacional subjacente, o que torna os miniapps multiplataforma. O mesmo miniapp pode ser executado no mesmo superapp, não importa se ele é executado no Android, iOS ou outro SO. No entanto, nem todos os miniapps podem ser executados em todos os superapps. Mais informações mais tarde.
Discovery
Os mini apps geralmente são descobertos ad hoc por meio de códigos de barras 2D com marca, o que resolve um desafio importante de mudança do modo off-line para o on-line, por exemplo, de um menu de restaurante físico para um mini app de pagamento ou de um patinete elétrico físico para um mini app de aluguel. A imagem abaixo mostra um exemplo desse código de barras 2D com marca para o mini app de demonstração do WeChat. Quando o código é lido com o super app WeChat, o mini app é iniciado diretamente. Outros superapps geralmente não conseguem reconhecer o código de barras.

Os miniapps também podem ser descobertos pela pesquisa regular no app no superapp, compartilhados em mensagens de chat ou fazer parte de um item de notícias em um feed de notícias. Alguns superapps têm a noção de contas verificadas que podem conter miniapps nos perfis. Os miniapps podem ser destacados quando estão próximos geograficamente, como o miniapp de uma empresa em frente à qual o usuário está, ou virtualmente próximos, como quando o usuário recebe direções em um mapa mostrado no superapp. Os miniapps usados com frequência estão disponíveis em uma gaveta de apps que, em muitos superapps, pode ser acessada com um gesto de deslizar para baixo ou em uma seção especial no menu do superapp.
A experiência do usuário
Todos os superapps têm mais ou menos a mesma interface do usuário para miniapps. Uma barra superior com o nome do miniapp e, no canto superior da tela, um botão de fechar à direita, precedido por um menu de ações que dá acesso a recursos comuns, como compartilhar o app, adicioná-lo a uma lista de favoritos ou à tela inicial, denunciar apps abusivos, enviar feedback e configurações. A captura de tela abaixo mostra um miniapp de compras em execução no contexto do superapp Alipay com o menu de ações aberto.

Paradigmas de interface
Normalmente, há uma barra de guias na parte de baixo para a navegação principal do miniapp. A maioria dos provedores de superapps oferece componentes que ajudam os desenvolvedores a implementar rapidamente paradigmas comuns de interface, como carrosséis, acordeões, barras de progresso, spinners, interruptores, mapas e assim por diante. Isso também ajuda a tornar a experiência do usuário entre diferentes miniapps consistente, o que é incentivado pelas Diretrizes de design de miniprogramas do WeChat. Isso é semelhante ao que a Apple incentiva com as Diretrizes de interface humana da Apple e o Google com as recomendações de Design para Android.

Disponibilização
Em vez de serem enviados em partes como recursos separados, os miniapps são enviados como apps empacotados criptografados, ou seja, como arquivos que contêm todos os recursos em apenas um arquivo. Ao contrário dos apps da Web normais, eles também não são veiculados pela origem específica do criador do miniapp, mas diretamente pelo provedor do superapp. Eles ainda podem acessar APIs dos servidores do criador de miniapps, mas os recursos principais (geralmente chamados de shell do app) precisam ser exibidos pelo provedor do superapp. Os miniapps precisam declarar as origens de onde solicitam dados adicionais.
Armazenamento em cache, atualizações e links diretos
Os miniapps são mantidos no cache do superapp. Assim, na próxima vez que o usuário iniciar um miniapp em cache, ele será carregado quase instantaneamente. Se houver uma atualização, um novo pacote de app será carregado. O número da versão pode fazer parte do URI de inicialização (consulte Discovery). Assim, o superapp sabe com antecedência se a versão em cache local ainda está atualizada. O URI de inicialização também pode conter a página desejado do miniapp, para que seja possível fazer links diretos para páginas específicas de miniapps. Com um sitemap, os miniapps podem declarar quais das páginas precisam ser indexáveis pelo rastreador de miniapps do provedor de superapps.

Segurança e permissões
Os miniapps são analisados pelo provedor de superapps, o que significa que os usuários os consideram mais seguros do que os apps da Web. Eles precisam declarar as permissões potencialmente necessárias com antecedência em um arquivo de configuração de manifesto ou miniaplicativo, que, para alguns provedores, também exige explicações sobre por que cada permissão é necessária. Os miniapps ainda podem mentir, mas teriam dificuldade para justificar por que estão, por exemplo, tentando acessar sensores de movimento sem um motivo aparente para o usuário. O incentivo para criar um impressão digital do usuário é muito menor em comparação com a Web, já que o usuário normalmente já está conectado ao superapp (consulte Identidade, pagamento e gráfico social).
Sempre que um miniapp realiza uma operação que exige uma permissão especial, uma solicitação é mostrada ao usuário que, se aplicada pela plataforma, também inclui a justificativa de uso, conforme declarado pelo desenvolvedor. A captura de tela abaixo mostra o miniapp de demonstração do Douyin pedindo permissão ao usuário para compartilhar a localização. Em alguns superapps, também há uma API imperativa que os miniapps podem aproveitar para solicitar permissões sem usá-las imediatamente ou apenas para verificar o status de uma permissão. Isso pode incluir até mesmo uma API para abrir as configurações de permissão do superapp central, que corresponde às Configurações do site do Chrome. Os miniapps também precisam declarar com antecedência as origens de todos os servidores de que podem solicitar dados.

Acesso a recursos avançados
O superapp de hospedagem oferece acesso a APIs poderosas por meio de uma ponte JavaScript que é injetada na
WebView oferecida pelo superapp (consulte
Blocos de construção e compatibilidade). Essa ponte JavaScript
oferece hooks nas APIs do sistema operacional. Por exemplo, uma função JavaScript de miniapp, como
getConnectedWifi()
, que é a capacidade de um miniapp de extrair o nome da rede Wi-Fi
ativa no momento, é facilitada pela API
getConnectionInfo()
do Android ou pela
CNCopyCurrentNetworkInfo()
do iOS. Outros exemplos de APIs de dispositivo poderosas expostas em superapps comuns são Bluetooth, NFC,
iBeacon, GPS, área de transferência do sistema, sensores de orientação, informações da bateria, acesso ao calendário,
acesso à agenda telefônica, controle de brilho da tela, acesso ao sistema de arquivos, hardware de vibração para feedback físico,
acesso à câmera e ao microfone, gravação de tela e criação de capturas de tela, status da rede, soquetes UDP,
leitura de código de barras, informações de memória do dispositivo e muito mais.

Acesso a serviços em nuvem
Muitos superapps também oferecem acesso "sem servidor" a serviços de nuvem do provedor que, além da computação em nuvem e do armazenamento em nuvem, frequentemente também incluem tarefas de nível mais alto, como tradução de texto, detecção de objetos ou classificação de conteúdo em imagens, reconhecimento de fala ou outras tarefas de aprendizado de máquina. Os miniapps podem ser monetizados com anúncios, que geralmente são disponibilizados por provedores de superapps. As plataformas de superapps geralmente também fornecem dados de análise em nuvem, para que os desenvolvedores de miniapps possam entender melhor como os usuários interagem com os apps.
Identidade, pagamento, gráfico social
Um recurso muito importante dos miniapps é a identidade e as informações do gráfico social compartilhadas pelo superapp. Superapps como o Douyin ou o WeChat começaram como sites de rede social no sentido mais amplo, em que os usuários têm uma identidade (às vezes até verificada pelo governo), uma rede de amigos ou seguidores e, com frequência, também dados de pagamento armazenados. Por exemplo, um miniapp de compras pode (ou às vezes até precisa) processar pagamentos diretamente pelas APIs de pagamento do superapp e, com o consentimento do usuário, pode receber dados do usuário, como endereço de entrega, número de telefone e nome completo, sem forçar o usuário a preencher formulários. Abaixo, você pode conferir o mini app do Walmart em execução no WeChat, aberto pela primeira vez, me cumprimentando com um rosto conhecido.

Os miniapps podem se tornar muito populares ao permitir que as pessoas compartilhem conquistas, como recordes em um jogo, e desafiem os contatos com atualizações de status. O miniapp fica a apenas um toque de distância, para que os usuários possam participar da competição sem problemas e, assim, o miniapp aumenta o alcance.
Agradecimentos
Este artigo foi revisado por Joe Medley, Kayce Basques, Milica Mihajlija, Alan Kent e Keith Gu.