Skip to main content

Documentation Index

Fetch the complete documentation index at: https://voyage-theme.fasil.in/llms.txt

Use this file to discover all available pages before exploring further.

If something isn’t behaving the way you expect, scan the list below. Each accordion is a self-contained answer — open the one closest to your symptom.
Two possible causes.
  1. The logo wasn’t uploaded. Theme settings → Logo → check both Logo (default / navy variant) and Logo (light variant for dark backgrounds). If both are empty, Voyager falls back to the shop name in Playfair Display.
  2. Only the light variant is uploaded. The default variant is what shows on the cream page background and on most pages. The light variant only shows on the navy hero overlay. If you’ve uploaded one but not the other, the missing variant falls back to the wordmark.
Upload both files. They should be the same wordmark, recolored — dark ink for the default, white for the light variant.
Mobile autoplay only works under three conditions, all of which Voyager sets by default. If one is broken upstream, autoplay fails silently.
  1. Muted. Voyager adds muted to every hero video. If you re-encode the MP4 with embedded audio and then strip the attribute, autoplay breaks. Keep the file silent or muted.
  2. Playsinline. Voyager adds playsinline so iOS doesn’t fullscreen the video. Don’t remove this attribute.
  3. Supported format. MP4 (H.264 / AAC) and WebM are universally supported. AVI, MOV, and HEVC are not.
File size matters too. Voyager caps hero videos at 4 MB before warning the merchant. Over that, mobile data connections may stall the load and skip autoplay entirely.
The cart drawer relies on the Shopify Section Rendering API. Test in a browser console.
  1. Open the cart drawer manually — click the cart icon in the header.
  2. If nothing happens, open browser DevTools → Network. Click the cart icon again.
  3. Look for a request to /?sections=cart-drawer. If it returns 4xx or 5xx, your store is rate-limited or the section doesn’t exist.
