Porque é que o checkout no Magento mostra um ecrã branco com carrinhos grandes (e como corrigir)?

8 de maio de 2026
Porque é que o checkout no Magento mostra um ecrã branco com carrinhos grandes (e como corrigir)?

Magento 2 – ecrã branco no checkout (white screen of death) com um carrinho grande

Imagine um cliente que adiciona dezenas de produtos ao carrinho… avança para o checkout… e, em vez da caixa, vê um ecrã branco.
Parece familiar? No Magento 2.4.x, este não é um problema raro — e acabámos de o resolver num projeto real.

Sintomas

  • O checkout funcionava corretamente com carrinhos mais pequenos.

  • Com dezenas de produtos — página branca.

  • Nos logs, não havia mensagens nem erros.

  • Aleatoriamente, o checkout funcionava e, pouco depois, o mesmo carrinho apresentava uma página vazia.

Pista n.º 1 – Redis?

As primeiras suspeitas recaíram sobre o Redis: bloqueios de sessão, concorrência, timeouts.

Depois de desativar o Redis, as sessões ficaram de facto um pouco mais estáveis, mas o problema não desapareceu de todo.

Pista n.º 2 – shipping.phtml

ddd

Ao fazer debug passo a passo, chegámos ao ficheiro:

vendor/magento/module-checkout/view/frontend/templates/cart/shipping.phtml

que carregava um JSON gigante:

window.checkoutConfig = {$serializedCheckoutConfig};

Origem do problema – quoteItemData

Descobrimos que o culpado era uma linha em DefaultConfigProvider:

$output['quoteItemData'] = $quoteItemData;

ou seja, todos os dados sobre os produtos no carrinho. E, neste ponto, o Magento carregava, entre outros, custom_attributes_serializable, que podia chegar a pesar… centenas de MB.

Solução

O fix mais simples: remover os dados desnecessários antes de chegarem ao checkoutConfig.

Fizemo-lo com um plugin em QuoteItem::setProduct():

public function afterSetProduct( MagentoQuoteModelQuoteItem $subject, $result, $product) { // główny winowajca $subject->setData('custom_attributes_serializable', null); return $result;}

O resultado?

  • O checkout passou a funcionar de forma estável, mesmo com carrinhos grandes.

  • O payload JSON desceu de vários/dezenas de MB para algumas centenas de KB.

Conclusões

  • No Magento 2, o checkout pode ser muito sensível ao que entra em quoteItemData.

  • Se tiverem problemas com ecrãs brancos no carrinho/checkout, verifiquem o tamanho de custom_attributes_serializable.

  • Por vezes, basta um pequeno plugin para salvar a estabilidade de toda a loja.

Já tiveram aventuras semelhantes com o checkout? Que outros casos estranhos vos fizeram falhar o carrinho no Magento? Partilhem nos comentários

Produtos
Aktualizacja preferencji plików cookie