Skip to main content
The Voyager cart is a drawer by default — it slides in from the right edge on any cart-icon click, on any add-to-bag submission, and on the empty cart-icon click. It coexists with the full cart page at /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:
The fetch is small (just the drawer markup, not the whole page) and runs after every successful add-to-bag. The result: line totals, the subtotal, and the item count chip in the header are always in sync without a full page reload. If you’re writing a custom integration — a “Buy with us” button on a custom Liquid section, for example — call 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 standard payment_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

When cart.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.
Every piece of copy in the drawer — the header eyebrow, the empty headline, the empty body, the CTA, the subtotal label, the shipping note, both buttons — is merchant-editable via the section’s own schema in the Theme Customizer. The cart drawer is now a true section (not a snippet), so its settings appear in the customizer just like any other section.

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.