Cart actions
No tema, useuseCorvexCart() ou storefront.cart.*. Não monte fetch manual.
cartId coincide com o checkout da sessão — checkoutUrl vem pronto após o primeiro ensure / addItem.
Hook recomendado
Sessão persistida em
localStorage: corvex_storefront_cart_{storeId}.
Contexto de página (page.cart)
No template Carrinho (/cart), a plataforma injeta:
useCorvexCart() e page.cart leem o mesmo carrinho (deduplicado via storefront.cart.ensure()).
Cliente storefront.cart
addItem:
Regras importantes
- Não envie preço manual — backend resolve preço, título e imagem.
- Envie
productVariantIdquando o produto tem variantes. removeItem/updateQuantityusamitems[n].id(UUID da linha), nãoproductId.- Se
GETretornarCART_NOT_FOUND, o SDK recria a sessão automaticamente. - Preços na API são números decimais na moeda do carrinho. Use
unitPriceMoney/linePriceMoneyouformatMoney. Não prefixeR$à mão. - Se
addItemcomproductVariantIdreceber erro interno ou variante inválida, o cliente tenta de novo sem o id da variante (cart.js). A linha pode entrar sem a variante escolhida. Isso é comportamento do SDK, não uma garantia de estoque.
Erros comuns
Provider
CorvexProvider já inclui CorvexCartProvider. Não é necessário wrapper extra.
Separação de responsabilidades:
- Queries → catálogo (
products,categories,search) - Actions → carrinho (
storefront.cart,useCorvexCart)
storefront.cart. A validação pública é storefront.coupons.validate. O carrinho só reflete totalDiscount se a API já devolveu o desconto.
Tarefas prontas, sem repetir o contrato aqui:
- Card de produto
- Seletor de variante
- Drawer do carrinho — quantidade, contagem e
goToCheckout

