VPAT® 2.5 Framework · First Edition · WCAG 2.1 Level A & AA

Swym Wishlist Plus
Accessibility Conformance Report

Shopify · Feature Conformance Report · April 2026

Report Date 08 April 2026
Standard WCAG 2.1 Level AA
Install Base ~50,000 Merchants Globally
Evaluation Automated + Manual (Keyboard & VoiceOver)
SECTION 01

Executive Summary

Swym Wishlist Plus is adopted feature-by-feature by merchants. Accessibility conformance is reported per feature and per implementation variant. The Current implementation (Shopify Theme App Extensions / Control Centre) is fully tested. The Legacy implementation (JS-rendered storefront layer) is under structured remediation with a published roadmap.

Extensions / Control Centre
Supports
17 blocks — automated + manual tested
Legacy / Old UI — Infrastructure
Partially Supports
Common/modules tested; feature-level Q2 2026
End-of-Support Variants
Not Evaluated
Migration path published
SECTION 02

How to Read This Report

Conformance is reported per feature and per implementation variant.

Current implementation = modern Shopify Theme App Extension layer (Control Centre), fully tested. Legacy implementation = earlier JS-rendered layer, infrastructure tested, feature-level testing Q2 2026. Reaching End of Support = variant receiving no further updates; migration guide available.

Items tagged ASSUMED are inferred from code analysis pending manual confirmation — see the Assumption Register (Section 06).

SECTION 03

Feature Conformance Matrix

Locate the feature(s) you use and identify which implementation variant you are on. Legacy implementation usage percentages are drawn from active merchant data (February 2026).

Feature Current Variant Status Legacy Variant Status Notes
Wishlist — Core
Wishlist Button (PDP)
Add-to-wishlist CTA on product pages
App Block Button Supports Legacy Button (~46%) Reaching EOS Migration campaign active
Wishlist Popup / Modal
Multi-list management panel
Control Centre Panel (~9%) Supports Legacy Modal (~91%) Q2 2026
Add-to-Wishlist Popup
Popup after adding an item
Control Centre (~39%) Supports Legacy Popup (~61%) Q2 2026
Wishlist Page
Dedicated wishlist page
Control Centre (~41%) Supports Legacy Page (~59%) Q2 2026
Share Wishlist
Share via link
— None yet Not Available Legacy Modal (100%) Q2 2026 No modern alt — higher priority
Auto Wishlist Popup
Automated prompts
App Embed + Metafields (100%) Supports N/A Single variant
Collections
Collections Button
Add-to-wishlist on collection pages
App Embed / Advanced (~68%) Supports Custom Render (~32%) Reaching EOS
Launcher
Wishlist Launcher
Floating or header entry point
Floating / Advanced (~89%) Supports Script Tag (~11%) Reaching EOS Deprecation Q2 2026
Advanced Header
Wishlist in storefront header
Extensions (~99.8%) Supports Custom Header (11 merchants) End of Support Forced migration
Save For Later
SFL Page
Dedicated SFL page
Control Centre Block (~69%) Supports Legacy Page (~31%) Q2–Q3 2026
SFL Popup
SFL panel / popup
Control Centre (~44%) Supports Legacy Popup (~56%) Q2 2026
Shopper Engagement & Notifications
Push Notifications
Shopper toast notifications
Extensions Supports N/A Identified issue resolved Jan 2026
Wishlist Nudges
Contextual storefront prompts
Extensions Supports N/A
Tooltip / Smallflower
Inline contextual menu
Extensions Supports N/A Identified issue resolved Feb 2026
Customer Account Surfaces
Account — Wishlist Data
Items, orders, saved carts, back-in-stock
Engage My Account (100%) Supports N/A
Account — Discovery
You May Like, Recently Viewed
Engage My Account (100%) Supports N/A
Variant Selection
Variant Selector
Product variant selection in wishlist flows
Extensions Built-in (~5%) Supports Custom (~95%) Partially Supports ASM-005 — Q2 manual testing
Side Drawer
Wishlist Side Drawer
Slide-in wishlist panel
Control Centre (100%) Supports N/A Single variant only
SECTION 04

