Skip to Content
DocsChangelog

Changelog

What shipped when. The list below covers Mercer’s pre-1.0 development and 1.0 release. Post-1.0 changes append to the top of this list as they ship.

The phase numbers refer to Mercer’s internal development sprints. They’re useful for tracing context but don’t carry any meaning to end users.


Pending — 1.0.1

In-flight items targeted for the first patch release after public launch. Subject to change.

  • Phase 8b: benchmark-dataset Lighthouse on Client Transfer Store.
  • BrowserStack cross-browser pass.
  • mercertheme.com docs site live.

1.0.0 — 2026-05-12

Initial Theme Store release.

A mobile-first, conversion-tuned theme for premium DTC merchants — five distinct industry presets, native Shopify swatches, font_picker compliance, and the full Online Store 2.0 section / template surface area.

Highlights

Five designed presets

Each preset is a designed end-to-end look — palette, type pair, radius language, signature hero. Switch presets non-destructively in the editor; content is preserved.

  • Mercer — editorial fashion / beauty default. Self-hosted Fraunces + Inter via Shopify’s font library, monochrome palette with semantic accents, refined pill buttons.
  • Warm Craft — ceramics, pantry, slow goods. Lora + Inter, terracotta accent, soft pill buttons.
  • Bold Pop — DTC beauty and lifestyle. Archivo + Inter, vivid orange accent on cream, generous radius.
  • Quiet Luxe — jewelry and fragrance. Cormorant + Work Sans, whisper-warm palette, refined hairlines, spacious type density.
  • Tech Forward — electronics and accessories — dark by design. Space Grotesk + Inter, neon accent on near-black, compact type density.

Templates and sections

Full Online Store 2.0 coverage of the required Theme Store template formats: product, collection, list-collections, blog, article, page, page.contact, password, gift_card, cart, search, 404, customer login / register / activate-account / reset-password / account / order / addresses, plus header / footer / password layouts.

The section library bundles:

  • Per-preset signature sections (6) — one editorial-cover hero per preset, plus a secondary H-scroller for Bold Pop.
  • Featured product — full PDP-grade single-product section with rich media (image / video / external_video / 3D model), variant picker, selling plans, gift-card recipient flow, payment_button, Shop Pay Installments banner, and accelerated checkout.
  • Complementary products — pre-installed on the default PDP via Shopify’s Recommendations API, alongside the algorithmic Related products section.
  • Predictive search with type-ahead product cards.
  • Pickup availability on PDP.
  • Multi-currency / multi-language switchers in three patterns (header dropdown, full modal, footer-only) plus a first-visit country gate.
  • B2B catalog selector and PDP overlays (quantity rules + tier pricing) gated cleanly so B2C requests render zero extra markup.
  • Multi-level (3-deep) mega menu with image columns.
  • Custom Liquid section + Custom Liquid blocks in every section that supports app blocks.

Storefront chrome

  • Dismissible announcement bar with sessionStorage-keyed per- message dismissal, designMode gate, and prefers-reduced-motion respect.
  • Back-to-top button rendered from footer; suppressed on PDP to avoid sticky-CTA overlap.
  • Mobile accordion footer columns via <details open> with desktop summary affordance neutralized.
  • Payment icons footer block using shop.enabled_payment_types
    • payment_type_svg_tag, opt-in.
  • <shopify-account> web component in desktop header for customer-accounts mode.

Performance

Lighthouse mobile median against the live theme on Slow-4G throttling:

PagePerformanceLCP
Home991.9 s
Collection list942.0 s
PDP932.7 s

CLS measured at 0 across all five presets × three page types.

Accessibility

WCAG 2.1 AA verified. 100 / 98 / 96 perfect-by-page accessibility scores depending on cart drawer / modal context. Native form labels with explicit id + for everywhere a customer types or selects; focus traps in dialogs; SR-only skip links; universal prefers-reduced-motion respect.

Theme Store compliance

  • font_picker + font_modify per Shopify font library; no self-hosted WOFF2.
  • Native option_value.swatch.color and .swatch.image for product swatches.
  • 8 global type: color settings with foreground / background pairing (4 pairs).
  • JSON-LD product structured data for Google Rich Results.
  • OpenGraph + Twitter Card meta on every storefront page.
  • Bare {{ powered_by_link }} per the verbatim-render rule.
  • All schema strings via t: keys (700+ migrated; American English, sentence-case section names, no ampersands).
  • /listings folder with one demo per non-default preset.
  • Block-based PDP architecture per the Dawn pattern: title, price, variant_picker, buy_buttons, description, trust_row, share_row, text accordion, plus @app and Custom Liquid blocks anywhere @app is supported.
  • Shop Pay Installments via the payment_terms filter; cart accelerated checkout via content_for_additional_checkout_buttons.