Fix: check that sections/cart-drawer.liquid (or the section referenced in theme.js) is present in your theme. If you’ve deleted it, re-add from the Voyager source. If the request is being blocked by a security app, allowlist the path.
You’re on New customer accounts, which renders Shopify-hosted pages instead of your theme’s templates. Voyager’s customers/*.liquid templates only render under Classic customer accounts.Switch in Settings → Customer accountsAccounts version. Classic is the version that uses your theme.
  1. Search & Discovery app. Make sure the free Shopify Search & Discovery app is installed. Most predictive search features depend on it.
  2. Index status. New stores take a few minutes for the search index to populate. Wait 15 minutes after adding products.
  3. Filter conflicts. If you’ve added strict filters in the app (e.g., only published products of a specific type), they apply to search too. Loosen them to debug.
A settings_data.json issue. The three named theme styles (Editorial Navy / Warm Cream / Minimal Monochrome) are encoded as presets. If only one shows, your settings_data.json is missing the presets key.Fix: re-upload config/settings_data.json from the Voyager source. The file is overwritten safely — your other settings are stored separately.
The magnetic effect — buttons that follow the cursor on hover — is wired in assets/theme.js. If buttons aren’t reacting:
  1. Asset URL. Confirm assets/theme.js is being loaded by checking layout/theme.liquid for {{ 'theme.js' | asset_url | script_tag }}.
  2. Prefers reduced motion. macOS and iOS both expose this OS-level preference. Voyager respects it — magnetic CTAs are disabled for visitors who have reduced motion turned on.
  3. Touch devices. Magnetic only fires on cursor-based devices. Phones and tablets get a tap state instead.
The navy curtain that rises on every navigation uses sessionStorage to avoid replaying on back-button returns. If it stays stuck, the cleanup didn’t fire.Quick fix: clear sessionStorage for your domain (DevTools → ApplicationSession Storage → right-click → Clear). The curtain resets.If it happens repeatedly, an extension or aggressive cache is blocking the cleanup script. Test in incognito.
Image weight is the usual culprit.
  1. Run Lighthouse on the homepage and the product page in Chrome DevTools.
  2. Open the Network panel, filter to Img, and sort by size.
  3. Anything over 200 KB on first load is suspect. Hero posters can run 300–500 KB; everything else should be lighter.
Fix: re-export from your image source at JPG q85, max 1800 px on the longest edge. Voyager uses image_url with explicit width hints so Shopify can serve smaller sources to smaller viewports — but only if the upload itself isn’t oversized.
The most common cause: a muted-text token that read fine on cream becomes illegible on charcoal. Voyager uses color_muted (default #565E6B) across both light and dark modes — the same hex.Fix: pick a muted color with a contrast ratio of at least 4.5:1 against both your light and dark backgrounds. #6B7280 (Tailwind gray-500) is a safe middle ground.
Expected. Shopify Checkout only loads fonts from its own hosted library — not the full Google Fonts catalog. Italianno is not in that library. Pick the closest available alternative in the Checkout font picker — Pinyon Script, Allura, or Sacramento are the closest matches.The mismatch only affects Checkout. Your storefront keeps using Italianno.
Usually caused by inconsistent option values across products — “S”, “Small”, and “S ” (with trailing space) become three filters instead of one.Fix: open Products → bulk-edit by tag → standardize option values. The Search & Discovery filter index updates within a few minutes.
The first query of a session hits Shopify’s storefront API and primes the CDN cache. Subsequent queries return from cache and feel instant.If first-query latency is consistently bad: check that you’re not running on a region without a nearby Shopify edge. Most stores serve from the same edge as their primary market — if you’ve recently changed currency markets, the cache may need a few hours to warm.
A duplicate slide block. Open the Hero section in the Theme Editor and look for two slides with the same video file. Delete or hide one.Also check: a Custom Liquid block somewhere on the homepage that embeds the same video. Use the Network panel filtered to Media to identify which request is the duplicate.
Apple Wallet passes for Shopify gift cards require Shopify POS to be set up for the store. They’re generated server-side at purchase and aren’t a theme feature. Check Settings → Apps and sales channels → Point of Sale.
The Shopify code editor lints as you type, but it doesn’t block you from saving syntactically valid Liquid that references undefined variables.Fix: re-read the error. The message tells you the line number and the missing variable. Common cases:
  • undefined variable settings.X — you renamed a setting in settings_schema.json but the section still references the old ID
  • undefined variable section.settings.X — same, at the section level
  • unexpected token — usually a missing endif or endfor
If you can’t find it, revert the file and re-apply your change in smaller increments.
A locale key referenced in Liquid that doesn’t exist in locales/en.default.json. The Theme Editor surfaces this as a yellow warning; the storefront renders the key path verbatim.Fix: open locales/en.default.json, find the parent object, add the missing key. Save. The warning clears on next reload.
Voyager swaps gallery images when a variant is selected — but only if each variant has at least one image assigned in Products → [product] → Variants.Fix: open the product in the admin → scroll to the Variants table → click each variant → upload or pick an image. The gallery now swaps on the storefront.
Voyager’s newsletter form posts to Shopify’s customer-creation endpoint with a marketing_opt_in flag. If submissions silently fail:
  1. Customer notifications. Check Settings → Notifications → confirm “Customer welcome” and “Customer account invite” are enabled.
  2. Spam filter. Test with a clean email address.
  3. reCAPTCHA. If you’ve enabled Shopify’s bot protection, very fast submissions may be blocked. Try filling the form slowly.
If visiting /404 returns a generic Shopify 404 instead of Voyager’s branded one, you’re missing the template.Fix: confirm templates/404.json and sections/main-404.liquid both exist. The JSON template references the section; if either is missing, Shopify falls back to the platform default.
The offer popup is gated by sessionStorage. Closing the browser tab — not just navigating away — resets the gate.If it appears on every page load within the same tab, the storage key is being cleared by an extension or by aggressive privacy mode. Test in normal browsing.To disable the popup entirely: Theme Editor → Offer popup section → uncheck Enable.
The cart drawer renders via Section Rendering API on every cart change. If prices stay stale:
  1. Check the Network tab — is /cart/change.js returning the updated line items?
  2. Check that the section ID in the AJAX call matches sections/cart-drawer.liquid. If you’ve renamed the file, update the reference in assets/theme.js.
The button corner radius is a global CSS variable. Some sections — typically the hero and the bespoke CTA card — override it for visual contrast. This is intentional.If a specific button outside those sections isn’t honoring the global radius, check that it’s using the .btn class (or one of its modifiers) rather than a hand-rolled <a> styled inline.
The header cart count reads from cart.item_count in Liquid and refreshes via the Section Rendering API after every add. If it’s stuck at zero:
  1. Reload the page — confirms whether the count is wrong client-side or server-side.
  2. Check the JS console for errors from theme.js — a thrown exception can short-circuit the count refresh.
  3. Cookies blocked? Shopify’s cart cookie is required. If a privacy extension is stripping it, the cart resets on every request.

Still stuck?

Support and changelog

Reach the studio. Response in 1–2 business days.

FAQ

The longer list of questions, including ones that aren’t strictly bugs.