WCAG 2.1 Criteria Assessment — Current Implementation

Maps the Current implementation (Extensions / Control Centre) against individual WCAG 2.1 success criteria. For procurement teams and auditors requiring criteria-level detail.

Level A Criteria

CriteriaConformanceRemarks
1.1.1 Non-text Content Supports All 68 decorative SVGs confirmed aria-hidden="true" focusable="false" applied across assets/ and snippets/. All 10 image alt instances fixed (alt="" for decorative, descriptive alt for meaningful). Toast notification product images confirmed correctly using alt="" — product title present as adjacent text. Verified 02 April 2026.
1.3.1 Info and Relationships Partially Supports Modal/popup containers missing role="dialog" in current scan. P0 fix in progress. Core semantic structure of wishlist features is correct.
1.3.2 Meaningful Sequence Supports Reading order follows DOM order throughout tested blocks. No sequence errors identified.
1.4.1 Use of Color Supports No information conveyed via colour alone detected.
2.1.1 Keyboard Partially Supports Core wishlist add/remove, PDP button, and launcher are keyboard-accessible. Some interactive elements in secondary flows lack keyboard handlers. P0 remediation in progress.
2.1.2 No Keyboard Trap Supports No keyboard trap patterns detected in static analysis or manual testing.
2.4.3 Focus Order Supports Focus trap confirmed implemented in storefront-layout-components.js (trapFocus method, lines 1243–1313, 1480–1527). Intercepts Tab/Shift-Tab, wraps focus between first and last focusable element, registered on open() and removed on close(). ASM-001 closed.
3.1.1 Language of Page Supports HTML lang attributes present across all tested blocks.
4.1.2 Name, Role, Value Partially Supports Modal ARIA roles P0 fix in progress. Two identified structural issues — nested button conflict and ARIA menu role mismatch — both resolved Feb 2026. New role="button" elements (delete icons, close buttons, thumb feedback) confirmed keyboard-accessible with descriptive aria-label attributes. Focus state confirmed on Dawn theme (02 April 2026). Playwright/axe CI suite merged to tests/accessibility/ for ongoing WCAG 2.1 detection.

Level AA Criteria