Phase notes (development history)

The pre-1.0 milestones, organized by the internal phases. Useful for trace context; merchants can ignore.

Phase 9 — Submission polish (2026-05-07 → 12)

Pre-submission compliance + chrome enhancements.

  • Storefront chrome: dismissible announcement bar, footer back-to-top, mobile accordion footer columns, payment icons block, <shopify-account> adoption in header.
  • Theme Store §14 compliance pass: branded defaults scrubbed (42 sites); eyebrow renamed to caption; numbered “A/B/C” prefixes dropped; “View-all label” → “View-all button label”.
  • Customer-account migration: undocumented cancel_account_activation form replaced with documented activate_customer_password + decline button.
  • XSS hardening: B2B defensive escape pass (10 sites); JSON island </ escape; form drop reflection escapes; quick-add controller-scope hardening.
  • Form a11y: explicit id + for pairs (5 sites); novalidate removed from form-drop forms; error output + value repopulation on customer + comment forms.
  • Token system: --focus, --container-max, --nav-bg defined; interactive boundaries switched to --line-strong per §16 contrast.
  • Settings wiring: logo_width_*, scale_density, button_shape, cart_type wired to token cascades; accounts_mode removed (Shopify-native).
  • Wishlist / save-for-later removed entirely (XSS surface, cohort feature recognized as v1.1+).
  • Provenance comments scrubbed (13 sites) per §2 originality.

Phase 8a — Lighthouse audit (2026-05-07)

  • A11y: pgallery dots — drop tablist role + 24×24 touch target. Lighthouse aria-required-children and target-size audits moved from fail to pass. A11y delta on a sample PDP: 88 → 96.

Phase 7l — Submission polish

  • Borderline §14 polish items closed (favicon spec format, UnusedAssign suppressions, signature-section hardcoded resource strings, gift card / selling-plan quick-add gating).
  • Gate gift cards + selling-plan-required products to PDP (skip quick-add modal — needs full PDP for recipient form / subscription terms).
  • 3rd-level submenu rendering in desktop nav and mega-menu.
  • Centralize Mercer.routes for locale-aware AJAX across 7 sites.
  • Footer default install state to canonical ‘footer’ menu handle.

Phase 7j-7k — Collection / PDP polish

  • Featured-collection card object-position support.
  • Collection card upper-third focal anchor by default.
  • PDP gallery: mobile vertical scroll + zoom-modal dismiss.
  • PDP gallery: allow horizontal swipe on mobile.
  • Swatch hex case block formatting + name→hex fallback.
  • Header desktop nav-link baseline unification.
  • Header dropdown caret to chevron-d (was right-pointing).
  • Wrapper-bound fallback for collection banner image.

Phase 7g-7i — XSS hardening + cart consistency

  • Default-filter sweep extension across 5 files.
  • Cart JS skip-blank parity with Liquid != blank semantics.
  • Drop ARIA menu roles from header dropdown — use disclosure pattern instead.
  • Defense-in-depth XSS escape sweep across 18 files.
  • Unify discount-allocation rendering across 5 cart paths.

Phase 7e-7f — Listings + content seeding

  • Scaffold listings/mercer/ per Theme Store submission spec.
  • Strip hardcoded “Outerwear” copy per multi-vertical positioning.
  • Photography manifest (Task 9a).
  • Materials / care / origin moved from product description to metafields; PDP accordion wired.
  • Footer columns wired to per-column menus.
  • Mercer catalog seeder.

Phase 7c-7d — Gift card + i18n hardening

  • Extract gift card recipient initializer to persistent JS.
  • Desktop multi-level navigation + dynamic mega-menu source.
  • Use Shopify.routes.root for locale-aware Cart Ajax.
  • Extend XSS sweep to indirection + system tokens + attr context.
  • Image_tag fallbacks for remaining wrapper-bound sections.
  • Cart drawer + order line-level discount allocations port.
  • Remove notify-me back-in-stock stub per Theme Store §8 (no app-like features).
  • Align preset slugs + listings folders + strip hardcoded resources.
  • Show variant range on cards even when on sale.

Phase 7a-7b — Order page + cart drawer discounts

  • Use historical line.unit_price not live variant.unit_price on order page.
  • Remove aria-hidden from focusable dot / scroll buttons.
  • PDP mobile-nav selector for sticky ATC + footer offset.
  • 375px viewport contain hero headline and sticky ATC bar.
  • Close predictive search overlay on Escape keydown on the input.
  • Hide mobile bottom nav on tablet / desktop, not just ≥1024 px.

