/cart; both share the same data and Liquid logic.
Triggers
The drawer opens in four situations:
The drawer closes on backdrop click, on the close (
×) button, on Continue shopping, on Escape, and on Proceed to Checkout (which then routes to Shopify’s hosted Checkout).
How the live refresh works
The cart drawer is server-rendered from the Liquid{{ cart }} object. To keep the displayed item count, prices, and discounts honest after every add, Voyager uses Shopify’s Section Rendering API:
window.refreshCart() after your POST to /cart/add.js to keep the drawer fresh.
Accelerated checkout
The drawer’s checkout button is followed by the accelerated-checkout stack rendered by Shopify’s standardpayment_button filter:
You don’t configure these in the theme — they’re a function of your Shopify Payments setup. The drawer just gives them room to render. If you don’t have any third-party wallets enabled, only the primary Proceed to Checkout button appears.
Empty state
Whencart.item_count == 0, the drawer renders a quiet empty state — a script-style “Empty” wordmark, a one-line invitation, and a Continue shopping link to your all collection.
Editable copy
Open the Theme Customizer → click the cart icon to open the drawer in preview → Cart drawer section in the right-rail picker.
The copy is intentionally on-brand rather than generic — tune all eight strings to your house voice without editing theme code.
Mobile vs desktop
On both, the body scroll is locked while the drawer is open (
document.body.style.overflow = 'hidden') so swipes inside the drawer scroll the line items, not the page beneath.
Cart settings
A handful of theme-level cart settings affect the drawer’s contents. Find them in Theme settings → Cart.What’s next
Quick-view modal
The product modal that fires from any collection-card “Select Options” click.
Cart page
The full-page cart, for visitors who’d rather not work in a drawer.