CriteriaConformanceRemarks
1.4.3 Contrast (Minimum) Partially Supports Swym default notification colours confirmed passing: Info (#121F36 on white), Success (#155724 on #d4edda), Error (#721c24 on #f8d7da) — all exceed 4.5:1. Merchant CSS variable overrides are outside Swym's control; merchant-theme carve-out applies. ASM-003 partially closed.
1.4.4 Resize Text Supports Relative CSS units used throughout, supporting 200% text resize.
1.4.10 Reflow Supports Responsive CSS with media queries. No fixed-width layouts causing horizontal scroll at 320px.
2.4.7 Focus Visible Supports No outline: 0 !important found in Swym's own extension CSS. Header icon confirmed with explicit :focus-visible style. New role="button" elements (Close X in Wishlist drawer, Variant Selector icons) confirmed receiving keyboard focus with visible focus state (border thickening) on Dawn theme — no custom CSS required. ASM-002 closed. Confirmed 02 April 2026.
3.2.3 Consistent Navigation Supports Navigation components shared across extensions and render consistently.
4.1.3 Status Messages Supports Toast notifications use role="status". Wishlist confirmation announcements verified with VoiceOver.
SECTION 05

Remediation & Testing Roadmap

This roadmap is a published commitment, updated as milestones are completed.

Done
Structural Issues Resolved
Nested button conflict + ARIA menu role mismatch — both resolved.
02 Apr 2026
P0 Code Fixes + 1.1.1 Sweep — CLOSED
SVG aria-hidden (68 instances) closed. Image alt (10 instances) closed. role="button" keyboard accessibility (10 instances) closed, focus state confirmed on Dawn. Playwright/axe CI suite merged. Modal role="dialog" and keyboard handlers in progress.
Apr–Jun 2026
(Q2)
Legacy P1 Feature Testing
WishlistModal (91%), AddWishlistModal (61%), ShareWishlistModal (100%), SFLPopup (56%), WishlistPage (59%), Variant Selector Custom (95%)
Jul–Sep 2026
(Q3)
VPAT v2.0 Publication
All Q2 results published. All Assumed tags replaced with direct evidence. Legacy PDP Button migration progress reported.
2027
Full Conformance Target
80%+ merchant adoption of Current implementation. Legacy variants retired or fully remediated. Continuous CI/CD accessibility gate.
SECTION 06

Assumption Register

Every item tagged ASSUMED in this document is recorded here. Entries are closed with direct evidence as testing progresses.

ASM-001 Modal Focus Containment (2.4.3) CLOSED
storefront-layout-components.js has a fully implemented trapFocus method (lines 1243–1313, 1480–1527). Queries all focusable elements, intercepts Tab/Shift-Tab, wraps focus between first and last element. Listener registered on open() and removed on close(). WCAG 2.4.3 updated to Supports. Confirmed 02 April 2026.
ASM-002 Focus Ring Suppression (2.4.7) CLOSED
No outline: 0 !important found in Swym's own extension CSS — rule originates from merchant theme (e.g. Dawn). Header icon now has explicit :focus-visible style confirmed. Swym-controlled surfaces clean. New role="button" elements confirmed focus-visible on Dawn theme. WCAG 2.4.7 updated to Supports. Confirmed 02 April 2026.
ASM-003 Toast Colour Contrast (1.4.3) PARTIALLY OPEN
Swym default notification colours confirmed passing 4.5:1: Info (#121F36 bg), Success (#155724 on #d4edda), Error (#721c24 on #f8d7da). The white-on-sky-blue scenario assumed in the original register does not exist in Swym defaults. Merchant CSS variable overrides remain a live risk — merchant-theme carve-out applies. No further action required on Swym-controlled defaults.
ASM-004 SVG Icon Announcements (1.1.1) CLOSED
swymHeaderIcon.liquid confirmed: aria-hidden="true" focusable="false" on SVG; accessible name provided by aria-label="Wishlist" on parent <a> element. Screen readers announce link label correctly, ignoring decorative SVG. Same pattern confirmed in storefront-layout-components.js. All 68 SVGs and 10 img-alt instances now fixed across extensions layer. Confirmed 02 April 2026.
ASM-005 Variant Selector Keyboard (2.1.1) OPEN — REFRAMED
advanced-pdp-button.js has a keydown listener (line 593) for the consent popup — confirmed keyboard-accessible. No div-based variant dropdown found in Swym extension code. Custom variant selectors are merchant-theme-owned, not Swym-delivered. Q2 manual testing will confirm the wishlist action itself remains keyboard-accessible regardless of merchant variant selection method. Reframed from "Swym code gap" to "merchant-theme scope question."
SECTION 07

End-of-Support Variants — Migration Path Available

The variants below are not assessed for WCAG conformance. Migration to the Current implementation is the fastest path to a conformant storefront. Guides available at support@getswym.com.

VariantMerchantsStatusMigration Path
Custom Header 11 (0.2%) End of Support Migrate to Header Launcher (Extensions) — Swym support team engaged directly.
Script Tag Launcher 432 (11%) Deprecating Q2 Migrate to Floating or Advanced Launcher. Deprecation notice Q2 2026.
Legacy PDP Button 6,459 (46%) Migration Active Migrate to App Block Button (Extensions). Active migration campaign underway; WCAG testing in parallel per Q2 roadmap.
Custom PDP Button 1,168 (8%) Not Evaluated Merchant-custom implementations. Merchants encouraged to migrate to App Block Button.
SFS Qty (Old UI) 3 (<0.01%) Not Evaluated Negligible usage. Document-only record.
SECTION 08

Legal Notice & Scope Limitations