Phase 6e — Real photography + final LH pass

  • 7-preset × 3-page × 3-run Lighthouse sweep against live storefront. 21/21 perf cells ≥86; 21/21 a11y cells ≥95.
  • CLS finding 0.241 on collection page (4/7 presets) — root cause: .js-only <aside> collapsed sidebar grid column. Fix: move .js-only from wrapper to inner <div>; sidebar column reserves its 240 px from first paint. Post-fix CLS: 0.005 worst-of-3 (median 0.000).

Phase 6d — Schema i18n migration

  • Migrate 754 schema strings to t-keys (698 sections + 56 settings_schema). Resolver check: 754/754 resolve.
  • en.default.schema.json: 2436 lines.
  • en.default.json: 399 lines.
  • American English audit + 3 fixes.
  • Sentence-case section names; no ampersands; link_list defaults to main-menu / footer.
  • font_modify N/A confirmed (Mercer self-hosts variable Fraunces + Inter; font_picker settings inert).

Phase 6b — Audit-gap closure

  • Accelerated checkout buttons (content_for_additional_checkout_buttons).
  • Image focal points across all image sections.
  • Social sharing images (page_image meta).
  • Pickup availability section.
  • Rich product media (3D model + video + external_video).
  • Selling plans on PDP (radio group, dynamic price update).
  • Shop Pay Installments banner.
  • Unit pricing (variant.unit_price_measurement + showUnitPrice flag).
  • “Follow on Shop” login_button block on PDP.
  • templates/page.contact.json.
  • Custom Liquid section.

Phase 6a — Gap audit

26 gaps surfaced against the Theme Store requirements. Closed all 24 non-PARTIAL gaps in 6b–6d. Two PARTIAL gaps remain (discount detail on order page + cart drawer; gift-card template polish) — neither submission-blocking.

  • Full-featured featured-product section with form, rich media, app blocks per Theme Store requirement.
  • Complementary products section on default PDP.
  • Wire --surface-text + --line-strong to base CSS for merchant settings.
  • Verbatim {{ powered_by_link }} rendering on password page.
  • Replace “CTA” terminology with “Button label” per Shopify settings standards.
  • Remove incomplete wishlist link from mobile bottom nav (anti-app- like rule).
  • Native collection.featured_image fallback for collection card.
  • Drop orphan show_banner from default collection template.
  • Output collection.image by default.
  • Explicit id + label-for on cart-drawer / selling-plan / newsletter inputs.
  • Custom Liquid block parity in image-with-text, newsletter, main-page.
  • Global type: color settings with foreground + background pairing per Theme Store requirements (4 pairs, 8 settings).

Phase 4 — Cart drawer + B2B

  • B2B catalog badge + company switcher.
  • B2B quantity rules display + qty-stepper data island.
  • B2B tier price table (volume pricing).
  • B2B cart aside.
  • Cart drawer full implementation.
  • Predictive search overlay.
  • Mega menu with image columns.

Phase 3 — Collection + PDP

  • main-collection section + Section Rendering API client.
  • main-list-collections section + collection-card snippet.
  • Eager-load top 4 product images + finer srcset.
  • main-product section + gallery + variant + sticky CTA.
  • Related products + recently viewed sections.
  • Mercer.variant extracted into shared module.
  • Per-cell eager flag + img sizing fixes for collection grid.
  • main-cart section + line / empty snippets + page JS.
  • All 7 customer-account templates + shared shell + form fields.
  • main-search section + article / page result snippets.

Phase 2 — Home page composition + presets

  • Editorial Mono index template composed.
  • Newsletter / testimonials / multi-column / image-with-text / featured-collection / page-numbered collection grid / editorial magazine cover sections.
  • Cart drawer + predictive search + mega-menu overlay scaffolding.
  • Per-preset signature heroes (6 — heritage, warm, luxe, pop color-block, pop H-scroller, tech spec strip).
  • Per-preset alt index templates for warm / pop / luxe / tech / heritage.

Phase 1 — Foundation

  • Repo bootstrap with theme-check + CI workflow.
  • 7-preset CSS token system.
  • OS 2.0 directory tree; layouts; settings; JSON templates.
  • CI Lighthouse wired.
  • Self-hosted Fraunces + Inter; conditional Google Fonts for non- default presets.
  • Base primitives + foundation JS + icon snippet.
  • Header / footer / mobile bottom nav + section groups.

Versioning

Mercer follows semver:

  • Major (1.0 → 2.0): Breaking changes that require merchant re-setup (preset architecture changes, removed sections, etc.).
  • Minor (1.0 → 1.1): New sections / blocks / settings; non- breaking enhancements.
  • Patch (1.0.0 → 1.0.1): Bug fixes; performance work; a11y; no schema changes.

Theme settings, content, and customizations always carry forward across patch and minor versions.