Ir para o conteúdo principal
Voltar aos artigos

Checkout da Shopify: orçamento de bundle vale mais que trocar framework por moda

A migração para Preact e web components reduziu bundles, mas o resultado também dependeu de revisar bibliotecas e preservar comportamento.

·3 min de leitura·4 visualizações

A Shopify reescreveu cinco extensões de alto tráfego do Checkout Blocks, substituindo React e a ponte Remote UI legada por remote-dom, Preact e Polaris web components.[16] Os bundles transferidos caíram entre 40% e 85%, enquanto o carregamento das extensões melhorou aproximadamente 8% na mediana e 7% no p90, ponderado pelo volume de checkout.[16] A diferença entre essas métricas é a parte que não deve desaparecer da análise.

O que muda para quem desenvolve

Reduzir bytes e reduzir tempo de carregamento são objetivos relacionados, mas não intercambiáveis. Minha recomendação é definir as duas medidas e manter seu escopo: tamanho da extensão, tempo da extensão e experiência total de compra não são o mesmo resultado.

A CLI remote-dom da API 2026-01 estabelece um orçamento rígido de 64 KB gzip por extensão, abaixo dos bundles anteriores, que tinham aproximadamente 100 a 112 KB gzip.[16] Um limite explícito transforma tamanho em requisito de entrega, não em tarefa opcional para quando sobrar tempo.

A equipe também substituiu liquidjs por um parser próprio chamado droplet, com 13 KB gzip, e validou equivalência contra um corpus de 42 mil linhas derivado de configurações reais de lojistas.[16] dayjs foi trocado por um utilitário pequeno, enquanto markdown-to-jsx permaneceu adaptado a Preact.[16] O resultado não veio de uma troca isolada de framework.

Minha leitura: dependência deve ser escolhida pelo comportamento necessário e pelo custo de preservá-lo. Um parser menor só é uma vitória se atender à linguagem que os usuários realmente usam. Reimplementar uma biblioteca sem corpus de equivalência pode trocar bytes por regressões.

Como aplicar

Faça um inventário de dependências por contribuição ao bundle e função exercida. Separe bibliotecas indispensáveis das que foram adicionadas para um uso pequeno. Antes de substituir qualquer uma, registre entradas e saídas representativas desse uso.

Proponha um experimento com uma extensão: meça o bundle gzip atual, substitua uma dependência delimitada e execute o mesmo conjunto de casos. Inclua configurações incompletas, conteúdo escapado e situações de erro que façam parte do contrato.

Depois, compare o carregamento em condições repetíveis e confira a interação completa. O critério de aceitação deve combinar limite de tamanho, equivalência funcional e ausência de regressão visível. Não aceite uma extensão menor que deixa de atender configurações existentes.

Para quem mantém extensões Shopify, a revisão também é operacional: desde 1º de outubro de 2026, implantações em versões anteriores à API 2026-01 são bloqueadas.[16] Planeje a atualização de API junto com a migração da interface.

Cuidados e limites

Desenvolvedores citados na reportagem reclamaram de script servido por CDN sem possibilidade de fixar versão e de lacunas nos componentes, incluindo a ausência, nos novos componentes, de uma tabela equivalente à disponível no Polaris React.[16] São preocupações relatadas que devem ser investigadas no seu escopo, não ignoradas pelo ganho de tamanho.

Web components não encerram a discussão de compatibilidade e estabilidade. Minha recomendação é incluir dependências externas e componentes ausentes no plano. Uma migração bem-sucedida precisa preservar a capacidade de entregar e de explicar o comportamento, não apenas alcançar uma porcentagem de redução.

Fonte

[16] Fonte: InfoQ

Continue lendo