Todo o peso aparece na primeira abertura

Um site de marketing, um fluxo de checkout, um painel — abra no celular e o navegador começa a baixar. A página web móvel mediana transfere hoje cerca de 2,2 MB (2.164 KB) de recursos na primeira visualização (HTTP Archive Web Almanac 2025, rastreamento de julho de 2025), com JavaScript numa mediana de 646–697 KB comprimidos e 22 solicitações de script numa página típica. Uma parte — cerca de 251 KB descomprimidos, mediana — é JavaScript que nunca executa. O modelo é "baixe o documento, depois o que ele precisa", e na primeira abertura o usuário paga por tudo.

H5 entrega o peso por antecipação

Navegadores podem dividir código, carregar preguiçosamente e separar por rota. Mas o padrão dominante ainda é um pacote de entrada que arrasta o framework, a rota e a UI compartilhada. Mesmo com disciplina, o peso da página é um número único que o usuário baixa antes de algo ser útil. JavaScript é o recurso mais caro byte a byte (web.dev / Google): após baixar, precisa ser analisado, compilado e executado no thread principal, então um pacote pesado atrasa a interatividade diretamente. Num dispositivo de médio porte, um pacote de 1 MB+ pode empurrar o tempo até interativo além do ponto em que os usuários saem.

O problema mais profundo é estrutural: o navegador não tem noção de "só o shell, o resto depois". Tudo é um fetch por URL, e o primeiro fetch é toda a experiência.

Mini-programas baixam apenas o pacote principal

Um mini-programa é entregue como pacotes, não como página. Os limites documentados da WeChat são um pacote principal não maior que 2 MB e um programa total não maior que 20 MB (Tencent Cloud / docs oficiais). No lançamento só o pacote principal é baixado — a página inicial, a TabBar e os recursos comuns que todo subpacote compartilha. Os subpacotes (cada um ≤2 MB) são obtidos só quando o usuário navega para eles. Um subpacote independente pode até carregar sem o pacote principal, por isso páginas de campanha abrem rápido sem arrastar o app todo.

A chave é que a divisão é imposta pela plataforma, não pela disciplina do desenvolvedor. O primeiro download é limitado e pequeno por construção.

Regras de pré-carga escondem a espera

Mesmo o download sob demanda é invisível em boas implementações. Com preloadRule no app.json, o host pré-carrega o subpacote que uma página provavelmente precisará antes de o usuário navegar — ao entrar no início ele pode baixar em segundo plano o subpacote "important". Quando o toque acontece, a próxima tela já está no dispositivo. A plataforma equilibra contra tráfego e armazenamento, limitando a pré-carga a 2 MB por página para não consumir dados silenciosamente.

Assim a experiência é: download inicial mínimo, resto transmitido e frequentemente já presente. O equivalente H5 — lazy loading por rota — ainda paga um fetch em cada primeira navegação a um novo fragmento.

Lado a lado

DimensãoH5 / Web móvelMini-Programa
Tamanho do primeiro download~2,2 MB mediana (peso completo)Só pacote principal (≤2 MB) no lançamento
Divisão de pacoteDivisão manual / lazy importSubpacotes por plataforma (cada ≤2 MB, total ≤20 MB)
Ao navegarBaixa o novo fragmento na primeira visitaSubpacote já pré-carregado ou sob demanda
Código não usado~251 KB JS não usado medianaSó o que o pacote referencia
Controle de pré-cargaService worker / heurísticas de app shellpreloadRule declarativo, teto 2 MB/página
Isolamento de tela grandeN/ASubpacotes independentes sem pacote principal

O que isso significa para o seu build

Se o seu fluxo tem algumas telas pesadas atrás de uma entrada leve, um mini-programa mantém a porta leve e transmite as salas. Isso importa mais na tela de aquisição e em Android de entrada, onde um pacote principal de 2 MB ganha de um bundle único de 2 MB+ porque só o shell está no caminho crítico. H5 ainda vence na web aberta — o link, a landing, o SEO — mas a experiência dentro do host não deveria entregar todo o seu peso na primeira abertura quando não precisa.

Onde o Cross Mini App se encaixa

O Cross Mini App dá ao seu mini-programa um runtime e um catálogo aberto que herdam esse modelo de entrega dividida. Construa uma vez contra uma superfície de API padrão; cada host que o incorpora baixa só o que a entrada precisa e transmite o resto por regras de plataforma, em vez de buscar novamente um bundle monolítico. O primeiro download é limitado de propósito. H5 traz o visitante; o mini-programa o retém sem o imposto do peso.

Fontes